SlideShare a Scribd company logo
1 of 8
A2조 이산치수학
프로젝트 보고서
 Syntax of
 languages




        조장 : 20093451 김성현
        조원 : 20093463 김창헌
            20043695 이성욱
            20113295 성주희
            20093440 고정현
과제수행일지
  소속                     조장 : 김성현                       조원 : 김창헌, 이성욱, 성주희, 고정현


                  자료조사 :                           프로그래밍 :             보고서 작성 :
  A2
                성주희, 고정현                       김창헌, 이성욱                      김성현


과제수행기간                                             13일 5시간

                                    I. 계획의 작성

 연구제목     Syntax of languages




 연구배경     그래프에 대해서 학습하고 MST에 대해 이해한다.




          Ⅰ )   http://kylog.tistory.com/47
          Ⅱ )   http://alrospage.tistory.com/365
 참고자료     Ⅲ )   http://alpak3737.blog.me/140108435964
          Ⅳ )   http://blog.naver.com/ctpoyou?Redirect=Log&logNo=101953762
          Ⅴ )   http://www.aistudy.com/math/tree_spanning.htm




                                    II. 계획의 실행

 첫째 날                                    2012년 4월 24일 목요일

오늘의 작업                조원의 업무 분담과 학습할 내용 및 과제에 대한 이해와 숙지


         조장 : 김성현
         자료조사 : 성주희, 고정현
         프로그래밍 : 이성욱, 김창헌
토의 내용

         이처럼 각자 역할 분담을 하였다. 그리고 각자 시간이 나는대로 소스를 생각해 보기로하
         였다.


과제준비에서
자료는 어떻게 하면 구할 수는 있을거 같았는데 코딩에서 문제가 있었다. 알고리즘을 어
 느낀 점    떻게 짜야될지 생각보다 막막했다. 그래서 일단 각자 생각을 해보기로 하였다.


 둘째 날                             2012년 4월 30일 월요일
오늘의 작업                          각자 조사해온 내용에 대한 토의
         vertex

         정점


         edge

         간선


         multigraph

         다중그래프로서 임의의 정점 쌍에 대하여 여러 개의 간선이 존재하는 그래프.


         Eulerian path
         오일러경로는 그래프의 모든 변이 딱 한번만 통과하는 경로이다.


         simple graph
         루프(loop)가 없고 두 정점 사이에 두 개 이상의 간선이 없는 그래프.


         path of length k
토의 내용    노드의 경로 길이는 해당 노드에서 루트까지의 edge의 수를 의미한다. 이진 트리의 경로
         길이는 모든 노드의 경로 길이를 더한 것을 의미한다. 모든 내부 노드의 경로 길이를 더
         한 것은 내부 경로 길이가 되고, 모든 외부 노드의 경로 길이를 더한 것은 외부 경로 길
         이가 된다.


         cycle
         어떤 체계가 처음 상태에서 변화하여 다시 원래의 상태로 되돌아오는 일을 말한다. 변화
         를 겪어도 같은 과정을 반복하므로 순환하는 과정이다.


         A graph is connected
         어떤 정점에서 다른 모든 정점으로 가는 길이 존재하는 그래프를 말한다


         Hamiltonian circuit

         그래프에서 모든 꼭지점을 한번만 지나가며 다시 출발한 꼭지점으로 되돌아오는 회로가

         있는 경우를 말한다.
