이산치 수학
   결과 보고서
    Project#4
Syntax of Language




                     과목 : 이산치 수학
                담당교수님 : 차정원교수님
      조원 : C2조 김선형, 김정훈, 김지환, 이태구
프로젝트 목표
그래프가 주어질 경우 MST(Minimum Spanning Tree)를 출력하는 프로그램 작성.




역할분담
조장 : 김선형
자료조사 : 김선형, 김정훈, 김지환
프로그래밍 : 이태구




프로젝트 일정

                     4/25           5/9            5/11

     설계 및
    역할분담

  관련 자료 수집

    프로그래밍
<초안>
#include <stdio.h>
#include <stdlib.h>


int main()


{
        int *array,a,b;
        char c,d,e,f,g,h;
        c=65;
        d=66;
        e=c;
        printf("노드의 갯수 입력 : ");
        scanf("%d",&a);
        //노드의 수
        //0을 입력하면 그래프가 없다고 생각함
        array=(int*)malloc(sizeof(int)*(a*a));
        for(b=0; b<(a*(a-1))/2; b++)
        {
                scanf("%s",&array[b]);
        }
        for(f=0; f<(a*(a-1))/2; f++)
        {
                for(g=f; g<(a*(a-1))/2; g++)
                {
                            if(array[f]>array[g])
                            {
                                    h=array[f];
                                    array[f]=array[g];
                                    array[g]=h;
                            }
                }
        }
        printf("결과n");
        for(b=0; b<a-1; b++)
        {
                printf("%sn",array[b]);
        }
}
초안에서는 크루스칼의 알고리즘의 순서인 우선 입력을 받고 오름차순을 정렬하여 다음 과
정인 사이클을 생성하면 두 정점을 포함 시키지 않고 생성 하지 않으면 두 정점을 포함시키
는 방법을 계속 하는 방식이 크루스칼의 알고리즘이다.
초안에서 대부분완성을 해두고 최종안에서는 깔끔하게 정리만 하려고 했으나 2단계인 사이
클을 정리하는 과정이 생각보다 까다로워서 초안에서는 오름차순으로만 정렬하고 깔끔하게
정리 하는것 까지 마무리시켰다.



<최종안>
#include <stdio.h>
#include <stdlib.h>


//크루스칼의 알고리즘을 이용하여 소스를 작성
int main()


{
        int *array,a,b,c,d,sum=0;
        char e,f,g,h;
        printf("노드의 갯수 입력 : ");
        scanf("%d",&a);
        //노드의 수
        //0을 입력하면 그래프가 없다고 생각함
        array=(int*)malloc(sizeof(int)*a);
        c=65;
        d=66;
        e=c;
        for(b=0; b<(a*(a-1))/2; b++)
        {
                printf("%c%c : ",c,d);
                if(e+a-1!=d)
                {
                          d=d+1;
                }
                else
                {
                          c=c+1;
                          d=c+1;
                }
                scanf("%d",&array[b]);
        }
        //그래프 성분입력
for(f=0; f<(a*(a-1))/2; f++)
       {
               for(g=f; g<(a*(a-1))/2; g++)
               {
                       if(array[f]>array[g])
                       {
                                h=array[f];
                                array[f]=array[g];
                                array[g]=h;
                       }
               }
       }
       //오름차순으로 정렬
       for(b=0; b<a-1; b++)
       {
               if(array[b]>0)
               {
                       printf("%dn",array[b]);
                       if(array[b]==array[b+1]&&array[b+1]==array[b+2])
                       {
                                a=a+1;
                                b=b+1;
                       }
                       sum=array[b]+sum;
               }
               else
               {
                       a=a+1;
               }
       }
       printf("MST의 비용의 합: %dn",sum);
       //사이클을 나타내는 부분을 제외하고 출력하는 부분
       return 0;
}


    최종안에서는 초안에 있었던 내용을 바탕으로 크루스칼의 알고리즘인 사이클 생성 유무에
대해 포털사이트를 통해서 크루스칼 알고리즘에 대해 조금 더 자세히 알아보고 난 뒤 여러
가지 시행착오를 거치면서 최종적인 소스를 완성하였다. 홈페이지에 나와있는 출력방식이
아닌 다른 방식을 사용한 이유는 MST(최소신장트리)가 여러 가지 존재하는 경우의 수도
나올 수 있다고 생각해서 비용만 파악하더라도 MST를 쉽게 구분할 수 있게 하기 위해서
MST를 이루는 비용만 출력하였다
프로젝트 후 느낀 점
이번과제에도 시작부터 어려운 점이 많아 저번처럼 난항을 겪으면서 시작했는데 첫 번째로
대부분 과제를 받으면 문제는 대충 파악하고 시작하지만 이번에는 문제를 파악하고 어떤 알
고리즘을 사용할지도 막막한 과정에서 우선 MST에 대한 내용을 검색하다보면서 여러 가지
알고리즘을 공부하면서 소스를 작성할 때 쉽고 간편하게 작성할 수 있는 것으로 접근하면서
초안을 거치고 최종안까지 가면서 여러 가지 시도를 한 끝에 최종적인 소스를 완성하게 되
었다.

