자료구조05

431 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
431
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
2
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

자료구조05

  1. 1. project #5 최단 경로 찾기 C0조 김영진 강성태 정준용 허규준 김지환
  2. 2. 순서 •조원별 업무분담 •일정 계획 •문제 파악 •알고리즘 계획 •소스구현•문제점 파악 / 해결법 토의 •최종소스
  3. 3. 1)조원별 업무 분담김영진 자료 조사 및 알고리즘 구현강성태 자료 조사 및 알고리즘 구현정준용 보고서 작성 및 소스 작성허규준 알고리즘 구현 및 소스 작성김지환 알고리즘 구현 및 소스 작성2)일정계획 과제에 대한 자료 조사 및 업무분담05.24~05.29 일정 계획 프로젝트 알고리즘 구성 및 소스 구05.29~06.01 현06.01~06.07 최종 소스 확인 및 최종보고서 작성
  4. 4. 3)문제파악。노드가 n(V1, V2, ... Vn)개인 그래프 G가 있다. V1에서 Vn까지의 패스를 P=(p1, p2, ... pm)이라고 할 경우,P에서 3개의 최단거리를 찾아라.。다음과 같은 프로그램을 작성한다. 。다음과 같은 포맷을 가진 파일에서 정보를 읽어 들인다. 。첫번째 라인은 그래프 노드의 수 n이 있다. 。두번째 라인부터 끝까지 다음과 같이 3수를 가지고 있다. 。Vi, Vj, Wij : 여기서 Vi는 간선의 시작 노드, Vj는 간선의 끝 노드 그리고 그 간선의 가중치를 Wij이다. 。V1에서 Vn까지의 가장 짧은 패스 3개를 찾아라. 。3개의 패스를 화면에 표시하고 가중치의 합을 표시한다.。어떤 자료구조 / 알고리즘을 사용해도 됨.
  5. 5. 4)알고리즘 계획 최단거리를 구해주는 Floyd 알고리즘을 사용해 모든 노드의가중치 중 가장 작은 가중치를 가진 패스 3개를 찾을 것입니다.5)소스 구현#include<stdio.h>#define M 9999int main(){ int a[20][20],min=1; int i=0,j=0,k,l=0,num,weight=0; int start,end,line,cnt=1,stopcnt=0; char c,d; for(i=0;i<20;i++) { for(j=0;j<20;j++) { a[i][j]=M; } a[i][i]=0; }
  6. 6. printf("노드의 갯수를 입력하십시오n");scanf("%d",&num);printf("간선의 갯수를 입력하십시오n");scanf("%d",&line);fflush(stdin);for(i=0;i<line;i++){ scanf("%c %c %d",&c,&d,&weight); a[c-65][d-65]=weight; a[d-65][c-65]=weight; fflush(stdin);}for(k=0;k<num;k++){ for(i=0;i<num;i++) { for(j=0;j<num;j++) { if(a[i][j]>a[i][k]+a[k][j]) { a[i][j]=a[i][k]+a[k][j]; } } }}
  7. 7. for(i=0;i<num;i++) { for(j=0;j<num;j++) { printf("%d ",a[i][j]); } printf("n"); } for(;;) { cnt=1; for(j=0;j<num;j++) { for(i=cnt;i<num;i++) { if(a[j][i]==min) { printf("%c -> %c = %dn", j+65, i+65,a[j][i]); stopcnt++; if(stopcnt==3) { return 0; } } } cnt++; }
  8. 8. min++; }}6)문제점 프로젝트의 원래 의도는 파일에서 입력받아 그 값 중 가장짧은 패스 3개를 출력하는 것이지만 파일 입력의 개념을 확실히 숙지하지 못하여 프로그램의 메인 함수 내에서 입력받아 출력하였습니다.코딩결과

×