tree




         트리 회로. 나무가 하나의 root에서 trunk가 나와 branch로 나누어지는 것처럼, 어떤 하나의 집합으
         로부터 하위 lower level로 가지가 나오는 집합 관계를 갖는 계층 구조를 말한다.


         spanning tree
         신장트리. 연결 그래프의 부분 그래프로서 그 그래프의 모든 정점과 간선의 부분 집합으로 구성되
         는 트리. 모든 노드는 적어도 하나의 간선에 연결되어 있어야 한다.


         minimum spanning tree


         최소신장트리. 신장트리 중 에서 그 간선의 가중치 합이 가장 적은 것을 뜻한다.
         여러 개의 가능한 신장트리중 가중치의 총합계가 가장 적은 트리를 최소 신장트리라고 함
         ① 정점의 수가 n일 때 (n-1)개의 간선을 가짐
         ② 연결되어 있음
         ③ cycle이 없음
         깊이우선 검색방법이나 너비우선 검색방법으로 운행하여 얻어지는 경로는 결국 트리의 형태를 띈
         다.
         binary tree




         이진 트리란, 트리 중에서도 한 노드가 자식노드를 최대한 두개까지 가질 수 있는 트리
         즉, 이진 트리에서 한 노드가 가지는 자식 노드의 수는 0,1,2중 하나이다. 트리의 한 종류
         인 이진트리에도 여러 형태가 있고, 이 형태 중 특징적인 형태를 가지는 트리는 그냥 이
         진트리라고 하지 않고 다른 이름으로 부릅니다.
         리스트 구조의 하나이며, 최상의 루트 노드로부터 서브트리 방향에 도달할 때, 각 루트로
         부터 나와 있는 노드가 겨우 두 개인 모양의 트리. 데이터 집합을 기억 영역상에 표현한
         경우 다음에 계속되는 데이터 항목으로의 포인터가 겨우 두 개인 모양의 구조를 가리킨
         다.

         이번 프로젝트에선, 조원들의 개개인 생각을 내어 토론하니, 각자가 생각했던 것 외의 관
과제준비에서
         점으로 서로 의견을 주고받고 하는 과정에서 내가 생각하지 못했던 관점으로 문제를 해
 느낀 점
         결하려고 하는걸 보았을 때 많은 도움이 된 것 같았다.
셋째 날                                         2012년 5월 1일 화요일
오늘의 작업                                           MST에 대한 토론



          이번 프로젝트에서 해야될 공부를 같이 하였고, 소스에 대해서 토론을 하였다.
 토의 내용




과제준비에서    MST라는 것이 생각보다 어려웠다. 평소 알지 못했던 내용이라, 이해하는데만 다소 시간
 느낀 점     이 걸려 코딩하는데 많은 어려움이 있었다.


                                             III. 결과

          #include<stdio.h>


          int main()
          {


                  i                                           n                                  t
          i,j,k,nodenum,numtemp,nodecnt=0,cycnt=2,cynode1=0,cynode2=0,buff=0,count=0;
                  char chtemp;
                  char node1[1000];
                  char node2[1000];
                  int cycle[100];
                  int weight[100];


                  scanf("%d" , &nodenum);// 입력
최종 프로그램           printf("입력완료 000 입력n");
  소스              fflush(stdin);
              for(;;) // 노드 사이의 가중치 입력받음
                  {
                            scanf("%c%c%d",            &node1[nodecnt]      ,&node2[nodecnt]     ,
          &weight[nodecnt]);
                            fflush(stdin);
                            //if(node1[nodecnt]        ==   '0'   &&node2[nodecnt]   ==   '0'   &&
          weight[nodecnt] == 0) break;
                            if(node1[nodecnt] == '0') break;
                            nodecnt++;
                  }


                  for(i=0;i<nodecnt-1;i++) // 간선들을 오름차순으로 다시정렬
                  {
                            for(j=i+1;j<nodecnt;j++)
{
                       if(weight[i] > weight[j])
                       {
                                chtemp=node1[i];
                                node1[i]=node1[j];
                                node1[j]=chtemp;
                                chtemp=node2[i];
                                node2[i]=node2[j];
                                node2[j]=chtemp;
                                numtemp=weight[i];
                                weight[i]=weight[j];
                                weight[j]=numtemp;
                       }
              }
      }


      printf("nMinimum Spanning Treen");
      printf("%c%c, " , node1[0] , node2[0]); // 가중치 제일 작은 기준 하나 출력
      cycle[0]=node1[0];
      cycle[1]=node2[0];


      for(;;)// 제일 작은 가중치 간선을 기준으로 집합을 만들어 가중치 작은 간선들을
