문제해결기법 위상정렬
리포트 > 자연과학
문제해결기법 위상정렬
한글
2012.03.07
8페이지
1. 문제해결기법 위상정렬.hwp
2. 문제해결기법 위상정렬.pdf
문제해결기법 위상정렬
[시작하는 말]

이번 과제는 위상정렬을 이용하여 다음 방향성비순환그래프(DAG)의 연결성분(Connected Component)을 찾는 프로그램을 완성하는 것이었다.

[전역 변수 부분]

int sorted[10][11] = {0,};
정렬 결과를 저장하는 2차원 배열이다. 문제에서는 연결 성분이 3개이지만 문제를 푸는 컴퓨터의 입장에서는 연결 성분이 몇 개인지 알 수 없다. 그래서 넉넉하게 10개까지 저장할 수 있도록 하였다. 한 성분 당 정점은 10개까지 저장 가능한데 11개의 공간을 준 이유는, 인덱스를 0부터 쓰는 것이 아니라 1부터 쓰기 때문이다.

int cnt_separation;
연결 성분의 개수를 세는 카운터이다. 위에서 설명했듯이, 문제를 푸는 컴퓨터의 입장에서는 연결 성분이 총 몇 개인지 알 수 없으므로 이 카운터를 전역변수로 만들어서 연결 성분이 증가할 때마다 카운터를 증가시켜서 총 개수를 얻는다.

[void topsort(graph* g) 함수에서 중요한 것들]

queue zeroin[10];
입력 차수가 0인 정점을 저장하는 배열이다. 연결 성분이 총 몇 개가 될지 알 수 없기 때문에 넉넉하게 10개를 잡았다.

int cnt_v=0;
주어진 그래프가 DAG인지 체크해서 오류 메시지를 출력하는데 필요한 카운터. 원래 책의 코드에서는 변수 j가 하던 일이었는데, 연결 성분이 달라질 때마다 j의 값도 달라지기 때문에 변수 j가 카운터로서의 역할을 할 수 없게 되었다. 그래서 cnt_v 라는 변수를 새롭게 만들었다.

for(i=0 ; i[cnt_separation ; i++)
각각의 연결 성분에 대해 위상정렬을 수행한다. 각 연결 성분마다 indegree가 0인 시작 정점이 있고, 각 정점들을 기준으로 인접한 정점들을 정렬해간다.

[void print_graph(graph *g) 함수에서 참고할 사항]

1. 그래프의 각 정점에서 연결된 다른 정점들을 출력. 연결된 것이 없으면 공백.
....
c프로그래밍 정렬 알고리즘에 대해 2025 한국앤컴퍼니 품질경영(신입) 면접족보, 1..
(고졸제한경쟁채용) 토목 호남권 자기소개서 가온칩스 공개채용 (3기 신입사원) 시스템반도..
2025 기아 AutoLand화성 생산운영 및 공정기술 .. [대한유화-면접] 공무관리(기계) 2025면접기출,..
수학과 일반편입 자기소개서(비동일계)와 면접.. 기초과학연구원 제2025-2회 중이온가속기연구소..
LG에너지솔루션 CPO-제품기술(전극) 자기소개서.. [A+][합격][학업계획서] 경북대학교 상담대학원..
전자공학 - 데이터구조 실험 [화일구조] 3원 다단계 합병 알고리즘 구현
[전자계산학] C언어 과제- 큰 수에서 작은 수로.. 인지행동치료기법(합리정서행동치료, 문제해결..
 
논리회로설계 - vhdl을 이용한..
[핵의학] IN VIVO TEST ; 체내..
생물학 실험 보고서 - 식물의 ..
(모두의 인공지능 퀴즈,기말 ..
(리부팅 인간중심 과학 중간,..
일반생물학 - 효소의 반응속도..