Successfully reported this slideshow.

110528 taocp 2345

2,110 views

Published on

  • Be the first to comment

  • Be the first to like this

110528 taocp 2345

  1. 1. [ The Art of Computer Programming ]<br />2.3.4.5 경로 길이<br />아.꿈.사 Study<br />2011. 05. 28<br />김한솔<br />itsfitsol@gmail.com<br />
  2. 2. 목 록<br />경로 길이 (Path Length)<br />완전 t진 트리 (Complete t-ary Tree)<br />가중 경로 길이 (Weighted Path Length) 와<br />최적 검색 절차 (Optimal Search Procedure)<br />
  3. 3. 목 록<br />경로 길이 (Path Length)<br />완전 t진 트리 (Complete t-ary Tree)<br />가중 경로 길이 (Weighted Path Length) 와<br />최적 검색 절차 (Optimal Search Procedure)<br />
  4. 4. 1. 경로 길이 (Path Length)<br /><ul><li>알고리즘 분석에서 매우 중요 (수행시간)
  5. 5. 특히 이진트리는 실제 컴퓨터 표현과 매우 근접</li></li></ul><li>1. 경로 길이 (Path Length)<br /><ul><li>알고리즘 분석에서 매우 중요 (수행시간)
  6. 6. 특히 이진트리는 실제 컴퓨터 표현과 매우 근접</li></ul>Binary Tree<br />Extended Binary Tree<br />NULL<br />
  7. 7. 내부 노드n개, 외부 노드(NULL) s개<br />변의 개수 : n + s – 1 = 2n<br />∴ s = n + 1 (n = 0 일때도 성립)<br />Extended Binary Tree<br />
  8. 8. 외부 경로 길이 : 루트에서 모든 외부 노드 각각 경로 길이의 합<br />Ex) 아래 그림에서,<br />외부 경로 길이 E = 3 + 3 + 2 + 3 + 4 + 4 + 3 + 3 = 25<br />Extended Binary Tree<br />
  9. 9. 내부 경로 길이 : 루트에서 모든 내부 노드 각각 경로 길이의 합<br />Ex) 아래 그림에서,<br />외부 경로 길이 I = 2 + 1 + 0 +2 + 3 + 1 + 2 = 11<br />Extended Binary Tree<br />
  10. 10. E = I + 2n (n 은 내부 노드 수)<br />증명) 경로 길이 k, 자식 노드가 모두 외부 노드, 내부 노드V 삭제,<br />E’ = (E – 2(k + 1)) + k = E – k - 2<br />I’ = I - k<br />Extended Binary Tree<br />V<br />
  11. 11. Skewed(Degenerated) Tree 는<br />내부 경로 길이가 가장 크다.<br />I = (n - 1) + (n - 2) + … + 1 + 0<br />= (n2 – n) / 2<br />Skewed Binary Tree<br />
  12. 12. 모든 이진트리들에 대한<br />“평균경로 길이” 는 n√n에근본적으로 비례한다.<br />
  13. 13. 모든 이진트리들에 대한<br />“평균경로 길이” 는 n√n에근본적으로 비례한다.<br />……….<br />왜 그럴까요?<br />
  14. 14. 목 록<br />경로 길이 (Path Length)<br />완전 t진 트리 (Complete t-ary Tree)<br />가중 경로 길이 (Weighted Path Length) 와<br />최적 검색 절차 (Optimal Search Procedure)<br />
  15. 15. 2. 완전 t 진 트리 (Complete t-ary Tree)<br /><ul><li>최소 경로 길이를 가지는 노드n 개의 t진 트리
  16. 16. 특히 완전 이진 트리는 여러 알고리즘들의 계산 시간을 최소화 함</li></li></ul><li>이진 트리의 내부 경로 길이<br />I ≥ ∑└ log2k ┘ = (n +1)q – 2q+1 + 2, <br />q =└ log2(n+1) ┘<br />⁞<br />q = log2n + O(1)<br />∴ 최적값= nlog2n + O(n)<br />n<br />k=1<br />
  17. 17. 2. 완전 t 진 트리 (Complete t-ary Tree)<br /><ul><li>위의 최적값nlog2n + O(n) 을 가지는 이진 트리가완전 이진트리(Complete Binary Tree)
  18. 18. 자식을 t 로 확장하면 완전 t 진 트리 (단, t ≥ 2)</li></li></ul><li>노드k의 부모 :└ k / 2 ┘<br />노드k의 자식 : 2k, 2k + 1<br />외부 노드 번호 : n + 1 ~ 2n + 1<br />t =2, n = 12 인 완전 이진트리<br />1<br />3<br />2<br />4<br />5<br />7<br />6<br />15<br />14<br />13<br />9<br />8<br />11<br />10<br />12<br />20<br />22<br />23<br />24<br />25<br />16<br />18<br />19<br />21<br />17<br />
  19. 19. 위의 식을 일반화 시켜서<br />완전 t진 트리에 적용되는 식은?<br />노드k의 부모 :└ (k + t – 2) / t ┘ = ┌(k – 1) / t ┐<br />노드k의 자식 : t(k – 1) + 2, t(k – 1) + 3, … , tk+ 1<br />
  20. 20. 목 록<br />경로 길이 (Path Length)<br />완전 t진 트리 (Complete t-ary Tree)<br />가중 경로 길이 (Weighted Path Length) 와<br />최적 검색 절차 (Optimal Search Procedure)<br />
  21. 21. 3-1. 가중 경로 길이 (Weighted Path Length)<br /><ul><li>m개의 실수 ω1, ω2, … , ωm(가중치) 를 외부 노드에 부여해 그 합 ∑ ωjlj를 가중 경로길이라 한다. (lj는 경로 길이)</li></li></ul><li>3-1. 가중 경로 길이 (Weighted Path Length)<br /><ul><li>m개의 실수 ω1, ω2, … , ωm(가중치) 를 외부 노드에 부여해 그 합 ∑ ωjlj를 가중 경로길이라 한다. (lj는 경로 길이)</li></ul>8+6+9+11 = 34<br />6+12+33+2 = 53<br />6+4+8+22 = 40<br />11<br />2<br />4<br />3<br />11<br />4<br />3<br />2<br />3<br />2<br />11<br />4<br />
  22. 22. 3-1. 가중 경로 길이 (Weighted Path Length)<br /><ul><li>Banlanced Tree 가 최소 가중 경로 길이를 갖지는 않는다.
  23. 23. 단, 가중치가 모두 1로 같다면 Balanced Tree 가 최소의 가중 경로길이를 갖는다.</li></ul>8+6+9+11 = 34<br />6+12+33+2 = 53<br />6+4+8+22 = 40<br />11<br />2<br />4<br />3<br />11<br />4<br />3<br />2<br />3<br />2<br />11<br />4<br />
  24. 24. 3-2. 최적 검색 절차 (Optimal Search Procedure)<br /><ul><li>가중 경로 길이가 최소인 트리를 찾는 알고리즘
  25. 25. 대표적으로 D. Huffman 의 우아한(?) 알고리즘.</li></ul>이 트리를 찾는 방법<br />8+6+9+11 = 34<br />6+12+33+2 = 53<br />6+4+8+22 = 40<br />11<br />2<br />4<br />3<br />11<br />4<br />3<br />2<br />3<br />2<br />11<br />4<br />
  26. 26. D. Hoffman 알고리즘<br /><ul><li> 최소 가중 평균 길이를 가지는 트리를 찾는 알고리즘
  27. 27. 주로 MPEG, JPG 등 영상, 이미지 압축에 많이 쓰인다.
  28. 28. 흔히 쓰는 알집에서도 사용.</li></li></ul><li>D. Hoffman 알고리즘<br />Step 1. 가중치 리스트를 오름차순으로 정렬한다.<br />Step 2. 가중치 리스트에서 가장 작은 두 값을 찾는다.<br />Step 3. 작은 두 값을 더한 뒤, 더한 값을 부모 노드로 갖고<br />작은 두 값을 자식으로 갖는 노드로 치환한다.<br />Step 4. 반복.<br />
  29. 29. D. Hoffman 알고리즘<br />Step 1. 가중치 리스트를 오름차순으로 정렬한다.<br />List (2, 11, 5, 13, 3, 17, 7)<br />List (2, 3, 5, 7, 11, 13, 17)<br />
  30. 30. D. Hoffman 알고리즘<br />Step 2. 가중치 리스트에서 가장 작은 두 값을 찾는다.<br />List (2, 3, 5, 7, 11, 13, 17)<br />List (2, 3, 5, 7, 11, 13, 17)<br />
  31. 31. D. Hoffman 알고리즘<br />Step 3. 작은 두 값을 더한 뒤, 더한 값을 부모 노드로 갖고<br />작은 두 값을 자식으로 갖는 노드로 치환한다.<br />List (5, 5, 7, 11, 13, 17)<br />5<br />3<br />2<br />
  32. 32. D. Hoffman 알고리즘<br />Step 4. 반복<br />⁞<br />⁞<br />⁞<br />⁞<br />⁞<br />⁞<br />
  33. 33. D. Hoffman 알고리즘<br />58<br />24<br />34<br />17<br />17<br />13<br />11<br />10<br />7<br />5<br />5<br />3<br />2<br />
  34. 34. D. Hoffman 알고리즘<br />58<br />24<br />34<br />결국 최소값만 찾아서 더해<br />가장 최소 가중치를 갖는 <br />트리를 구축한다는 소리<br />17<br />17<br />13<br />11<br />10<br />7<br />5<br />5<br />3<br />2<br />
  35. 35. 끝.<br />

×