More Related Content

PDF
2012 Dm C2 05
PDF
자료구조05
PDF
자료구조05
PDF
이산치7보고서
PDF
Data Structure - 1st Study
PDF
이산수학 C1 프로젝트 3
PDF
이산수학03
PPTX
RNC C++ lecture_2 operator, if
2012 Dm C2 05
자료구조05
자료구조05
이산치7보고서
Data Structure - 1st Study
이산수학 C1 프로젝트 3
이산수학03
RNC C++ lecture_2 operator, if

What's hot (20)

PDF
이산수학 C1 프로젝트 6
PDF
이산수학06
PPTX
RNC C++ lecture_5 Array
PDF
이산치5보고서
PPTX
C언어 세미나 - 함수
PDF
Tensorflow regression 텐서플로우 회귀
PDF
이산수학 C1 프로젝트 5
PPTX
Functional programming
PDF
Finding Functional Programming
PPTX
하스켈 프로그래밍 입문 2
PDF
이산수학05
PDF
자료구조 프로젝트
PDF
말의여행
PDF
하스켈 모나드
PDF
2012 Dm A0 02 Pdf
PDF
이산치2번
PDF
ALS WS에 대한 이해 자료
PDF
자료구조02
PDF
Project#2말의여행 Hwp
PDF
[Swift] Data Structure - Graph(BFS)
이산수학 C1 프로젝트 6
이산수학06
RNC C++ lecture_5 Array
이산치5보고서
C언어 세미나 - 함수
Tensorflow regression 텐서플로우 회귀
이산수학 C1 프로젝트 5
Functional programming
Finding Functional Programming
하스켈 프로그래밍 입문 2
이산수학05
자료구조 프로젝트
말의여행
하스켈 모나드
2012 Dm A0 02 Pdf
이산치2번
ALS WS에 대한 이해 자료
자료구조02
Project#2말의여행 Hwp
[Swift] Data Structure - Graph(BFS)
Ad

Similar to 2012 Dm C2 04 (20)

PDF
자료구조5보고서
PDF
Project#5 최단거리 찾기 D0 Hwp
PDF
2012 Ds A1 05
PDF
2012 Dm A0 04 Pdf
PDF
2012 Dm A0 04 Pdf
PPTX
DEVIEW-FULL-감독판.pptx
PDF
Project#5 통신망에서 길 찾기 Hwp
PDF
5통신망에서 길 찾기
PDF
4. stack
PPTX
파이썬 스터디 2주차
PDF
Basic git-commands
PDF
Es2015 Simple Overview
PDF
이산수학04
PDF
Javascript개발자의 눈으로 python 들여다보기
PPTX
Deview 2019 눈발자국
PDF
C++17 Key Features Summary - Ver 2
PDF
이산수학 C1 프로젝트 4
PPTX
Functional programming
PDF
2012 Dm A0 02 Pdf
PDF
자료구조(data structure)_NOTE 4. 스택(stack).pdf
자료구조5보고서
Project#5 최단거리 찾기 D0 Hwp
2012 Ds A1 05
2012 Dm A0 04 Pdf
2012 Dm A0 04 Pdf
DEVIEW-FULL-감독판.pptx
Project#5 통신망에서 길 찾기 Hwp
5통신망에서 길 찾기
4. stack
파이썬 스터디 2주차
Basic git-commands
Es2015 Simple Overview
이산수학04
Javascript개발자의 눈으로 python 들여다보기
Deview 2019 눈발자국
C++17 Key Features Summary - Ver 2
이산수학 C1 프로젝트 4
Functional programming
2012 Dm A0 02 Pdf
자료구조(data structure)_NOTE 4. 스택(stack).pdf
Ad

More from seonhyung (8)

PDF
2012 Ds A1 06
PDF
2012 Ds C2 06
PDF
2012 Ds B1 01
PDF
2012 Ds A1 06
PDF
2012 Ds A1 04
PDF
2012 Ds A1 03
PDF
2012 Dm D1 01
PDF
2012 Dm C2 03
2012 Ds A1 06
2012 Ds C2 06
2012 Ds B1 01
2012 Ds A1 06
2012 Ds A1 04
2012 Ds A1 03
2012 Dm D1 01
2012 Dm C2 03

