이산치수학 Project4

729 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
729
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

이산치수학 Project4

  1. 1. Project #4:Syntax of language
  2. 2. 조 : D3조장 : 2011 최보은조원 : 2008 고충욱 2009 김시백 2011 안영준 2011 정진아
  3. 3. 차 례1. 프로젝트 설명2. 일 정3. 업무분담4. 소 스5. 회의록1. 프로젝트 설명정점 [vertex]다각형에서 두 개의 변이 만나 하나의 각을 이루는 지점. 그래프에서 모서리로연결된 각 점.모서리 [edge]
  4. 4. ①컴퓨터 그래픽스(CG)에서 두 평면의 교차점이 되는 직선 부분. ②그래프에서두 노드 사이의 연결선. ③신호 파형의 한쪽 가장자리. 즉, 신호가 올라가거나내려가는 변이 부분이다. ④천공 카드의 가장자리. ⑤회로 기판의 한쪽 끝.다중그래프[multigraph]임의의 정점 쌍에 대하여 여러 개의 간선이 존재하는 그래프.출처 : 네이버 지식사전위의 그림에서 보듯이 노드 ‘가’와 ‘바’를 연결하는 간선의 수는 3 이고,노드 ‘마’와 ‘라’를 연결하는 간선의 수는 2 이다. 즉, 위의 그래프와같이 간선을 여러 개 포함하는 그래프를 다중 그래프로 한다.출처:http://blog.naver.com/songsmir?Redirect=Log&logNo=100117393149오일러 경로[Eulerian path]그래프 이론에서 오일러 경로(Euler path, Eulerian path)는 그래프의 모든 변을 단한 번씩만 통과하는 경로를 뜻한다. 1736 년 레온하르트 오일러가쾨니히스베르크의 다리 문제를 푼 것에서 유래되었다. 흔히 한붓그리기문제라고도 한다.그 중에서 같은 꼭지점에서 시작해서 끝나는 오일러 경로를 오일러 회로(Eulercircuit, Eulerian circuit)라고 한다. 오일러 회로를 지닌 무향그래프를 오일러그래프라고 한다. 오일러는 그래프가 오일러 회로를 가질 필요충분조건은*그 그래프가 연결된 그래프이고,
  5. 5. *모든 꼭지점의 차수가 짝수이어야 한다.라는 것을 알아냈다. 오일러 회로가 아닌 오일러 경로(즉, 시작 꼭짓점과 끝꼭짓점이 다른 경로)가 있을 필요충분조건은*정확히 두 개의 꼭지점만이 홀수의 차수를 가지고*그 그래프가 연결되어 있다.라는 것이다. 이와 같은 조건은 다중 그래프에서도 유효하다.그리고 홀수차수가 2 개인 그래프는 한 홀수점에서 출발하여 다른 홀수점이종착점이 되도록 그리면 된다.출처 : 위키백과트리의 패스 길이[path of length k]트리를 사용하는 컴퓨터 알고리즘에서는 알고리즘 수행 시간과 밀접한 관계가있으므로 매우 중요한 사항이며, 근 노드에서 각 노드에 이르는 거리의 합계를말한다. 다음과 같이 노드의 개수가 n 인 트리의 패스 길이를 나타낸다.여기서 li 는 근 노드에서 i 번째 노드까지의 길이를 나타낸다.출처 : 네이버 지식사전주기 [cycle]①맨 나중의 명령어가 어떤 조건을 만족할 때까지 자기 자신을 반복하거나수정하는 일련의 명령어 집합. 관리 명령어가 다른 생산적인 명령어를수정하거나 반복 횟수를 통제하는 반면, 루프 내에서의 생산적인 명령어는 대개
  6. 6. 연산자를 조작하며, 루프 내에는 끝나는 조건이 여러 개 있어도 된다. 루프는일직선으로 코딩을 해도 같은 효과를 얻을 수 있지만, 생산적인 명령어와 관리명령어는 매번 반복될 때마다 써야 한다.②주기 방식으로 각 단어 끝에서 떨어져 나간 숫자를 반대편으로 다시 돌아오게하는 비산술적인 자리 이동.③어떤 공간 또는 시간 내에서 정기적으로 같은 순서로 반복되는 현상. 예를들면, 반복되는 연산에서 완전하게 한 번 계산하는 데 요구되는 시간이다.④산술적인 계산이나 사이클 계수기, B-박스, 목록 레지스터 등의 하드웨어기구로서 미리 정해진 숫자만큼 연산을 반복하는 것.⑤선분이 중복되지 않고 처음 정점과 마지막 정점이 같은 그래프의 경로.출처 : 네이버 지식사전연결 그래프[A graph is connected]그래프 G 에서 그래프에 속한 모든 정점이 연결되어있어서 Vi, Vj 의 모든 쌍에 대하여 경로가 존재하는그래프그림의 G1, G2, G3 그래프는 모두 연결 그래프이다.출처 : http://blog.naver.com/aram96?Redirect=Log&logNo=20010709825
  7. 7. 해밀턴 회로 [ Hamiltonian circuit ]그래프 G 에서 G 에 있는 모든 정점을 꼭 한번씩만 지나는 회로를 해밀턴회로(Hamilton cycle)이라고 하며, 이러한 해밀턴 회로를 가지는 그래프를 해밀턴그래프(Hamilton graph)라고 한다. 또 그래프 G 에 있는 모든 정점을 꼭 한번씩만지나면서 출발점과 도착점이 같지 않을 경우에 이를 해밀턴 경로(Hamiltonpath)라고 한다.※ 해밀턴 회로가 존재하는지를 판별하는 것은 쉽지 않다. 다만, n 개의 정점을가진 그래프 G 가 있을 때, 각 정점의 차수가 n/2 이상이면 G 는 해밀턴 회로를갖는다는 것이다. 하지만 정점의 차수가 n/2 보다 작은 경우에도 해밀턴 회로를갖는 그래프도 있다.※ 해밀턴 회로와 연관된 문제⇒ 외판원이 각 도시를 방문해야 할 경우, 각도시를 꼭 한번씩만 방문함으로써 시간과 돈을 절약할 수 있을 것이다. 이것이유명한 외판원 방문 문제이다출처 :http://cafe.daum.net/Graycode/2q16/41?docid=15jWk|2q16|41|20060526165007&q=Hamiltonian%20circuit트리 [ tree ]
  8. 8. 트리 회로. 나무가 하나의 뿌리(root)에서 줄기(trunk)가 나와 가지(branch)로나누어지는 것처럼, 어떤 하나의 집합(레코드나 디렉토리 등)으로부터 하위레벨(lower level)로 가지가 나오는 집합 관계를 갖는 계층 구조(hierarchicstructure)를 말한다. 부분적으로도 결코 루트를 형성하는 경우는 없다. 따라서처음에 가지가 나오기 시작되고 있는 집합으로부터 차례대로 「가지」를더듬어가면 목적의 집합을 찾을 수 있다. 정보 처리 분야에는 이 같은 트리구조(tree structure)를 가진 개념이 많이 있고, 이 트리 구조에는 순서트리(ordered tree)나 2 진 트리(binary tree) 등이 있다.스패닝 트리 [ spanning tree ]연결된, 비방향성 그래프 G 에서 순환 경로를 제거하면서 연결된 부분 그래프가되도록 이음선을 제거하면 스패닝 트리가 된다. 따라서 스패닝 트리는 G 안에있는 모든 정점을 다 포함하면서 트리가 되는 연결된 부분 그래프이다.최소 스패닝 트리 [ minimum spanning tree ]한 그래프의 스패닝 트리들 중에서 가중값의 합이 가장 작은 것.2 진 트리 [ binary tree ]리스트 구조의 하나이며, 최상의 루트 노드로부터 서브트리 방향에 도달할 때, 각루트로부터 나와 있는 노드가 겨우 두 개인 모양의 트리. 데이터 집합을 기억영역상에 표현한 경우 다음에 계속되는 데이터 항목으로의 포인터가 겨우 두개인 모양의 구조를 가리킨다.출처 : 네이버 지식사전
  9. 9. 2. 일 정 일 정 내 용 팀의 팀장을 정하고,‘12. 4. 25 프로젝트 진행방향 토의 후 팀원의 임무분담을 정함.‘12. 5. 1 알고리즘 구상, 소스 구현 및 프로젝트 관련 자료 수집‘12. 5. 9 소스의 문제점 토의 후 해결책 제시‘12. 5. 11 최종보고서 작성 후 검토3. 업무분담 이 름 분 담 내 용 최보은 조장임무 및 자료조사 고충욱 알고리즘 구성 및 자료조사 김시백 보고서작성 및 자료조사
  10. 10. 안영준 알고리즘을 바탕으로 한 소스구성 정진아 알고리즘 구성 및 자료조사4. 소 스#include<stdio.h>int main(){char ip[400][2];//노드의 라인int no[400];//노드라인의 거리char fi[20][2];//입력받은 노드 저장char gu[21];//지금까지 저장한 내용들int x;//노드의 수int y,z;int l=0,m=0,n=0,o,p,q;int b;//지금까지 입력받은 라인수char a;scanf("%d",&x);scanf("%c",&a);for(y=0;y<=400;y++){for(z=0;z<=1;z++){scanf("%c",&ip[y][z]);
  11. 11. }if(ip[y][0]==! && ip[y][1]==E){break;}scanf("%d",&no[y]);if(m==0){m=no[y];fi[0][0]=ip[0][0];fi[0][1]=ip[0][1];}else if(no[y]<m){m=no[y];fi[0][0]=ip[0][0];fi[0][1]=ip[0][1];}scanf("%c",&a);n++;}gu[0]=fi[0][0];//제일 작은 노드값 1gu[1]=fi[0][1];//제일 작은 노드값 2l=1;//gu[]받은수
  12. 12. b=1;//지금까지 입력받은 라인수for(;;){//조건이 맞을때 까지 무한반복m=0;for(y=0;y<n;y++){q=0;for(z=0;z<=1;z++){for(o=0;o<=l;o++){//gu[]에 있는값과 같은값이 있는지 비교if(gu[o]==ip[y][z]){q++;}}}if(q==1){//1 개 있을때 실행if(m==0){m=no[y];fi[b][0]=ip[y][0];fi[b][1]=ip[y][1];
  13. 13. }else if(no[y]<m){m=no[y];fi[b][0]=ip[y][0];fi[b][1]=ip[y][1];}}}for(y=0;y<=1;y++){q=0;for(z=0;z<=l;z++){if(gu[z]==fi[b][y]){q++;}}if(q==0){gu[l+1]=fi[b][y];}}
  14. 14. b++;l++;if(b==x){break;}}printf("n");for(y=0;y<=b-1;y++){for(z=0;z<=1;z++){printf("%c",fi[y][z]);}if(y!=b-1)printf(", ");}scanf("%d",&x);}※입력형식: 처음 노드의 수를 입력하고그다음 AB5 이런식으로 문자와 숫자사이에 띄어쓰기 없이 입력합니다.마지막까지 입력을 완료하였을 경우 !E 치고 엔터를 누르면 결과가 나옵니다.노드의 수보다 문자는 하나 더 많이 존재해야 합니다.
  15. 15. (ex)6 -> A,B,C,D,E,F,G 4-> A,B,C,D,E결과를 다보고 마칠때는 아무 숫자나 누르고 엔터를 치면 종료됩니다.5. 회의록<1 차> 회의일시 2012 년 05 월 01 일 조 D3 작성자 11 최보은 참석자 08 고충욱 09 김시백 11 안영준 11 정진아 1. 프로젝트 토의 2. 기초 알고리즘 토의 회의안건 3. 업무분담 4. 일정 계획 회의내용 내 용 비 고
  16. 16. 1. 프로젝트 ‘상호참조’에 대해 설명 받음 -트리의 기본 구성과 장점 -트리의 종류 2. 기초 알고리즘 토의 -MST 에 대해 공부 및 조원 토의 -어떻게 가장 작은 값을 찾고, -정점을 다 지날지 회의 3. 업무분담(대체적으로) - 조장 : 최보은 자료조사 : 고충욱, 정진아 소스코딩 : 안영준 보고서 : 김시백 4. 일정계획 - MT 갔다 온 다음부터 자료조사 완료시키기. -각자 해결방안 모색하기<2 차>회의일시 2012 년 05 월 09 일 조 D3 작성자 11 최보은 참석자 08 고충욱 09 김시백 11 안영준 11 정진아
  17. 17. 1. 문제점 분석 2. 알고리즘 회의회의안건 3. 자료회의 4. 최종보고서 작성 내 용 비 고 1. 문제점 파악 - 노드의 수에 따라 출력결과가 몇 개 나오는지 예상 못함. : 조사 결과 노드의수 -1 만큼 결과 나옴. - ex) AB 5 라고 입력받는 것을 따로 배열에 넣을지 2 차원 배열에 넣을지 토의 : 우선 쉬운 방향으로 접근하고 그 뒤 2 차원 배열 생각.회의내용 2. 알고리즘 토의 - 입력 형식 토의 - 어떻게 결과를 나오게 할지 토의 3. 자료 회의 - 여러 용어들에 대해 숙지. - 오일러경로, 해밀턴 회로 차이점 회의 4. 최종 보고서 작성

×