12강. 트리
심화 · 약 15분 · 연습문제 6
요약
트리의 동치 조건, 뿌리 트리와 이진 트리, 신장 트리와 최소 신장 트리(크루스칼), 케일리 공식
회로가 없는 연결 그래프를 트리라 합니다. 폴더 구조, 가계도, 토너먼트 대진표, 결정 과정이 모두 트리입니다. 이 강에서는 트리의 성질, 이진 트리, 그리고 가장 싸게 모든 점을 잇는 최소 신장 트리를 찾는 알고리즘을 다룹니다.
트리는 회로가 없는 연결 그래프입니다. 가장 단순한 연결 구조라서 파일 시스템, 가계도, 결정 과정, 자료구조, 통신망 설계 등 곳곳에 나옵니다.
12.1 트리의 정의와 동치 조건
정의 12.1 (트리). 회로가 없는 연결 그래프를 트리(tree)라 합니다. 회로가 없는(연결되지 않아도 되는) 그래프를 숲(forest)이라 합니다. 트리에서 차수가 1인 꼭짓점을 잎(leaf)이라 합니다.
정리 12.2. 꼭짓점이 2개 이상인 트리에는 잎이 적어도 2개 있습니다.
증명. 트리에서 가장 긴 경로 를 잡습니다. 에 경로 밖의 이웃이 있으면 경로를 늘일 수 있고, 경로 안의 다른 이웃 ()가 있으면 회로가 생기므로, 의 이웃은 뿐입니다. 도 마찬가지입니다. □
정리 12.3. 꼭짓점이 개인 그래프 에 대해 다음은 모두 동치입니다.
- 는 트리입니다(연결, 회로 없음).
- 임의의 두 꼭짓점 사이에 경로가 정확히 하나 있습니다.
- 는 연결이고 변이 개입니다.
- 는 회로가 없고 변이 개입니다.
- 는 연결이지만, 어떤 변을 지워도 연결이 끊깁니다.
증명 (1 ⇒ 3). 에 대한 귀납법. 잎 하나와 그 변을 지우면 꼭짓점 개인 트리가 남고, 귀납 가정으로 변이 개입니다. 지운 변을 더하면 개입니다. □
나머지도 비슷하게 보입니다. 핵심은 “트리는 연결을 유지하는 가장 적은 변(개)이면서 회로 없이 넣을 수 있는 가장 많은 변”이라는 것입니다.
따름정리 12.4. 성분이 개인 숲은 변이 개입니다.
12.2 뿌리 트리와 이진 트리
정의 12.5. 꼭짓점 하나를 뿌리로 정한 트리를 뿌리 트리(rooted tree)라 합니다. 뿌리에서 로 가는 경로에서 바로 앞의 꼭짓점이 의 부모, 가 부모인 꼭짓점이 의 자식입니다. 뿌리에서 가장 먼 꼭짓점까지의 거리를 높이라 합니다.
정의 12.6. 모든 꼭짓점의 자식이 2개 이하인 뿌리 트리를 이진 트리(binary tree), 잎이 아닌 모든 꼭짓점의 자식이 정확히 2개인 것을 완전 이진 트리(full)라 합니다.
정리 12.7. 높이 인 이진 트리의 잎은 개 이하입니다. 그러므로 잎이 개이면 높이는 이상입니다.
증명. 깊이 의 꼭짓점은 개 이하입니다(깊이마다 많아야 두 배). 잎은 깊이 이하에 있고, 깊이 의 꼭짓점 하나가 차지할 수 있는 잎 수를 세면 개 이하입니다. □
이 정리는 “비교로 정렬하는 알고리즘은 최악에 약 번 비교해야 한다”는 하한의 근거입니다. 가능한 순서 가지가 결정 트리의 잎이기 때문입니다.
정리 12.8. 내부 꼭짓점이 개인 완전 이진 트리는 잎이 개, 꼭짓점이 개입니다.
증명. 뿌리를 뺀 모든 꼭짓점은 어떤 내부 꼭짓점의 자식이고, 내부 꼭짓점마다 자식이 2개이므로 꼭짓점은 개입니다. 잎은 개입니다. □
예를 들어 팀의 토너먼트(완전 이진 트리, 잎이 팀)는 경기(내부 꼭짓점)가 번입니다.
12.3 신장 트리
정의 12.9. 연결 그래프 의 모든 꼭짓점을 포함하는 부분그래프 가운데 트리인 것을 신장 트리(spanning tree)라 합니다.
정리 12.10. 모든 연결 그래프에는 신장 트리가 있습니다.
증명. 회로가 있으면 그 위의 변 하나를 지워도 연결이 유지됩니다(회로의 나머지가 대신 이어 줍니다). 회로가 없어질 때까지 되풀이하면 신장 트리가 남습니다. □
12.4 최소 신장 트리
변마다 비용(가중치)이 있을 때, 모든 꼭짓점을 잇는 비용이 가장 작은 신장 트리를 최소 신장 트리(minimum spanning tree)라 합니다. 마을들을 최소 비용의 도로망으로 잇는 문제입니다.
정리 12.11 (크루스칼 알고리즘). 변을 비용이 작은 것부터 보며, 이미 고른 변들과 회로를 만들지 않으면 고릅니다. 개를 고르면 멈춥니다. 이렇게 얻은 트리는 최소 신장 트리입니다.
증명 개요. 매 단계에서 고른 변들이 어떤 최소 신장 트리 에 들어 있다고 합시다(처음에는 빈 집합이므로 참). 다음에 고른 변 가 에 없으면, 에 를 더하면 회로가 생기고, 그 회로에는 아직 고르지 않은 변 이 있으며 의 비용은 이상입니다. 에서 을 로 바꾸면 비용이 늘지 않는 신장 트리가 되므로 여전히 최소입니다. □
예제 12.12. 꼭짓점 와 변의 비용 , , , , , .
| 차례 | 변 | 비용 | 판단 |
|---|---|---|---|
| 1 | 1 | 고름 | |
| 2 | 2 | 고름 | |
| 3 | 3 | 회로 → 버림 | |
| 4 | 4 | 고름 (3개, 끝) |
최소 비용은 입니다.
12.5 케일리 공식
정리 12.13 (케일리 공식). 꼭짓점에 의 이름이 붙은 트리는 개입니다. 곧 의 신장 트리는 개입니다.
이면 개(가운데 꼭짓점을 고르는 방법), 이면 개입니다. 증명은 트리를 길이 인 수열(프뤼퍼 코드)과 일대일로 대응시켜 합니다. 잎 가운데 번호가 가장 작은 것을 지우며 그 이웃의 번호를 적는 것을 번 되풀이합니다.
쓰이는 곳. 결정 트리와 랜덤 포레스트(머신러닝), 이진 탐색 트리와 힙(자료구조), 파싱 트리(컴파일러), 계통수(생물학), 네트워크 설계(최소 신장 트리)가 이 강의 대상입니다.
12.6 이 장의 요약
- 트리 ⟺ 연결 + 회로 없음 ⟺ 연결 + 변 개 ⟺ 경로가 유일.
- 높이 이진 트리의 잎 . 완전 이진 트리: 잎 = 내부 + 1.
- 크루스칼: 싼 변부터, 회로를 만들면 버림. 이름 붙은 트리 개.
문제
12.1 [계산] · 확인 문제
꼭짓점이 25개인 트리의 변은 몇 개일까요?
정답
24
풀이
정리 12.3으로 개입니다.
12.2 [계산] · 확인 문제
64팀이 단판 토너먼트를 치르면 우승팀이 정해질 때까지 몇 경기가 필요할까요?
정답
63
풀이
잎이 64개인 완전 이진 트리의 내부 꼭짓점은 개입니다(정리 12.8). 경기마다 한 팀씩 탈락하고 63팀이 탈락해야 한다고 세어도 같습니다.
12.3 [계산] · 확인 문제
꼭짓점 와 변의 비용이 , , , , , , , 일 때 최소 신장 트리의 비용은?
힌트 1
크루스칼: , , 를 고른 뒤, 다음으로 싼 변이 회로를 만드는지 봅니다.
정답
10
풀이
, , 를 고르고, 는 회로 를 만드므로 버리고, 를 고르면 4개가 되어 끝납니다. 비용은 입니다.
12.4 [계산]
꼭짓점에 1부터 5까지 이름이 붙은 트리는 몇 개일까요?
정답
125
풀이
케일리 공식으로 개입니다.
12.5 [계산]
1000개의 원소를 비교로 정렬하는 결정 트리의 높이(최악의 비교 횟수)는 적어도 얼마일까요? 을 구합니다.
정답
8530
풀이
이므로 적어도 8530번입니다. 병합 정렬의 약 번이 이 하한에 가깝습니다.
12.6 [증명]
트리에 변을 하나 더하면 회로가 정확히 하나 생김을 보입니다.
풀이
새 변 를 더한다고 합시다. 트리에서 와 사이 경로는 정확히 하나입니다(정리 12.3). 그 경로에 새 변을 이으면 회로가 됩니다. 새로 생긴 회로는 반드시 새 변을 지나고, 새 변을 뺀 나머지는 와 를 잇는 트리의 경로이므로 유일합니다. 그러므로 회로는 하나뿐입니다.