project #5



  최단 경로 찾기


             C0조



             김영진
             강성태
             정준용
             허규준
             김지환
순서




      •조원별 업무분담


         •일정 계획


         •문제 파악


       •알고리즘 계획


          •소스구현


•문제점 파악 / 해결법 토의


          •최종소스
1)조원별 업무 분담

김영진           자료 조사 및 알고리즘 구현



강성태           자료 조사 및 알고리즘 구현



정준용           보고서 작성 및 소스 작성



허규준           알고리즘 구현 및 소스 작성



김지환           알고리즘 구현 및 소스 작성




2)일정계획
              과제에 대한 자료 조사 및 업무분담
05.24~05.29
              일정 계획

              프로젝트 알고리즘 구성 및 소스 구
05.29~06.01
              현


06.01~06.07   최종 소스 확인 및 최종보고서 작성
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개의 패스를 화면에 표시하고 가중치의 합을 표시한다.

。어떤 자료구조 / 알고리즘을 사용해도 됨.
4)알고리즘 계획


    최단거리를 구해주는 Floyd 알고리즘을 사용해 모든 노드의
가중치 중 가장 작은 가중치를 가진 패스 3개를 찾을 것입니
다.



5)소스 구현

#include<stdio.h>
#define M 9999


int 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;
      }
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];


                        }
                 }
       }
}
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++;
                      }
min++;
     }
}



6)문제점

    프로젝트의 원래 의도는 파일에서 입력받아 그 값 중 가장
짧은 패스 3개를 출력하는 것이지만 파일 입력의 개념을 확
실히 숙지하지 못하여 프로그램의 메인 함수 내에서 입력받
아 출력하였습니다.



코딩결과

More Related Content

PDF
이산치7보고서
PDF
이산치5보고서
PDF
2012 Dm C2 04
PDF
이산수학 C1 프로젝트 3
PDF
이산수학03
PDF
자료구조 프로젝트
PDF
Project#5 통신망에서 길 찾기 Hwp
PDF
5통신망에서 길 찾기
이산치7보고서
이산치5보고서
2012 Dm C2 04
이산수학 C1 프로젝트 3
이산수학03
자료구조 프로젝트
Project#5 통신망에서 길 찾기 Hwp
5통신망에서 길 찾기

What's hot (19)

PDF
이산수학 C1 프로젝트 5
PDF
이산수학05
PDF
2012 Ds B1 01
PPTX
C언어 세미나 - 함수
PDF
이산수학 C1 프로젝트 6
PDF
이산수학06
PDF
2012 Dm A0 04 Pdf
DOCX
이산치수학 Project5
PDF
자료구조 01 최종 보고서
PDF
Project#1파스칼 삼각형
PDF
말의여행
PDF
자료구조02
PDF
Project#2말의여행 Hwp
PDF
2021 1학기 정기 세미나 6주차
PDF
2012 Dm C2 05
PDF
이산치4번
PDF
2012 Ds A1 05
PPTX
튜터링 #10 20120416
PDF
BOJ4743
이산수학 C1 프로젝트 5
이산수학05
2012 Ds B1 01
C언어 세미나 - 함수
이산수학 C1 프로젝트 6
이산수학06
2012 Dm A0 04 Pdf
이산치수학 Project5
자료구조 01 최종 보고서
Project#1파스칼 삼각형
말의여행
자료구조02
Project#2말의여행 Hwp
2021 1학기 정기 세미나 6주차
2012 Dm C2 05
이산치4번
2012 Ds A1 05
튜터링 #10 20120416
BOJ4743
Ad

Similar to 자료구조05 (20)

PDF
자료구조5보고서
PDF
Project#5 최단거리 찾기 D0 Hwp
PDF
2012 Ds B2 05
PDF
자구5번
PDF
이산치 과제7
PDF
2012 Dm A0 07 Pdf
PDF
2012 Dm A0 07 Pdf
PDF
2012 Dm A0 04 Pdf
PDF
2012 Ds D0 01 Pdf
PDF
2012 Ds D0 01
DOCX
자료구조 Project5
PDF
자구2번
PDF
2012 Ds 01
PDF
이산치2번
PDF
2012 Dm A0 02 Pdf
PDF
2012 Dm A0 02 Pdf
PDF
2012 Dm C2 03
PDF
자료구조 05 최종 보고서
PDF
2012 Ds B2 02 Pdf
PDF
2012 Ds B2 02
자료구조5보고서
Project#5 최단거리 찾기 D0 Hwp
2012 Ds B2 05
자구5번
이산치 과제7
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
2012 Dm A0 04 Pdf
2012 Ds D0 01 Pdf
2012 Ds D0 01
자료구조 Project5
자구2번
2012 Ds 01
이산치2번
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
2012 Dm C2 03
자료구조 05 최종 보고서
2012 Ds B2 02 Pdf
2012 Ds B2 02
Ad

More from herojoon1378 (9)

PDF
자료구조06
PDF
자료구조04
PDF
자료구조02
PDF
자료구조01
PDF
Mst 구하기
PDF
7그룹 코드
PDF
6비트덧셈기
PDF
3콤비네이션
PDF
2데이터베이스 시스템
자료구조06
자료구조04
자료구조02
자료구조01
Mst 구하기
7그룹 코드
6비트덧셈기
3콤비네이션
2데이터베이스 시스템

자료구조05

  • 1. project #5 최단 경로 찾기 C0조 김영진 강성태 정준용 허규준 김지환
  • 2. 순서 •조원별 업무분담 •일정 계획 •문제 파악 •알고리즘 계획 •소스구현 •문제점 파악 / 해결법 토의 •최종소스
  • 3. 1)조원별 업무 분담 김영진 자료 조사 및 알고리즘 구현 강성태 자료 조사 및 알고리즘 구현 정준용 보고서 작성 및 소스 작성 허규준 알고리즘 구현 및 소스 작성 김지환 알고리즘 구현 및 소스 작성 2)일정계획 과제에 대한 자료 조사 및 업무분담 05.24~05.29 일정 계획 프로젝트 알고리즘 구성 및 소스 구 05.29~06.01 현 06.01~06.07 최종 소스 확인 및 최종보고서 작성
  • 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. 4)알고리즘 계획 최단거리를 구해주는 Floyd 알고리즘을 사용해 모든 노드의 가중치 중 가장 작은 가중치를 가진 패스 3개를 찾을 것입니 다. 5)소스 구현 #include<stdio.h> #define M 9999 int 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. 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. 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. min++; } } 6)문제점 프로젝트의 원래 의도는 파일에서 입력받아 그 값 중 가장 짧은 패스 3개를 출력하는 것이지만 파일 입력의 개념을 확 실히 숙지하지 못하여 프로그램의 메인 함수 내에서 입력받 아 출력하였습니다. 코딩결과