2012 Dm C2 04

  • 1. 이산치 수학 결과 보고서 Project#4 Syntax of Language 과목 : 이산치 수학 담당교수님 : 차정원교수님 조원 : C2조 김선형, 김정훈, 김지환, 이태구
  • 2. 프로젝트 목표 그래프가 주어질 경우 MST(Minimum Spanning Tree)를 출력하는 프로그램 작성. 역할분담 조장 : 김선형 자료조사 : 김선형, 김정훈, 김지환 프로그래밍 : 이태구 프로젝트 일정 4/25 5/9 5/11 설계 및 역할분담 관련 자료 수집 프로그래밍
  • 3. <초안> #include <stdio.h> #include <stdlib.h> int main() { int *array,a,b; char c,d,e,f,g,h; c=65; d=66; e=c; printf("노드의 갯수 입력 : "); scanf("%d",&a); //노드의 수 //0을 입력하면 그래프가 없다고 생각함 array=(int*)malloc(sizeof(int)*(a*a)); for(b=0; b<(a*(a-1))/2; b++) { scanf("%s",&array[b]); } for(f=0; f<(a*(a-1))/2; f++) { for(g=f; g<(a*(a-1))/2; g++) { if(array[f]>array[g]) { h=array[f]; array[f]=array[g]; array[g]=h; } } } printf("결과n"); for(b=0; b<a-1; b++) { printf("%sn",array[b]); } }
  • 4. 초안에서는 크루스칼의 알고리즘의 순서인 우선 입력을 받고 오름차순을 정렬하여 다음 과 정인 사이클을 생성하면 두 정점을 포함 시키지 않고 생성 하지 않으면 두 정점을 포함시키 는 방법을 계속 하는 방식이 크루스칼의 알고리즘이다. 초안에서 대부분완성을 해두고 최종안에서는 깔끔하게 정리만 하려고 했으나 2단계인 사이 클을 정리하는 과정이 생각보다 까다로워서 초안에서는 오름차순으로만 정렬하고 깔끔하게 정리 하는것 까지 마무리시켰다. <최종안> #include <stdio.h> #include <stdlib.h> //크루스칼의 알고리즘을 이용하여 소스를 작성 int main() { int *array,a,b,c,d,sum=0; char e,f,g,h; printf("노드의 갯수 입력 : "); scanf("%d",&a); //노드의 수 //0을 입력하면 그래프가 없다고 생각함 array=(int*)malloc(sizeof(int)*a); c=65; d=66; e=c; for(b=0; b<(a*(a-1))/2; b++) { printf("%c%c : ",c,d); if(e+a-1!=d) { d=d+1; } else { c=c+1; d=c+1; } scanf("%d",&array[b]); } //그래프 성분입력
  • 5. for(f=0; f<(a*(a-1))/2; f++) { for(g=f; g<(a*(a-1))/2; g++) { if(array[f]>array[g]) { h=array[f]; array[f]=array[g]; array[g]=h; } } } //오름차순으로 정렬 for(b=0; b<a-1; b++) { if(array[b]>0) { printf("%dn",array[b]); if(array[b]==array[b+1]&&array[b+1]==array[b+2]) { a=a+1; b=b+1; } sum=array[b]+sum; } else { a=a+1; } } printf("MST의 비용의 합: %dn",sum); //사이클을 나타내는 부분을 제외하고 출력하는 부분 return 0; } 최종안에서는 초안에 있었던 내용을 바탕으로 크루스칼의 알고리즘인 사이클 생성 유무에 대해 포털사이트를 통해서 크루스칼 알고리즘에 대해 조금 더 자세히 알아보고 난 뒤 여러 가지 시행착오를 거치면서 최종적인 소스를 완성하였다. 홈페이지에 나와있는 출력방식이 아닌 다른 방식을 사용한 이유는 MST(최소신장트리)가 여러 가지 존재하는 경우의 수도 나올 수 있다고 생각해서 비용만 파악하더라도 MST를 쉽게 구분할 수 있게 하기 위해서 MST를 이루는 비용만 출력하였다
  • 6. 프로젝트 후 느낀 점 이번과제에도 시작부터 어려운 점이 많아 저번처럼 난항을 겪으면서 시작했는데 첫 번째로 대부분 과제를 받으면 문제는 대충 파악하고 시작하지만 이번에는 문제를 파악하고 어떤 알 고리즘을 사용할지도 막막한 과정에서 우선 MST에 대한 내용을 검색하다보면서 여러 가지 알고리즘을 공부하면서 소스를 작성할 때 쉽고 간편하게 작성할 수 있는 것으로 접근하면서 초안을 거치고 최종안까지 가면서 여러 가지 시도를 한 끝에 최종적인 소스를 완성하게 되 었다.