늘려감
      {
      for(i=1;i<nodecnt;i++)
      {
              for(j=0;j<cycnt;j++) // 사이클 판단 buff 2라면 사이클이 된다
              {
                       if( cycle[j] == node1[i] || cycle[j] == node2[i])buff++;


              }
              if( buff == 1 ) // 따로만든 집합 내에 노드 하나만 일치 하는것중 가중
치 제일 작은것을 선택
              {
                       printf("%c%c", node1[i] , node2[i]);


                       if(count != nodenum-2) printf(", ");
                       else printf("n");


                       count++;


                       for(k=0;k<cycnt;k++)
                       {
if(node1[i] == cycle[k]) cynode1++;
                                          else if(node2[i] == cycle[k]) cynode2++;


                                 }
                                 if(cynode1==0)
                                 {
                                          cycle[cycnt]=node1[i];
                                          cycnt++;
                                 }
                                 cynode1=0;
                                 if(cynode2==0)
                                 {
                                          cycle[cycnt]=node2[i];
                                          cycnt++;
                                 }
                                 cynode2=0;
                                 break;
                       }


                       buff=0;


                }
        if(count == nodenum-1) break;
                }


        return 0;



        }




결과 출력
Ⅳ. 반성




           조원들이 각자 자료를 조사하고 개개인의 임무를 하여서 프로젝트를 보다 빠르고 신속하
           게 하였습니다. 조사한 부분을 서로서로 가르쳐 주는 부분에서 시간이 좀 걸리긴 하였지
과제를 마치면서
           만, 이번 프로젝트는 평소 알지 못한 부분을 배워서 이해 하는데만 다소 시간이 걸렸습니
  느낀 점
           다. 이 MST를 C로 코딩해야되는데 알고리즘생각하기까지 많은 시간이 소요되는 걸 보고
           아직 많이 부족하다는걸 알게 되었고, 좀 더 공부하고 좀 더 연습해야 할 것같습니다. 서
           로 자주 만나 회의를 못해 온라인으로 만나서 회의를 해서 보고서의 질을 보다 높이지
           못해서 좀 아쉬움이 남았습니다.




조원평가                     기여도(10점 만점)

김성현                      8

김창헌                      8

이성욱                      10

성주희                      8

고정현                      0

More Related Content

What's hot

자료구조1보고서
자료구조1보고서자료구조1보고서
자료구조1보고서KimChangHoen
 
2012 Ds D0 01 Pdf
2012 Ds D0 01 Pdf2012 Ds D0 01 Pdf
2012 Ds D0 01 Pdfkd19h
 
이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4pkok15
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDAyyooooon
 
자료구조 그래프 보고서
자료구조 그래프 보고서자료구조 그래프 보고서
자료구조 그래프 보고서mil23
 
고랫적 아이디어_씨네마 윷놀이
고랫적 아이디어_씨네마 윷놀이고랫적 아이디어_씨네마 윷놀이
고랫적 아이디어_씨네마 윷놀이Seung Min Shin
 
[17.07.18] SCPC 1회 본선 - 트리
[17.07.18] SCPC 1회 본선 - 트리[17.07.18] SCPC 1회 본선 - 트리
[17.07.18] SCPC 1회 본선 - 트리Hyeonmin Park
 
이산치수학 Project5
이산치수학 Project5이산치수학 Project5
이산치수학 Project5KoChungWook
 
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 WinterSuhyun Park
 
자료구조 01 최종 보고서
자료구조 01 최종 보고서자료구조 01 최종 보고서
자료구조 01 최종 보고서pkok15
 
Project#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpProject#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpKimjeongmoo
 

What's hot (18)

자료구조1보고서
자료구조1보고서자료구조1보고서
자료구조1보고서
 
자료구조01
자료구조01자료구조01
자료구조01
 
자료구조01
자료구조01자료구조01
자료구조01
 
2012 Ds D0 01 Pdf
2012 Ds D0 01 Pdf2012 Ds D0 01 Pdf
2012 Ds D0 01 Pdf
 
이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4이산수학 C1 프로젝트 4
이산수학 C1 프로젝트 4
 
