문제해결기법 위상정렬
리포트 > 자연과학
문제해결기법 위상정렬
한글
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..
(고졸제한경쟁채용) 토목 호남권 자기소개서 [동진쎄미켐-면접] 반도체용 소재 공정관리(202..
2026 경농 생산(경농_생산) 신입 자기소개서 자.. 수학과 일반편입 자기소개서(비동일계)와 면접..
가온칩스 공개채용 (3기 신입사원) 시스템반도.. 기초과학연구원 제2025-2회 중이온가속기연구소..
[A+][합격][학업계획서] 경북대학교 상담대학원.. 전자공학 - 데이터구조 실험
[화일구조] 3원 다단계 합병 알고리즘 구현 인지행동치료기법(합리정서행동치료, 문제해결..
다각화된기업의관리,사업포트폴리오,BCG매트릭.. 기구개발 합격 자기소개서 (2)
 
일반물리학 실험 - 길이측정
(모두의 인공지능 퀴즈,기말 ..
논리회로설계 - vhdl을 이용한..
[핵의학] IN VIVO TEST ; 체내..
생물학 실험 보고서 - 식물의 ..
(리부팅 인간중심 과학 중간,..