그래프 모양이 나무를 거꾸로 세워놓은 것처럼 생겼다고 하여 불리는 이름인 트리(Tree)또는 수형도는 그래프의 특별한 형태로서 컴퓨터를 통한 자료 처리와 응용에 매우 중요한 역할을 한다.
트리: 하나 이상의 노드로 구성된 유한 집합으로서 2가지 조건 만족
⑴ 특별히 지정된 노드인 루트(root) 존재
⑵ 나머지 노드들은 다시 각각 트리이면서 연결되지 않는 서브 트리(subtree) T₁, T₂, …, Tₙ (n >= 0) 으로 이루어짐
→ n개의 노드를 가진 트리는 n - 1개의 연결선 보유
→ 그래프 G = (V, E)에서 |V| = n이고 |E| = m일 때 다음의 문장들은 모두 동치
① G는 트리
② G는 연결되어 있고 m = n - 1
③ G는 연결되어 있고 어느 한 연결선만을 제거하더라도 연결되지 않음
④ G는 사이클을 가지지 않으며 m = n - 1
⑤ G는 어느 한 연결선만 추가하더라도 사이클을 형성하게 됨
n-트리(n-ary tree): 모든 중간 노드들이 최대 n개의 자식 노드를 가질 때, n이 2인 경우를 이진 트리(binary tree)라고 함
→ 이진 트리는 공집합이거나, 루트와 좌측 서브 트리, 우측 서브 트리로 이루어짐
→ 이진 트리가 레벨 i에서 가질 수 있는 최대한의 노드 수는 2^i개이며, 높이가 k인 이진 트리가 가질 수 있는 최대한의 전체 노드 수는 (2^k+1) - 1이다.

⑴ 전순위 탐방(preorder traversal): 루트에서 시작
① 노드를 탐방하고 데이터를 프린트
② 트리의 좌측 서브트리 탐방
③ 트리의 우측 서브트리 탐방
⑵ 중순위 탐방(inorder traversal): 루트에서 시작
① 트리의 좌측 서브트리 탐방
② 노드를 방문하고 데이터를 프린트
③ 트리의 우측 서브트리 탐방
⑶ 후순위 탐방(postorder traversal): 루트에서 시작
① 트리의 좌측 서브트리 탐방
② 트리의 우측 서브트리 탐방
③ 노드를 탐방하고 데이터를 프린트

생성 트리(spanning tree): 어떤 그래프에서 모든 노드들을 포함하는 트리
→ 생성 트리의 비용은 트리 연결선의 값을 모두 합한 값
→ 최소 비용 생성 트리(Minimum Spanning Tree, MST)는 최소한의 비용만을 가짐
트리에 대한 대표적인 알고리즘은 다음과 같다.
프림의 알고리즘: 주어진 가중 그래프 G = (V, E)에 V = {1, 2, …, n}이라고 하자.
⑴ 노드의 집합 U를 1로 시작한다.
⑵ u ∈ U, v ∈ V - U일 때 U와 V를 연결하는 가장 짧은 연결선인 (u, v)를 찾아서 v를 U에 포함시킨다. 이때 (u, v)는 사이클을 형성하지 않아야 한다.
⑶ ⑵의 과정을 U = V가 될 때까지 반복한다.

크루스칼의 알고리즘: 주어진 가중 그래프 G = (V, E)에 V = {1, 2, …, n}이라고 하고 T를 연결선의 집합이라고 하자.
⑴ T를 ∅으로 놓는다.
⑵ 연결선의 집합 E를 비용이 적은 순서로 정렬한다.
⑶ 가장 최솟값을 가진 연결선 (u, v)를 차례로 찾아서 (u, v)가 사이클을 이루지 않으면 (u, v)를 T에 포함시킨다.
⑷ ⑶의 과정을 |T| = |V| - 1일 때까지 반복한다.
→ 연결선들을 비용이 적은 순서대로 나열하고, 연결선을 제거한 그래프에서 연결선의 비용이 적은 연결선의 순서대로 사이클이 생기지 않도록 나열하는 방법

'Study > 이산수학' 카테고리의 다른 글
| 이산수학 [4] <그래프> (0) | 2025.11.20 |
|---|---|
| 이산수학 [3] <증명법> (0) | 2025.10.19 |
| 이산수학 [2] <집합론> (0) | 2025.10.18 |
| 이산수학 [1] <논리와 명제> (0) | 2025.10.14 |