ffmpeg optimization using CUDA
ffmpeg optimization using CUDAffmpeg optimization using CUDA
ffmpeg optimization using CUDA
 
이산수학04
이산수학04이산수학04
이산수학04
 
3콤비네이션
3콤비네이션3콤비네이션
3콤비네이션
 
자료구조 그래프 보고서
자료구조 그래프 보고서자료구조 그래프 보고서
자료구조 그래프 보고서
 
Hanoi2
Hanoi2Hanoi2
Hanoi2
 
Derivatives
DerivativesDerivatives
Derivatives
 
고랫적 아이디어_씨네마 윷놀이
고랫적 아이디어_씨네마 윷놀이고랫적 아이디어_씨네마 윷놀이
고랫적 아이디어_씨네마 윷놀이
 
[17.07.18] SCPC 1회 본선 - 트리
[17.07.18] SCPC 1회 본선 - 트리[17.07.18] SCPC 1회 본선 - 트리
[17.07.18] SCPC 1회 본선 - 트리
 
이산치수학 Project5
이산치수학 Project5이산치수학 Project5
이산치수학 Project5
 
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
세그먼트 트리 느리게 업데이트하기 - Sogang ICPC Team, 2020 Winter
 
자료구조 01 최종 보고서
자료구조 01 최종 보고서자료구조 01 최종 보고서
자료구조 01 최종 보고서
 
Project#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort HwpProject#3 How Fast Can We Sort Hwp
Project#3 How Fast Can We Sort Hwp
 
자료구조05
자료구조05자료구조05
자료구조05
 

Similar to 이산치4보고서

2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdfkd19h
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdfjinwookhong
 
이산치 과제7
이산치 과제7이산치 과제7
이산치 과제7mil23
 
2012 Ds B2 02
2012 Ds B2 022012 Ds B2 02
2012 Ds B2 02chl132435
 
이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7pkok15
 
5통신망에서 길 찾기
5통신망에서 길 찾기5통신망에서 길 찾기
5통신망에서 길 찾기herojoon1378
 
Project#5 통신망에서 길 찾기 Hwp
Project#5 통신망에서 길 찾기 HwpProject#5 통신망에서 길 찾기 Hwp
Project#5 통신망에서 길 찾기 HwpKimjeongmoo
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpKimjeongmoo
 
자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서KimChangHoen
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01seonhyung
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdfjinwookhong
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdfkd19h
 
자료구조 Project5
자료구조 Project5자료구조 Project5
자료구조 Project5KoChungWook
 
이산치수학 Project4
이산치수학 Project4이산치수학 Project4
이산치수학 Project4KoChungWook
 
2012 Dm A0 01 Pdf
2012 Dm A0 01 Pdf2012 Dm A0 01 Pdf
2012 Dm A0 01 Pdfjinwookhong
 
2012 Dm A0 01 Pdf
2012 Dm A0 01 Pdf2012 Dm A0 01 Pdf
2012 Dm A0 01 Pdfkd19h
 
자료구조 트리 보고서
자료구조 트리 보고서자료구조 트리 보고서
자료구조 트리 보고서mil23
 

Similar to 이산치4보고서 (20)

2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
 
2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf2012 Dm A0 07 Pdf
2012 Dm A0 07 Pdf
 
이산치 과제7
이산치 과제7이산치 과제7
이산치 과제7
 
2012 Ds B2 02
2012 Ds B2 022012 Ds B2 02
2012 Ds B2 02
 
이산수학07
이산수학07이산수학07
이산수학07
 
이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7이산수학 C1 프로젝트 7
이산수학 C1 프로젝트 7
 
5통신망에서 길 찾기
5통신망에서 길 찾기5통신망에서 길 찾기
5통신망에서 길 찾기
 
Project#5 통신망에서 길 찾기 Hwp
Project#5 통신망에서 길 찾기 HwpProject#5 통신망에서 길 찾기 Hwp
Project#5 통신망에서 길 찾기 Hwp
 
Project#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 HwpProject#5 최단거리 찾기 D0 Hwp
Project#5 최단거리 찾기 D0 Hwp
 
