Project #5:통신망에서 길 찾기                   조 : D3              조장 : 2011 정진아
조원 : 2008 고충욱                 2009 김시백                 2011 안영준                 2011 최보은                차 례1. 프로젝트 설명2. 일 ...
4. 소 스5. 회의록1. 프로젝트 설명directed graph(방향그래프)한   쌍의   노드간에    방향성을   갖는   에지로   연결된   그래프를   소위   방향성그래프(directed graph: Dig...
갖는 그래프이다. 이때 (v1, v2)에서 v1 은 v2 의 꼬리(tail)라하고, v2 는 v1 의머리(head)라 한다.                                                     ...
adjacency matrix(인접 행렬)인접 행렬은 정점의 개수가 N 일 때, 정점 i 와 정점 j 사이의 가중치를  N×N 의2 차원행렬 M 의 (i,j)에 저장한다.그래프의 각 노드에 일련번호를 부여하고, 일련번...
1   1 0 12   0 0 0[그림-5.7] 인접행렬    //인접행렬을 통한 그래프 생성과 출력    #include <iostream.h>    const int max=3;    class Graph    { ...
for (int j=0; j<max; j++)   { if (edge[i][j]==1)   cout<<"("<<i<<", "<<j<<") ";   }   }   };   void main()   { Graph *obj=...
한편 비방향성 그래프인 경우에는 행렬의 대각선을 중심으로 에지의 관계가대칭을 이루기 때문에 에지가 중복해서 표기된다. 이에 따라 그래프를 구현할 때,기억장소를 절약하려면 이미 배열에서 다루었던 삼각행렬(triangula...
탐색트리에서 경로를 정하는 노드의 키 값처럼 그래프를 순행할 때 경로선택의기준을 제공하는 것으로 에지의 특성을 나타내는 가중치를 가질 수 있는데 보통그래프를 구성하는 에지의 가중치는 복합적인 에지의 속성 값으로 해석된다...
if (n!=0)     { temp->nr=j;     temp->weight=n;     .............     }     //그래프의 에지를 (a, w, b)의 형태로 출력     public void d...
단일 시작점에서 최단 경로 구하기 문제는 임의의 시작점 1 개를 정하고 다른노드들 사이의 최단 경로를 구하는 경우에 사용 된다.그림을 보면 알듯이 임의의 노드 ‘A’를 먼저 선택 한다. 임의의 노드가 정해졌다면 임의의 ...
일 정                            내 용                     프로젝트 진행방향 토의 후 팀원의 임무분담을 정함. ‘12. 5. 16                     알고리즘 구상...
int main(){int node;//처음 입력받는 노드수char n[400][2];//입력받을 노드char no[20];//받는 노드의 종류int nod[20][2];//각 노드가 입력받은 횟수int x,y,z;//...
}}if(v==0){no[a]=n[x][y];nod[a][0]=0;nod[a][1]=0;a++;}}scanf("%c",&w);if(w==n){break;}}for(x=0;x<b;x++){for(y=0;y<2;y++){f...
for(z=0;z<node;z++){printf("%c %2d %2d ",no[z],nod[z][1],nod[z][0]);if(nod[z][1]==0){printf("source");}if(nod[z][0]==0){pr...
5. 회의록<1 차>회의일시 2012 년 05 월 16 일      조      D3   작성자   11 정진아 참석자    08 고충욱 09 김시백 11 안영준 11 최보은        1. 업무분담회의안건 2. 알고...
1. 업무분담        : 조장 : 정진아        자료조사 : 고충욱, 최보은        소스코딩 : 안영준        보고서 작성 : 김시백        2. 알고리즘 회의        - 입력 형식 토의...
1. 알고리즘 회의회의안건 2. 자료회의     3. 최종보고서 작성                       내 용                    비 고     1. 알고리즘 회의     : 문자들을 입력받고 n 을...
Upcoming SlideShare
Loading in...5
×

이산치수학 Project5

222

Published on

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

  • Be the first to like this

No Downloads
Views
Total Views
222
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

이산치수학 Project5

  1. 1. Project #5:통신망에서 길 찾기 조 : D3 조장 : 2011 정진아
  2. 2. 조원 : 2008 고충욱 2009 김시백 2011 안영준 2011 최보은 차 례1. 프로젝트 설명2. 일 정3. 업무분담
  3. 3. 4. 소 스5. 회의록1. 프로젝트 설명directed graph(방향그래프)한 쌍의 노드간에 방향성을 갖는 에지로 연결된 그래프를 소위 방향성그래프(directed graph: Digraph)라 하는데, 이는 모든 에지에 대하여 한 쌍의노드가 정돈되어 있는 그래프이다. 즉 v1, v2∈V ⇒ (v1, v2)≠(v2, v1)의 특성을
  4. 4. 갖는 그래프이다. 이때 (v1, v2)에서 v1 은 v2 의 꼬리(tail)라하고, v2 는 v1 의머리(head)라 한다. <그림-1> 그래프의 유형출처 : rohhy.kangwon.ac.kr/attachment/1288774889.hwpprecedes / antecedent(선조)트리(tree)의 특정한 노드에 대해 관계가 있는 노드들을 나타내는 용어. 여기서특정 노드의 선조는 트리의 근 노드에서 해당 노드까지의 경로 상에 있는 모든노드를 말한다.출처 : http://terms.naver.com/entry.nhn?docId=815129indegree외부에서 내부로 들어오는 간선들의 수outdegree내부에서 외부로 들어오는 간선들의 수source내부에서 외부로 나가는 간선들만 존재sink외부에서 내부로 들어오는 간선들만 존재
  5. 5. adjacency matrix(인접 행렬)인접 행렬은 정점의 개수가 N 일 때, 정점 i 와 정점 j 사이의 가중치를  N×N 의2 차원행렬 M 의 (i,j)에 저장한다.그래프의 각 노드에 일련번호를 부여하고, 일련번호에 의한 노드들을 그래프의노드집합으로 관찰한다. 그리고 그래프의 에지는 노드의 수에 대한 정방형행렬에서 행과 열이 만나는 원소로 나타냄으로써 그래프를 구현할 수 있다. 이에따라 에지는 정방형 행렬에서 다음과 같이 표기할 수 있다.A(i, j) = 1 : (vi, vj)∈E 의 경우A(i, j) = 0 : (vi, vj)∉E 의 경우이에 대해 인접행렬에 의한 그래프는 다음과 같이 구현한다.class Graph{ int edge[max][max]; // 에지의 집합}예를 들어 그림-5.1 의 방향성 그래프 2)를 인접행렬로 구현하면, 에지는 다음과같이 정방형 행렬로 작성한다. 0 1 20 0 1 0
  6. 6. 1 1 0 12 0 0 0[그림-5.7] 인접행렬 //인접행렬을 통한 그래프 생성과 출력 #include <iostream.h> const int max=3; class Graph { int edge[max][max]; // 에지의 집합 public: void build() { int n; for (int i=0; i<max; i++) for (int j=0; j<max; j++) { cin>>n; edge[i][j]=n; } } //그래프의 에지를 (a, b)의 형태로 출력 void display() { for (int i=0; i<max; i++)
  7. 7. for (int j=0; j<max; j++) { if (edge[i][j]==1) cout<<"("<<i<<", "<<j<<") "; } } }; void main() { Graph *obj=new Graph(); obj->build(); obj->display(); } //입력자료: 0 1 0 1 0 1 0 0 0 //출력결과: (0, 1) (1, 0) (1, 2)인접행렬로 그래프를 구현할 경우 한 노드에 접근하는데 요구되는 시간은 노드의수에 따라 결정된다. 그러나 인접행렬로 구현된 그래프는 접근시간이 짧기때문에 에지가 존재하는지 자주 알 필요가 있을 때 유용하다.인접행렬에 의한 방향성 그래프는 n2 보다 적은 에지를 갖은 경우일지라도에지를 구성하기 위해 n2 에 해당하는 메모리를 필요로 한다. 뿐만 아니라 한노드를 탐색하는데 소요되는 시간은 노드의 수 n 에 관련 O(n2)에 달한다.
  8. 8. 한편 비방향성 그래프인 경우에는 행렬의 대각선을 중심으로 에지의 관계가대칭을 이루기 때문에 에지가 중복해서 표기된다. 이에 따라 그래프를 구현할 때,기억장소를 절약하려면 이미 배열에서 다루었던 삼각행렬(triangular matrix)이나,희소행렬(sparse matrix)을 이용할 수 있다. 이때 만약 비방향성 그래프를삼각행렬로 구현한다면 그래프의 탐색시간은 O(n*(n-1)/2)에 달하게 될 것이다.출처 : http://webedu.ksc.re.kr/graduate_new/data/final_group18.pdfrohhy.kangwon.ac.kr/attachment/1288774889.hwppath(경로) / length(길이)그래프 G 에서 한 쌍의 노드 v0, vn∈V 에서, n≥0 이고, 모든 0≤i≤n 에 대하여 에지(vi, vi+1)∈E 가 존재하면, 일련의 노드(v0, v1, ...., vn)을 v0 에서 vn 에 이르는 n길이(length)의 경로(path)라 한다.예를 들면 그림-1 의 2)에서 (a, b, c)는 길이가 2 인 경로이다. 이러한 경로개념은도로망, 교통망, 통신망 등에서 자주 응용되고 있다.출처 : rohhy.kangwon.ac.kr/attachment/1288774889.hwpreachability matrix(도달행렬)E 에 대한 인접행렬이 A 이고 E*에 대한 인접행렬이 A*일 때 A*은 아래의 식으로계산되며 이를G 에 대한 도달행렬(reachability matrix)이라고 한다. * A출처 : chiwoos.tistory.com/attachment/499a1f051d1269L.pptweighted digraph(가중치그래프)가 간선에 값을 부여한 그래프이고,weight of a path(가중치 그래프 내의 경로의 길이)는 경로 안의 간선의 가중치의합이라는 것이다. edge(간선) 의 가중치를 로 표기한다.
  9. 9. 탐색트리에서 경로를 정하는 노드의 키 값처럼 그래프를 순행할 때 경로선택의기준을 제공하는 것으로 에지의 특성을 나타내는 가중치를 가질 수 있는데 보통그래프를 구성하는 에지의 가중치는 복합적인 에지의 속성 값으로 해석된다.인접 행렬에서 그래프 G=(V, E, W)의 가중치는 다음과 같이 정의한다.A[i, j] = w(vi, vj) : (vi, vj)∈E 의 경우 에지의 특성을 가중치로 두 노드 vi, vj간의 인접관계를 나타낸다.A[i, j] = c : 그 밖의 경우 임의의 값으로 노드간에 관계가 없음을 나타낸다.앞 프로그램 TestGraph2 클래스에 가중치 처리부분을 추가하면 다음과 같다.//인접 리스트를 통한 가중치 그래프 생성과 출력 #include <iostream.h> const int max=3; class Gnode //그래프 노드 { public: int nr; //노드의 번호 int weight; //가중치 Gnode *next; //인접노드에 대한 에지 } class Graph //그래프 연산 { public void build(Gnode *node[]) //그래프 생성 { ............
  10. 10. if (n!=0) { temp->nr=j; temp->weight=n; ............. } //그래프의 에지를 (a, w, b)의 형태로 출력 public void display(Gnode *node[]) { ............. while (pt->next!=NULL) { pt=pt->next; cout<<"("<<i<<", "<<pt->weight<<", "<<pt->nr<<") "; } } } //그래프 입력자료: 0 5 0 6 0 3 0 0 0 //그래프의 출력: (0, 5, 1) (1, 6, 0) (1, 3, 2)출처 : rohhy.kangwon.ac.kr/attachment/1288774889.hwp출처 : http://www.aistudy.com/math/shortest_johnsonbaugh.htmshortest path그래프의 두 정점 간의 경로 중에서 길이가 가장 짧은 경로.[단일 시작점에서 최단 경로 구하기]
  11. 11. 단일 시작점에서 최단 경로 구하기 문제는 임의의 시작점 1 개를 정하고 다른노드들 사이의 최단 경로를 구하는 경우에 사용 된다.그림을 보면 알듯이 임의의 노드 ‘A’를 먼저 선택 한다. 임의의 노드가 정해졌다면 임의의 노드에 연결된 간선 중 비용이 적게 드는 간선을 선택하여 인접노드와 연결을 하게 된다. 위의 그림에서는 노드 ‘A’에 연결된 간선(A->B)는 1,간선(A->D)는 6 이다. 여기서 간선(A->B)를 선택 하게 된다. 이렇게 인접 노드와연결이 되었다면 다시 임의의 노드와 인접 노드에 연결된 노드 중 간선의가중치가 적은 간선을 선택 하여 연결하게 되는데, 위의 그림에서 보면 노드’B’는노드 ‘A’에서 오는 간선의 가중치가 있으므로 포함하여 간선의 가중치를 계산해야 한다. (A -> D)의 비용은 6 이고, (A->B->D)의 비용은 5 이다. 이렇듯 노드로오기까지의 비용을 계산 해야 한다.출처 : http://blog.naver.com/songsmir?Redirect=Log&logNo=100117639573kth power of N2. 일 정
  12. 12. 일 정 내 용 프로젝트 진행방향 토의 후 팀원의 임무분담을 정함. ‘12. 5. 16 알고리즘 구상, 소스 구현 및 프로젝트 관련 자료 수집 소스의 문제점 토의 후 해결책 제시 ‘12. 5. 23 최종보고서 작성 후 검토3. 업무분담 이 름 분 담 내 용 정진아 조장임무 및 자료조사 고충욱 알고리즘 구성 및 자료조사 김시백 보고서작성 및 자료조사 안영준 알고리즘을 바탕으로 한 소스구성 최보은 알고리즘 구성 및 자료조사4. 소 스#include <stdio.h>
  13. 13. int main(){int node;//처음 입력받는 노드수char n[400][2];//입력받을 노드char no[20];//받는 노드의 종류int nod[20][2];//각 노드가 입력받은 횟수int x,y,z;//for 문용int v;//중복확인용int a=0;//노드 입력횟수용int b=0;//입력횟수 확인용char w;//잡 문자 처리용scanf("%d",&node);scanf("%c",&w);for(z=0;z<20;z++){no[z]=0;}for(x=0;x<400;x++){b++;for(y=0;y<2;y++){v=0;scanf("%c",&n[x][y]);for(z=0;z<node;z++){if(no[z]==n[x][y]){v++;
  14. 14. }}if(v==0){no[a]=n[x][y];nod[a][0]=0;nod[a][1]=0;a++;}}scanf("%c",&w);if(w==n){break;}}for(x=0;x<b;x++){for(y=0;y<2;y++){for(z=0;z<node;z++){if(no[z]==n[x][y]){nod[z][y]++;}}}}printf("n");
  15. 15. for(z=0;z<node;z++){printf("%c %2d %2d ",no[z],nod[z][1],nod[z][0]);if(nod[z][1]==0){printf("source");}if(nod[z][0]==0){printf("sink");}printf("n");}scanf("%d",&x);}출력결과
  16. 16. 5. 회의록<1 차>회의일시 2012 년 05 월 16 일 조 D3 작성자 11 정진아 참석자 08 고충욱 09 김시백 11 안영준 11 최보은 1. 업무분담회의안건 2. 알고리즘 회의 3. 일정 계획회의내용 내 용 비 고
  17. 17. 1. 업무분담 : 조장 : 정진아 자료조사 : 고충욱, 최보은 소스코딩 : 안영준 보고서 작성 : 김시백 2. 알고리즘 회의 - 입력 형식 토의 - 어떻게 결과를 나오게 할지 토의 3. 일정 계획 : 다음시간까지 자료조사 해 오기<2 차>회의일시 2012 년 05 월 23 일 조 D3 작성자 11 정진아 참석자 08 고충욱 09 김시백 11 안영준 11 최보은
  18. 18. 1. 알고리즘 회의회의안건 2. 자료회의 3. 최종보고서 작성 내 용 비 고 1. 알고리즘 회의 : 문자들을 입력받고 n 을 입력받을 때 까지 저장 문자들을 받을 때 처음 받은 문자는 따로 저장 AB 가 나왔다면 A 가 앞에 나오면 A 가 지정된 2 차배열 변수 앞쪽에 +1, 뒤에 나오면 변수 뒤쪽에 +1 을 한다회의내용 출력할 때, 한 부분이라도 0 이 있으면 sink 나 source 를 출력 2. 자료회의 : 여러 용어들에 대해 숙지 3. 최종보고서 작성 : 용어들에 대해 정의 및 간단한 예시 들기 이를 토대로 보고서 작성

×