• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
이산치4보고서
 

이산치4보고서

on

  • 212 views

 

Statistics

Views

Total Views
212
Views on SlideShare
212
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    이산치4보고서 이산치4보고서 Document Transcript

    • 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