자료구조5보고서
자료구조5보고서자료구조5보고서
자료구조5보고서
 
자료구조05
자료구조05자료구조05
자료구조05
 
2012 Ds B1 01
2012 Ds B1 012012 Ds B1 01
2012 Ds B1 01
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
 
이산치2번
이산치2번이산치2번
이산치2번
 
2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf2012 Dm A0 02 Pdf
2012 Dm A0 02 Pdf
 
자료구조 Project5
자료구조 Project5자료구조 Project5
자료구조 Project5
 
이산치수학 Project4
이산치수학 Project4이산치수학 Project4
이산치수학 Project4
 
2012 Dm A0 01 Pdf
2012 Dm A0 01 Pdf2012 Dm A0 01 Pdf
2012 Dm A0 01 Pdf
 
2012 Dm A0 01 Pdf
2012 Dm A0 01 Pdf2012 Dm A0 01 Pdf
2012 Dm A0 01 Pdf
 
자료구조 트리 보고서
자료구조 트리 보고서자료구조 트리 보고서
자료구조 트리 보고서
 

More from KimChangHoen

자료구조3보고서
자료구조3보고서자료구조3보고서
자료구조3보고서KimChangHoen
 
자료구조2보고서
자료구조2보고서자료구조2보고서
자료구조2보고서KimChangHoen
 
자료구조4보고서
자료구조4보고서자료구조4보고서
자료구조4보고서KimChangHoen
 
자료구조6보고서
자료구조6보고서자료구조6보고서
자료구조6보고서KimChangHoen
 
이산치7보고서
이산치7보고서이산치7보고서
이산치7보고서KimChangHoen
 
이산치6보고서
이산치6보고서이산치6보고서
이산치6보고서KimChangHoen
 
이산치3보고서
이산치3보고서이산치3보고서
이산치3보고서KimChangHoen
 
이산치1보고서
이산치1보고서이산치1보고서
이산치1보고서KimChangHoen
 

More from KimChangHoen (8)

자료구조3보고서
자료구조3보고서자료구조3보고서
자료구조3보고서
 
자료구조2보고서
자료구조2보고서자료구조2보고서
자료구조2보고서
 
자료구조4보고서
자료구조4보고서자료구조4보고서
자료구조4보고서
 
자료구조6보고서
자료구조6보고서자료구조6보고서
자료구조6보고서
 
이산치7보고서
이산치7보고서이산치7보고서
이산치7보고서
 
이산치6보고서
이산치6보고서이산치6보고서
이산치6보고서
 
이산치3보고서
이산치3보고서이산치3보고서
이산치3보고서
 
이산치1보고서
이산치1보고서이산치1보고서
이산치1보고서
 

