위상 정렬 정리, 진입 차수로 선후 관계를 줄 세우는 카흔 알고리즘과 사이클 판별

자료구조를 들어야 알고리즘을 들을 수 있고, 라이브러리 A를 빌드해야 B를 빌드할 수 있습니다. 이렇게 먼저 해야 하는 일이 정해진 작업들을 모순 없이 한 줄로 세우는 것이 위상 정렬입니다. 정보처리기사 그래프 문제, 프로젝트 일정 관리(선후행 관계)와 연결되는 토픽입니다.

위상 정렬은 방향 그래프의 모든 간선 방향을 지키는 정점 순서

정의: 방향 비순환 그래프(DAG)에서 모든 간선 u → v에 대해 u가 v보다 앞에 오도록 정점을 나열하는 것입니다. 사이클이 있으면 위상 정렬은 존재하지 않습니다.

  • 핵심 키워드: DAG, 진입 차수(In-degree), 카흔 알고리즘, DFS 후위 순서, 사이클 판별
  • 결과는 하나가 아닐 수 있음: 동시에 시작할 수 있는 정점이 여럿이면 여러 정답이 가능합니다.

카흔 알고리즘은 진입 차수 0인 정점부터 꺼낸다

  1. 모든 정점의 진입 차수(들어오는 간선 수)를 센다.
  2. 진입 차수가 0인 정점을 큐에 넣는다.
  3. 큐에서 정점을 꺼내 결과에 추가하고, 그 정점에서 나가는 간선을 지우며 도착 정점의 진입 차수를 1씩 줄인다.
  4. 새로 진입 차수가 0이 된 정점을 큐에 넣고, 큐가 빌 때까지 반복한다.
  5. 결과에 들어간 정점 수가 전체보다 적으면 사이클이 있는 것이다.

선수 과목 예시로 직접 따라가 보기

빨간 숫자가 카흔 알고리즘으로 얻은 순서입니다. 처음 진입 차수 0인 정점은 이산수학과 프로그래밍입니다.
단계 꺼낸 정점 진입 차수가 0이 되어 큐에 들어간 정점
초기 – 이산수학, 프로그래밍
1 이산수학 없음(알고리즘은 아직 1)
2 프로그래밍 자료구조, 운영체제
3 자료구조 알고리즘, 데이터베이스
4 운영체제 네트워크
5 알고리즘 없음(인공지능은 아직 1)
6 데이터베이스 인공지능
7~8 네트워크, 인공지능 –

결과는 이산수학 → 프로그래밍 → 자료구조 → 운영체제 → 알고리즘 → 데이터베이스 → 네트워크 → 인공지능입니다(코드로 검산). 큐에 넣는 순서를 바꾸면 프로그래밍을 먼저 꺼내는 등 다른 정답도 가능합니다.

카흔 방식과 DFS 방식 비교

구분 카흔(Kahn, 1962) DFS 기반
원리 진입 차수 0인 정점을 큐로 처리 DFS 종료 순서(후위)를 뒤집음
사이클 판별 처리된 정점 수가 V보다 적으면 사이클 탐색 중 방문 중인 정점을 다시 만나면(역방향 간선) 사이클
복잡도 O(V+E) O(V+E)
장점 동시에 시작 가능한 작업 묶음을 단계별로 파악하기 쉬움 재귀로 간결하게 구현

답안에서 놓치기 쉬운 포인트

  • 위상 정렬은 정렬 알고리즘(퀵·병합 정렬)과 무관한 그래프 알고리즘입니다.
  • 무방향 그래프나 사이클이 있는 그래프에는 정의되지 않는다는 전제를 꼭 쓰세요.
  • 활용: 빌드 시스템의 의존성 해결, 패키지 설치 순서, 스프레드시트 셀 재계산 순서, 프로젝트 일정의 선후행 관계(CPM 계산의 전 단계).

시험 직전 한 줄 요약

위상 정렬은 DAG에서 간선 방향을 지키는 정점 순서이며, 카흔 알고리즘은 진입 차수 0인 정점을 큐로 꺼내 O(V+E)에 구하고, 남는 정점이 있으면 사이클입니다.

학습용 정리이며 실제 시험 문항과 다를 수 있습니다. 출제 기준은 큐넷 공지를 확인하세요. 그림은 이해를 돕기 위한 개념도와 예시입니다.

zerg96

Recent Posts

불균형 데이터 처리, 정확도 98%인데 쓸모없는 모델이 되는 이유와 SMOTE·클래스 가중치 비교 (빅데이터분석기사)

환자 1,000명 중 암 환자가 20명뿐인 데이터로 모델을 만들었는데 정확도가 98%라면 훌륭한 모델일까? 안타깝게도 "모두…

53분 ago

결합도와 응집도 정리, 모듈 설계에서 낮은 결합·높은 응집이 정답인 이유 (정보처리기사)

코드를 고칠 때 한 군데만 바꿨는데 엉뚱한 곳이 줄줄이 깨진 경험이 있다면, 그것이 결합도가 높은…

53분 ago

세마포어와 뮤텍스 차이, P·V 연산과 생산자-소비자 문제로 이해하는 동기화 (정보처리기사)

두 스레드가 같은 변수를 동시에 고치면 결과가 실행할 때마다 달라진다. 이 문제를 푸는 도구가 세마포어와…

53분 ago

커버로스(Kerberos) 인증 흐름 정리, AS·TGS·티켓 6단계와 비밀번호를 보내지 않는 이유 (정보보안기사)

사내 시스템에 한 번 로그인했는데 파일 서버, 메일, 인트라넷이 비밀번호를 다시 묻지 않는다면 뒤에서 커버로스(Kerberos)가…

53분 ago

B-Tree 인덱스 원리와 인덱스를 못 타는 조건, 1억 건 중 한 건을 5블록으로 찾는 계산 (SQLD)

"인덱스를 만들었는데 왜 안 타요?" SQL 튜닝에서 가장 자주 나오는 질문이다. 답을 알려면 인덱스가 어떤…

53분 ago

2026년 11월 금융 DT 테스트 시험 일정 (접수·시험·발표)

11월에 일정이 있는 금융 DT 테스트 시험을 정리했습니다. 접수, 시험, 합격 발표 날짜를 한 번에…

3시간 ago