32

Click here to load reader

110528 taocp 2345

Embed Size (px)

Citation preview

Page 1: 110528 taocp 2345

2.3.4.5 경로 길이[ The Art of Computer Programming ]

아.꿈.사 Study2011. 05. 28

김한솔[email protected]

Page 2: 110528 taocp 2345

1. 경로 길이 (Path Length)

2. 완전 t진 트리 (Complete t-ary Tree)

3. 가중 경로 길이 (Weighted Path Length) 와

최적 검색 절차 (Optimal Search Procedure)

목 록

Page 3: 110528 taocp 2345

1. 경로 길이 (Path Length)

2. 완전 t진 트리 (Complete t-ary Tree)

3. 가중 경로 길이 (Weighted Path Length) 와

최적 검색 절차 (Optimal Search Procedure)

목 록

Page 4: 110528 taocp 2345

1. 경로 길이 (Path Length)

• 알고리즘 분석에서 매우 중요 (수행시간)

• 특히 이진트리는 실제 컴퓨터 표현과 매우 근접

Page 5: 110528 taocp 2345

1. 경로 길이 (Path Length)

• 알고리즘 분석에서 매우 중요 (수행시간)

• 특히 이진트리는 실제 컴퓨터 표현과 매우 근접

Binary Tree Extended Binary Tree

NULL

Page 6: 110528 taocp 2345

내부 노드 n 개, 외부 노드(NULL) s 개

변의 개수 : n + s – 1 = 2n

∴ s = n + 1 (n = 0 일때도 성립)

Extended Binary Tree

Page 7: 110528 taocp 2345

외부 경로 길이 : 루트에서 모든 외부 노드 각각 경로 길이의 합

Ex) 아래 그림에서,

외부 경로 길이 E = 3 + 3 + 2 + 3 + 4 + 4 + 3 + 3 = 25

Extended Binary Tree

Page 8: 110528 taocp 2345

내부 경로 길이 : 루트에서 모든 내부 노드 각각 경로 길이의 합

Ex) 아래 그림에서,

외부 경로 길이 I = 2 + 1 + 0 +2 + 3 + 1 + 2 = 11

Extended Binary Tree

Page 9: 110528 taocp 2345

E = I + 2n (n 은 내부 노드 수)

증명) 경로 길이 k, 자식 노드가 모두 외부 노드, 내부 노드 V 삭제,

E’ = (E – 2(k + 1)) + k = E – k - 2

I’ = I - k

V

Extended Binary Tree

Page 10: 110528 taocp 2345

Skewed(Degenerated) Tree 는

내부 경로 길이가 가장 크다.

I = (n - 1) + (n - 2) + … + 1 + 0

= (n2 – n) / 2

Skewed Binary Tree

Page 11: 110528 taocp 2345

모든 이진트리들에 대한

“평균 경로 길이” 는 n√n 에 근본적으로 비례한다.

Page 12: 110528 taocp 2345

모든 이진트리들에 대한

“평균 경로 길이” 는 n√n 에 근본적으로 비례한다.

……….

왜 그럴까요?

Page 13: 110528 taocp 2345

1. 경로 길이 (Path Length)

2. 완전 t진 트리 (Complete t-ary Tree)

3. 가중 경로 길이 (Weighted Path Length) 와

최적 검색 절차 (Optimal Search Procedure)

목 록

Page 14: 110528 taocp 2345

2. 완전 t 진 트리 (Complete t-ary Tree)

• 최소 경로 길이를 가지는 노드 n 개의 t진 트리

• 특히 완전 이진 트리는 여러 알고리즘들의 계산

시간을 최소화 함

Page 15: 110528 taocp 2345

이진 트리의 내부 경로 길이

I ≥ ∑└ log2k ┘ = (n +1)q – 2q+1 + 2,

q =└ log2(n+1) ┘

q = log2n + O(1)

∴ 최적값 = nlog2n + O(n)

n

k=1

Page 16: 110528 taocp 2345

2. 완전 t 진 트리 (Complete t-ary Tree)

• 위의 최적값 nlog2n + O(n) 을 가지는 이진 트리가

완전 이진트리(Complete Binary Tree)

• 자식을 t 로 확장하면 완전 t 진 트리 (단, t ≥ 2)

Page 17: 110528 taocp 2345

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

Page 18: 110528 taocp 2345

위의 식을 일반화 시켜서

완전 t진 트리에 적용되는 식은?

노드 k 의 부모 : └ (k + t – 2) / t ┘ = ┌ (k – 1) / t ┐

노드 k 의 자식 : t(k – 1) + 2, t(k – 1) + 3, … , tk + 1

Page 19: 110528 taocp 2345

1. 경로 길이 (Path Length)

2. 완전 t진 트리 (Complete t-ary Tree)

3. 가중 경로 길이 (Weighted Path Length) 와

최적 검색 절차 (Optimal Search Procedure)

목 록

Page 20: 110528 taocp 2345

3-1. 가중 경로 길이 (Weighted Path Length)

• m 개의 실수 ω1, ω2, … , ωm (가중치) 를 외부 노드에 부여해 그

합 ∑ ωj lj 를 가중 경로 길이라 한다. (lj 는 경로 길이)

Page 21: 110528 taocp 2345

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

Page 22: 110528 taocp 2345

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

Page 23: 110528 taocp 2345

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

이 트리를 찾는 방법

Page 24: 110528 taocp 2345

D. Hoffman 알고리즘

• 최소 가중 평균 길이를 가지는 트리를 찾는 알고리즘

• 주로 MPEG, JPG 등 영상, 이미지 압축에 많이 쓰인다.

• 흔히 쓰는 알집에서도 사용.

Page 25: 110528 taocp 2345

D. Hoffman 알고리즘

Step 1. 가중치 리스트를 오름차순으로 정렬한다.

Step 2. 가중치 리스트에서 가장 작은 두 값을 찾는다.

Step 3. 작은 두 값을 더한 뒤, 더한 값을 부모 노드로 갖고

작은 두 값을 자식으로 갖는 노드로 치환한다.

Step 4. 반복.

Page 26: 110528 taocp 2345

D. Hoffman 알고리즘

Step 1. 가중치 리스트를 오름차순으로 정렬한다.

List (2, 11, 5, 13, 3, 17, 7)

List (2, 3, 5, 7, 11, 13, 17)

Page 27: 110528 taocp 2345

D. Hoffman 알고리즘

Step 2. 가중치 리스트에서 가장 작은 두 값을 찾는다.

List (2, 3, 5, 7, 11, 13, 17)

List (2, 3, 5, 7, 11, 13, 17)

Page 28: 110528 taocp 2345

D. Hoffman 알고리즘

Step 3. 작은 두 값을 더한 뒤, 더한 값을 부모 노드로 갖고

작은 두 값을 자식으로 갖는 노드로 치환한다.

List (5, 5, 7, 11, 13, 17)

5

32

Page 29: 110528 taocp 2345

D. Hoffman 알고리즘

Step 4. 반복

Page 30: 110528 taocp 2345

D. Hoffman 알고리즘

5

32

10

5

17

7

24

1311

34

17

58

Page 31: 110528 taocp 2345

D. Hoffman 알고리즘

5

32

10

5

17

7

24

1311

34

17

58

결국 최소값만 찾아서 더해

가장 최소 가중치를 갖는

트리를 구축한다는 소리

Page 32: 110528 taocp 2345

끝.