자료 구조와 알고리즘
작업 A~E에 'A는 C보다 앞', 'B는 C보다 앞', 'C는 D보다 앞', 'B는 E보다 앞', 'E는 D보다 앞'이라는 순서 제약이 있다. 모든 제약을 만족하는 작업의 순서(위상 정렬의 결과)는?
- AA, C, B, E, D
- BB, A, E, C, D
- CB, E, D, A, C
정답과 해설 보기
정답: B. B, A, E, C, D
B, A, E, C, D에서는 A와 B가 C보다 앞, C와 E가 D보다 앞, B가 E보다 앞으로, 5개의 제약을 모두 만족합니다. A, C, B, E, D는 B보다 먼저 C를 하고 있으므로 'B는 C보다 앞'에 어긋나고, B, E, D, A, C는 C보다 먼저 D를 하고 있으므로 'C는 D보다 앞'에 어긋납니다. 위상 정렬은 방향이 있고 사이클이 없는 그래프(DAG)에서 모든 간선이 앞에서 뒤로 향하도록 정점을 나열하는 조작으로, 들어오는 간선이 없는 정점부터 차례로 꺼내는 방법(칸 알고리즘)이나 깊이 우선 탐색으로 구할 수 있습니다. 답이 하나라고는 할 수 없으며, 이 예에서는 제약을 만족하는 순서가 5가지 있습니다.