Click here to load reader
Upload
steve-hansol-kim
View
1.609
Download
3
Embed Size (px)
Citation preview
1. 경로 길이 (Path Length)
2. 완전 t진 트리 (Complete t-ary Tree)
3. 가중 경로 길이 (Weighted Path Length) 와
최적 검색 절차 (Optimal Search Procedure)
목 록
1. 경로 길이 (Path Length)
2. 완전 t진 트리 (Complete t-ary Tree)
3. 가중 경로 길이 (Weighted Path Length) 와
최적 검색 절차 (Optimal Search Procedure)
목 록
1. 경로 길이 (Path Length)
• 알고리즘 분석에서 매우 중요 (수행시간)
• 특히 이진트리는 실제 컴퓨터 표현과 매우 근접
1. 경로 길이 (Path Length)
• 알고리즘 분석에서 매우 중요 (수행시간)
• 특히 이진트리는 실제 컴퓨터 표현과 매우 근접
Binary Tree Extended Binary Tree
NULL
내부 노드 n 개, 외부 노드(NULL) s 개
변의 개수 : n + s – 1 = 2n
∴ s = n + 1 (n = 0 일때도 성립)
Extended Binary Tree
외부 경로 길이 : 루트에서 모든 외부 노드 각각 경로 길이의 합
Ex) 아래 그림에서,
외부 경로 길이 E = 3 + 3 + 2 + 3 + 4 + 4 + 3 + 3 = 25
Extended Binary Tree
내부 경로 길이 : 루트에서 모든 내부 노드 각각 경로 길이의 합
Ex) 아래 그림에서,
외부 경로 길이 I = 2 + 1 + 0 +2 + 3 + 1 + 2 = 11
Extended Binary Tree
E = I + 2n (n 은 내부 노드 수)
증명) 경로 길이 k, 자식 노드가 모두 외부 노드, 내부 노드 V 삭제,
E’ = (E – 2(k + 1)) + k = E – k - 2
I’ = I - k
V
Extended Binary Tree
Skewed(Degenerated) Tree 는
내부 경로 길이가 가장 크다.
I = (n - 1) + (n - 2) + … + 1 + 0
= (n2 – n) / 2
Skewed Binary Tree
모든 이진트리들에 대한
“평균 경로 길이” 는 n√n 에 근본적으로 비례한다.
모든 이진트리들에 대한
“평균 경로 길이” 는 n√n 에 근본적으로 비례한다.
……….
왜 그럴까요?
1. 경로 길이 (Path Length)
2. 완전 t진 트리 (Complete t-ary Tree)
3. 가중 경로 길이 (Weighted Path Length) 와
최적 검색 절차 (Optimal Search Procedure)
목 록
2. 완전 t 진 트리 (Complete t-ary Tree)
• 최소 경로 길이를 가지는 노드 n 개의 t진 트리
• 특히 완전 이진 트리는 여러 알고리즘들의 계산
시간을 최소화 함
이진 트리의 내부 경로 길이
I ≥ ∑└ log2k ┘ = (n +1)q – 2q+1 + 2,
q =└ log2(n+1) ┘
⁞
q = log2n + O(1)
∴ 최적값 = nlog2n + O(n)
n
k=1
2. 완전 t 진 트리 (Complete t-ary Tree)
• 위의 최적값 nlog2n + O(n) 을 가지는 이진 트리가
완전 이진트리(Complete Binary Tree)
• 자식을 t 로 확장하면 완전 t 진 트리 (단, t ≥ 2)
1
32
76
1
5
1
4
1
3
t =2, n = 12 인 완전 이진트리
4
98
5
1
1
1
0
1
61
7
1
8
1
9
2
02
1
2
2
2
3
1
2
2
4
2
5
노드 k 의 부모 : └ k / 2 ┘
노드 k 의 자식 : 2k, 2k + 1
외부 노드 번호 : n + 1 ~ 2n + 1
위의 식을 일반화 시켜서
완전 t진 트리에 적용되는 식은?
노드 k 의 부모 : └ (k + t – 2) / t ┘ = ┌ (k – 1) / t ┐
노드 k 의 자식 : t(k – 1) + 2, t(k – 1) + 3, … , tk + 1
1. 경로 길이 (Path Length)
2. 완전 t진 트리 (Complete t-ary Tree)
3. 가중 경로 길이 (Weighted Path Length) 와
최적 검색 절차 (Optimal Search Procedure)
목 록
3-1. 가중 경로 길이 (Weighted Path Length)
• m 개의 실수 ω1, ω2, … , ωm (가중치) 를 외부 노드에 부여해 그
합 ∑ ωj lj 를 가중 경로 길이라 한다. (lj 는 경로 길이)
3-1. 가중 경로 길이 (Weighted Path Length)
• m 개의 실수 ω1, ω2, … , ωm (가중치) 를 외부 노드에 부여해 그
합 ∑ ωj lj 를 가중 경로 길이라 한다. (lj 는 경로 길이)
32
4
1
1
1
14
3
2
1
143 2
8+6+9+11 = 34 6+12+33+2 = 53 6+4+8+22 = 40
3-1. 가중 경로 길이 (Weighted Path Length)
• Banlanced Tree 가 최소 가중 경로 길이를 갖지는 않는다.
• 단, 가중치가 모두 1로 같다면 Balanced Tree 가 최소의 가중
경로길이를 갖는다.
32
4
1
1
1
14
3
2
1
143 2
8+6+9+11 = 34 6+12+33+2 = 53 6+4+8+22 = 40
3-2. 최적 검색 절차 (Optimal Search Procedure)
• 가중 경로 길이가 최소인 트리를 찾는 알고리즘
• 대표적으로 D. Huffman 의 우아한(?) 알고리즘.
32
4
1
1
1
14
3
2
1
143 2
8+6+9+11 = 34 6+12+33+2 = 53 6+4+8+22 = 40
이 트리를 찾는 방법
D. Hoffman 알고리즘
• 최소 가중 평균 길이를 가지는 트리를 찾는 알고리즘
• 주로 MPEG, JPG 등 영상, 이미지 압축에 많이 쓰인다.
• 흔히 쓰는 알집에서도 사용.
D. Hoffman 알고리즘
Step 1. 가중치 리스트를 오름차순으로 정렬한다.
Step 2. 가중치 리스트에서 가장 작은 두 값을 찾는다.
Step 3. 작은 두 값을 더한 뒤, 더한 값을 부모 노드로 갖고
작은 두 값을 자식으로 갖는 노드로 치환한다.
Step 4. 반복.
D. Hoffman 알고리즘
Step 1. 가중치 리스트를 오름차순으로 정렬한다.
List (2, 11, 5, 13, 3, 17, 7)
List (2, 3, 5, 7, 11, 13, 17)
D. Hoffman 알고리즘
Step 2. 가중치 리스트에서 가장 작은 두 값을 찾는다.
List (2, 3, 5, 7, 11, 13, 17)
List (2, 3, 5, 7, 11, 13, 17)
D. Hoffman 알고리즘
Step 3. 작은 두 값을 더한 뒤, 더한 값을 부모 노드로 갖고
작은 두 값을 자식으로 갖는 노드로 치환한다.
List (5, 5, 7, 11, 13, 17)
5
32
D. Hoffman 알고리즘
Step 4. 반복
⁞
⁞
⁞
⁞
⁞
⁞
D. Hoffman 알고리즘
5
32
10
5
17
7
24
1311
34
17
58
D. Hoffman 알고리즘
5
32
10
5
17
7
24
1311
34
17
58
결국 최소값만 찾아서 더해
가장 최소 가중치를 갖는
트리를 구축한다는 소리
끝.