이산치4보고서

  • 1. A2조 이산치수학 프로젝트 보고서 Syntax of languages 조장 : 20093451 김성현 조원 : 20093463 김창헌 20043695 이성욱 20113295 성주희 20093440 고정현
  • 2. 과제수행일지 소속 조장 : 김성현 조원 : 김창헌, 이성욱, 성주희, 고정현 자료조사 : 프로그래밍 : 보고서 작성 : A2 성주희, 고정현 김창헌, 이성욱 김성현 과제수행기간 13일 5시간 I. 계획의 작성 연구제목 Syntax of languages 연구배경 그래프에 대해서 학습하고 MST에 대해 이해한다. Ⅰ ) http://kylog.tistory.com/47 Ⅱ ) http://alrospage.tistory.com/365 참고자료 Ⅲ ) http://alpak3737.blog.me/140108435964 Ⅳ ) http://blog.naver.com/ctpoyou?Redirect=Log&logNo=101953762 Ⅴ ) http://www.aistudy.com/math/tree_spanning.htm II. 계획의 실행 첫째 날 2012년 4월 24일 목요일 오늘의 작업 조원의 업무 분담과 학습할 내용 및 과제에 대한 이해와 숙지 조장 : 김성현 자료조사 : 성주희, 고정현 프로그래밍 : 이성욱, 김창헌 토의 내용 이처럼 각자 역할 분담을 하였다. 그리고 각자 시간이 나는대로 소스를 생각해 보기로하 였다. 과제준비에서
  • 3. 자료는 어떻게 하면 구할 수는 있을거 같았는데 코딩에서 문제가 있었다. 알고리즘을 어 느낀 점 떻게 짜야될지 생각보다 막막했다. 그래서 일단 각자 생각을 해보기로 하였다. 둘째 날 2012년 4월 30일 월요일 오늘의 작업 각자 조사해온 내용에 대한 토의 vertex 정점 edge 간선 multigraph 다중그래프로서 임의의 정점 쌍에 대하여 여러 개의 간선이 존재하는 그래프. Eulerian path 오일러경로는 그래프의 모든 변이 딱 한번만 통과하는 경로이다. simple graph 루프(loop)가 없고 두 정점 사이에 두 개 이상의 간선이 없는 그래프. path of length k 토의 내용 노드의 경로 길이는 해당 노드에서 루트까지의 edge의 수를 의미한다. 이진 트리의 경로 길이는 모든 노드의 경로 길이를 더한 것을 의미한다. 모든 내부 노드의 경로 길이를 더 한 것은 내부 경로 길이가 되고, 모든 외부 노드의 경로 길이를 더한 것은 외부 경로 길 이가 된다. cycle 어떤 체계가 처음 상태에서 변화하여 다시 원래의 상태로 되돌아오는 일을 말한다. 변화 를 겪어도 같은 과정을 반복하므로 순환하는 과정이다. A graph is connected 어떤 정점에서 다른 모든 정점으로 가는 길이 존재하는 그래프를 말한다 Hamiltonian circuit 그래프에서 모든 꼭지점을 한번만 지나가며 다시 출발한 꼭지점으로 되돌아오는 회로가 있는 경우를 말한다.
  • 4. tree 트리 회로. 나무가 하나의 root에서 trunk가 나와 branch로 나누어지는 것처럼, 어떤 하나의 집합으 로부터 하위 lower level로 가지가 나오는 집합 관계를 갖는 계층 구조를 말한다. spanning tree 신장트리. 연결 그래프의 부분 그래프로서 그 그래프의 모든 정점과 간선의 부분 집합으로 구성되 는 트리. 모든 노드는 적어도 하나의 간선에 연결되어 있어야 한다. minimum spanning tree 최소신장트리. 신장트리 중 에서 그 간선의 가중치 합이 가장 적은 것을 뜻한다. 여러 개의 가능한 신장트리중 가중치의 총합계가 가장 적은 트리를 최소 신장트리라고 함 ① 정점의 수가 n일 때 (n-1)개의 간선을 가짐 ② 연결되어 있음 ③ cycle이 없음 깊이우선 검색방법이나 너비우선 검색방법으로 운행하여 얻어지는 경로는 결국 트리의 형태를 띈 다. binary tree 이진 트리란, 트리 중에서도 한 노드가 자식노드를 최대한 두개까지 가질 수 있는 트리 즉, 이진 트리에서 한 노드가 가지는 자식 노드의 수는 0,1,2중 하나이다. 트리의 한 종류 인 이진트리에도 여러 형태가 있고, 이 형태 중 특징적인 형태를 가지는 트리는 그냥 이 진트리라고 하지 않고 다른 이름으로 부릅니다. 리스트 구조의 하나이며, 최상의 루트 노드로부터 서브트리 방향에 도달할 때, 각 루트로 부터 나와 있는 노드가 겨우 두 개인 모양의 트리. 데이터 집합을 기억 영역상에 표현한 경우 다음에 계속되는 데이터 항목으로의 포인터가 겨우 두 개인 모양의 구조를 가리킨 다. 이번 프로젝트에선, 조원들의 개개인 생각을 내어 토론하니, 각자가 생각했던 것 외의 관 과제준비에서 점으로 서로 의견을 주고받고 하는 과정에서 내가 생각하지 못했던 관점으로 문제를 해 느낀 점 결하려고 하는걸 보았을 때 많은 도움이 된 것 같았다.
  • 5. 셋째 날 2012년 5월 1일 화요일 오늘의 작업 MST에 대한 토론 이번 프로젝트에서 해야될 공부를 같이 하였고, 소스에 대해서 토론을 하였다. 토의 내용 과제준비에서 MST라는 것이 생각보다 어려웠다. 평소 알지 못했던 내용이라, 이해하는데만 다소 시간 느낀 점 이 걸려 코딩하는데 많은 어려움이 있었다. III. 결과 #include<stdio.h> int main() { i n t i,j,k,nodenum,numtemp,nodecnt=0,cycnt=2,cynode1=0,cynode2=0,buff=0,count=0; char chtemp; char node1[1000]; char node2[1000]; int cycle[100]; int weight[100]; scanf("%d" , &nodenum);// 입력 최종 프로그램 printf("입력완료 000 입력n"); 소스 fflush(stdin); for(;;) // 노드 사이의 가중치 입력받음 { scanf("%c%c%d", &node1[nodecnt] ,&node2[nodecnt] , &weight[nodecnt]); fflush(stdin); //if(node1[nodecnt] == '0' &&node2[nodecnt] == '0' && weight[nodecnt] == 0) break; if(node1[nodecnt] == '0') break; nodecnt++; } for(i=0;i<nodecnt-1;i++) // 간선들을 오름차순으로 다시정렬 { for(j=i+1;j<nodecnt;j++)
  • 6. { if(weight[i] > weight[j]) { chtemp=node1[i]; node1[i]=node1[j]; node1[j]=chtemp; chtemp=node2[i]; node2[i]=node2[j]; node2[j]=chtemp; numtemp=weight[i]; weight[i]=weight[j]; weight[j]=numtemp; } } } printf("nMinimum Spanning Treen"); printf("%c%c, " , node1[0] , node2[0]); // 가중치 제일 작은 기준 하나 출력 cycle[0]=node1[0]; cycle[1]=node2[0]; for(;;)// 제일 작은 가중치 간선을 기준으로 집합을 만들어 가중치 작은 간선들을 늘려감 { for(i=1;i<nodecnt;i++) { for(j=0;j<cycnt;j++) // 사이클 판단 buff 2라면 사이클이 된다 { if( cycle[j] == node1[i] || cycle[j] == node2[i])buff++; } if( buff == 1 ) // 따로만든 집합 내에 노드 하나만 일치 하는것중 가중 치 제일 작은것을 선택 { printf("%c%c", node1[i] , node2[i]); if(count != nodenum-2) printf(", "); else printf("n"); count++; for(k=0;k<cycnt;k++) {
  • 7. if(node1[i] == cycle[k]) cynode1++; else if(node2[i] == cycle[k]) cynode2++; } if(cynode1==0) { cycle[cycnt]=node1[i]; cycnt++; } cynode1=0; if(cynode2==0) { cycle[cycnt]=node2[i]; cycnt++; } cynode2=0; break; } buff=0; } if(count == nodenum-1) break; } return 0; } 결과 출력
  • 8. Ⅳ. 반성 조원들이 각자 자료를 조사하고 개개인의 임무를 하여서 프로젝트를 보다 빠르고 신속하 게 하였습니다. 조사한 부분을 서로서로 가르쳐 주는 부분에서 시간이 좀 걸리긴 하였지 과제를 마치면서 만, 이번 프로젝트는 평소 알지 못한 부분을 배워서 이해 하는데만 다소 시간이 걸렸습니 느낀 점 다. 이 MST를 C로 코딩해야되는데 알고리즘생각하기까지 많은 시간이 소요되는 걸 보고 아직 많이 부족하다는걸 알게 되었고, 좀 더 공부하고 좀 더 연습해야 할 것같습니다. 서 로 자주 만나 회의를 못해 온라인으로 만나서 회의를 해서 보고서의 질을 보다 높이지 못해서 좀 아쉬움이 남았습니다. 조원평가 기여도(10점 만점) 김성현 8 김창헌 8 이성욱 10 성주희 8 고정현 0