Ch ng CÂY N i dung 4.1 nh ngh a khái ni m 4.2 Cây nh phân 4.3 Các 1/28/2013 ng d ng C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 4.1 nh ngh a khái ni m 4.1.1 nh ngh a 4.1.2 Các thu t ng 4.1.3 Cây có th t 4.1.4 Cây có nhãn 4.1.5 ADT 1/28/2013 C U TRÚC D NGUY N 4.1.1 LI U VÀ THU T TOÁN C NGH A - B môn KHMT nh ngh a Cây bao g m nút, có m t nút đ c bi t đ c g i g c (root) c nh n i nút Cây đ c đ nh ngh a đ qui nh sau: nh ngh a cây: Basic Step: M t nút r r đ c g i g c c a Recursive Step: Gi s T1,T2, ,Tk v i g c r1,r2, ,rk Ta có th xây d ng m i b ng cách đ t r làm cha (parent) c a nút r1,r2, , rk Trong r g c T1, T2, , Tk c a g c r Các nút r1, r2, , rk đ c g i (children) c a nút r Chú ý: Nhi u đ phù h p ta c n đ nh ngh a r ng (null tree) khơng có nút c 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT C u trúc đ qui c a r r2 r1 1/28/2013 Tk T2 T1 C U TRÚC D NGUY N rk LI U VÀ THU T TỐN Cây th c t • • • • • • • • C NGH A - B môn KHMT ng d ng Bi u đ l ch thi đ u Cây gia ph Bi u đ phân c p qu n lý hành Cây th m c C u trúc c a m t quy n sách Cây bi u th c Cây phân ho ch t p h p 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT Cây l ch thi đ u Trong i th ng r t hay c s d ng di n t l ch thi u c a gi i th thao theo th th c u lo i tr c ti p, ch ng h n vòng c a World Cub Pháp Tây ban nha Brazin Anh c Ucrain Italia Ahentina Pháp Brazin Italia c Italia C U TRÚC D 1/28/2013 Pháp NGUY N Italia LI U VÀ THU T TOÁN C NGH A - B môn KHMT Cây gia ph Cây gia ph c a nhà tốn dịng h Bernoulli Nikolaus 1623-1708 Johan I 1667-1748 Nikolaus II 1695-1726 Daniel 1700-1782 Nikolaus 1662-1716 Johan II 1710-1790 Johan III 1746-1807 1/28/2013 Jacob I 1654-1705 Nikolaus I 1687-1759 Jacob II 1759-1789 C U TRÚC D NGUY N LI U VÀ THU T TỐN C NGH A - B mơn KHMT Cây phân c p qu n lý hành Ban Giám đ c Phịng Hành TP Phịng T ch c Phòng Tài v Phòng Kinh doanh Phòng K ho ch V n th 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT Cây th 1/28/2013 C U TRÚC D NGUY N m c LI U VÀ THU T TỐN C NGH A - B mơn KHMT 10 Cây m c l c sách 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN 11 C NGH A - B môn KHMT Cây gia ph ng c (Ancestor Tree) Cây ph h ng c: m i ng i u có b m Cây nh phân (binary tree) Thùy H ng Quang D ng Thúy C i Bích Liên 1/28/2013 Trung Kiên C U TRÚC D NGUY N Hoàng Cúc LI U VÀ THU T TỐN C NGH A - B mơn KHMT Quang Thái 12 Cây bi u th c (Expression Tree) + / / * 1/3 + C U TRÚC D 1/28/2013 NGUY N 6*7 / LI U VÀ THU T TOÁN 13 C NGH A - B môn KHMT Cây phân ho ch t p h p {1, 2, 3, 4, 5, 6, 7, 8, 9, 10} T p s l : T p s ch n: {1, 3, 5, 7, 9} { 2, 4, 6, 8, 10} {1, 9} T p s nguyên t : { 2, 4, 8, 10} { 3, 5, } 1/28/2013 C U TRÚC D NGUY N T p s hoàn h o: {6} LI U VÀ THU T TOÁN C NGH A - B môn KHMT 14 4.1 nh ngh a khái ni m 4.1.1 nh ngh a 4.1.2 Các thu t ng 4.1.3 Cây có th t 4.1.4 Cây có nhãn 4.1.5 ADT 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN 4.1.2 Các thu t ng • • • • • • • • • • • 15 C NGH A - B mơn KHMT Nút - node G c - root Lá - leaf Con - child Cha - parent T tiên - ancestors H u du - descendants Anh em - sibling Nút - internal node Chi u cao - hight Chi u sâu - depth 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TỐN C NGH A - B mơn KHMT 16 Các thu t ng • N u n1, n2, , nk dãy nút cho ni cha c a ni+1 v i i < k, dãy đ c g i đ ng (path) t nút n1 t i nút nk dài (length) c a đ ng b ng s l ng nút đ ng tr b t Nh v y đ ng đ dài đ ng t m t nút đ n • N u có đ ng t nút a t i nút b, a đ đ c g i h u du (descendant) c a a • T tiên (h u du ) c a m t nút khác v i đ c g i t tiên (h u du ) th ng (proper) Trong cây, g c nút khơng có t tiên th ng m i nút khác đ u h u du th ng c a • M t nút khơng có h u du th • Các nút có cha đ • Cây (subtree) c a m t m t nút v i t t c h u du c a • Chi u cao (height) c a nút b ng đ dài c a đ ng dài nh t t nút đ n c ng Chi u cao c a (height of a tree) chi u cao c a g c sâu/m c (depth/level) c a nút b ng c ng v i đ dài c a đ ng nh t t g c đ n c g i lá (leaf) c g i anh em (sibling) C U TRÚC D 1/28/2013 ng đ c g i t tiên (ancestor) c a b, b NGUY N LI U VÀ THU T TỐN 17 C NGH A - B mơn KHMT Thu t ng nút nodes C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 1/28/2013 18 Thu t ng Nút cha parent node C U TRÚC D NGUY N LI U VÀ THU T TOÁN 1/28/2013 C NGH A - B môn KHMT 19 Thu t ng cha parent child C U TRÚC D NGUY N LI U VÀ THU T TỐN C NGH A - B mơn KHMT 1/28/2013 20 Ví d : Prefix + / / * + 1/28/2013 / C U TRÚC D NGUY N / * 7 LI U VÀ THU T TOÁN C NGH A - B mơn KHMT 4.3 Các ví d 101 ng d ng 4.3.1 Cây bi u th c 4.3.2 Cây mã Huffman 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 102 4.3.3 Mã Huffman An application of binary trees: Huffman Code 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B mơn KHMT 103 Mã Huffman • Gi s có m t v n b n b ng ch C V i m i ch c C ta bi t t n su t xu t hi n c a v n b n f(c) C n tìm cách mã hố v n b n s d ng b nh nh t David A Huffman 1925-1999 Mà hoá với độ dài cố định (fixed length code) Dễ mà hoá dễ giải mÃ, lại đòi hỏi nhớ lín – M· phi tiỊn tè (prefix free code) lµ cách mà hoá ký tự c xâu nhị phân code(c) cho mà ký tự không đoạn đầu mà ký tự số ký tự lại Tuy đòi hỏi việc mà hoá giải mà phức tạp thông thường tỏ đòi hỏi Ýt bé nhí h¬n 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B mơn KHMT 104 Mã hố đ dài c đ nh • mã hố 26 ch ti ng Anh b i mã nh phân đ dài c đ nh, đ dài c a xâu t i thi u [log 26] =5 bit • Các xâu t 11011 đ n 11111 không s d ng 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 105 Cây mã hố đ dài c đ nh • Mã hố đ dài c đ nh mã phi ti n t • Gi i mã 0011101000 HI • Các nút * không s d ng 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B mơn KHMT 106 Morse Code • C n c vào th ng kê t n su t c a ch ti ng Anh • Morse đ xu t cách mã hoá: 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 107 Cây mã hố Morse • Mã hố Morse khơng phi ti n t • Gi i mã “ -” ??? Ch u ch t? • Ph i có d u phân bi t ch cái: “ # -” IU • Cây không đ y đ 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B mơn KHMT 108 Mã Huffman • M i mã phi ti n t có th bi u di n b i m t nh phân T mà m i cu t ng ng v i m t ch c nh c a đ c gán cho m t hai s ho c • Mã c a m t ch c dãy nh phân g m s gán cho c nh đ ng t g c đ n t ng ng v i c 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN 109 C NGH A - B mơn KHMT Mã Huffman • Bài tốn: Tìm cách mã hố t i u, t c tìm nh phân T làm t i thi u hố t ng đ dài có tr ng s B(T ) f (c) depth(c) cC depth(c) đ dài đ ng t g c đ n t ng ng v i ký t c 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TỐN C NGH A - B mơn KHMT 110 Mã Huffman • Ýt ng thu t tốn: • Ch có t n su t nh h n c n đ c gán cho có kho ng cách đ n g c l n h n; ch có t n su t xu t hi n l n h n c nđ 1/28/2013 c gán cho nút g n g c h n C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 111 Mã Huffman: Thu t toán procedure Huffman(C, f); begin n |C|; Q C; for i:=1 to n-1 begin x, y ch có t n su t nh nh t Q; (* Thao tác *) T o nút p v i hai x, y; f(p) := f(x) + f(y); Q Q \ {x, y} {p} (* Thao tác *) end; end; ã Mà xây dựng theo thuật toán Huffman thường gọi mà Huffman (Huffman Code) ã Cú th ci đ t v i th i gian O(n log n) s d ng priority queue 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B mơn KHMT 112 X©y dùng m· Huffman Char Freq E 125 T 93 A 80 O 76 I 72 N 71 S 65 R 61 H 55 L 41 D 40 C 31 U 27 • T n su t c a ký t v n b n C U TRÚC D 1/28/2013 NGUY N LI U VÀ THU T TOÁN 113 C NGH A - B mơn KHMT X©y dùng m· Huffman A O T E 80 76 93 125 1/28/2013 D L R S N I H 40 41 61 65 71 73 55 C U TRÚC D NGUY N LI U VÀ THU T TỐN C NGH A - B mơn KHMT C U 31 27 114 X©y dùng m· Huffman A O T E 80 76 93 125 D L R S N I 40 41 61 65 71 73 C U TRÚC D 1/28/2013 NGUY N H 55 58 LI U VÀ THU T TOÁN C U 31 27 115 C NGH A - B mơn KHMT X©y dùng m· Huffman A O 80 76 1/28/2013 81 T E 93 125 D L R S N I 40 41 61 65 71 73 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT H 58 55 C U 31 27 116 X©y dùng m· Huffman A O 80 76 81 T E 93 125 D L R S N I 40 41 61 65 71 73 C U TRÚC D 1/28/2013 NGUY N 113 H 55 58 LI U VÀ THU T TOÁN C U 31 27 117 C NGH A - B mơn KHMT X©y dùng m· Huffman A O 80 76 1/28/2013 T E 126 93 81 D L R S N I 40 41 61 65 71 73 C U TRÚC D NGUY N 113 125 LI U VÀ THU T TỐN C NGH A - B mơn KHMT H 58 55 C U 31 27 118 X©y dùng m· Huffman A O 80 76 T E 93 81 126 125 144 D L R S N I 40 41 61 65 71 73 C U TRÚC D 1/28/2013 NGUY N 113 H 55 58 LI U VÀ THU T TOÁN C U 31 27 119 C NGH A - B mơn KHMT X©y dùng m· Huffman 156 A O 80 76 1/28/2013 T E 126 93 81 144 D L R S N I 40 41 61 65 71 73 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 113 125 H 58 55 C U 31 27 120 X©y dùng m· Huffman 156 174 A O 80 76 T E 93 81 126 125 144 D L R S N I 40 41 61 65 71 73 C U TRÚC D 1/28/2013 NGUY N 113 H 55 58 LI U VÀ THU T TOÁN C U 31 27 121 C NGH A - B môn KHMT X©y dùng m· Huffman 156 A 174 O 238 T E 126 81 D L R 144 S N 113 I H 58 C 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B mơn KHMT U 122 X©y dùng m· Huffman 156 270 174 A O 80 76 238 T E 93 81 126 125 144 D L R S N I 40 41 61 65 71 73 C U TRÚC D 1/28/2013 NGUY N 113 H 55 58 LI U VÀ THU T TOÁN C U 31 27 123 C NGH A - B mơn KHMT X©y dùng m· Huffman 330 156 270 174 A O 80 76 1/28/2013 238 T E 126 93 81 144 D L R S N I 40 41 61 65 71 73 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 113 125 H 58 55 C U 31 27 124 X©y dùng m· Huffman 330 508 156 270 174 A O 80 76 238 T E 93 81 126 125 144 D L R S N I 40 41 61 65 71 73 C U TRÚC D 1/28/2013 NGUY N 113 H 55 58 LI U VÀ THU T TOÁN C U 31 27 125 C NGH A - B mơn KHMT X©y dùng m· Huffman 838 330 A O 80 76 1/28/2013 508 0 174 156 1 270 T 81 93 238 E 126 144 D L R S N I 40 41 61 65 71 73 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 113 125 H 58 C U 31 27 55 126 X©y dùng m· Huffman 1/28/2013 Char Freq Fixed Huff E 125 0000 110 T 93 0001 011 A 80 0010 000 O 76 0011 001 I 73 0100 1011 N 71 0101 1010 S 65 0110 1001 R 61 0111 1000 H 55 1000 1111 L 41 1001 0101 D 40 1010 0100 C 31 1011 11100 U 27 1100 11101 Tæng 838 3352 3036 127 Mã Huffman: Gi i mã procedure Huffman_Decode(B); (* B xâu mà hóa v n theo mà hoá Huffman *) begin While begin x bit tiÕp theo x©u B; If x = then P Con tr¸i cđa P Else P Con ph¶i cđa P If (P nút ) then begin < ặt lại P gèc cđa c©y Huffman> end; end end; 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 128 QUESTIONS? 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TỐN C NGH A - B mơn KHMT 129 ... NGH A - B mơn KHMT 14 4.1 nh ngh a khái ni m 4. 1.1 nh ngh a 4. 1.2 Các thu t ng 4. 1.3 Cây có th t 4. 1 .4 Cây có nhãn 4. 1.5 ADT 1/28/2013 C U TRÚC D NGUY N LI U VÀ THU T TỐN 4. 1.2 Các thu t ng •... degree = C U TRÚC D NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 30 4. 1 nh ngh a khái ni m 4. 1.1 nh ngh a 4. 1.2 Các thu t ng 4. 1.3 Cây có th t 4. 1 .4 Cây có nhãn 4. 1.5 ADT C U TRÚC D 1/28/2013... 4. 1 nh ngh a khái ni m 4. 1.1 nh ngh a 4. 1.2 Các thu t ng 4. 1.3 Cây có th t 4. 1 .4 Cây có nhãn 4. 1.5 ADT C U TRÚC D 1/28/2013 NGUY N LI U VÀ THU T TOÁN C NGH A - B môn KHMT 43 4. 1.5 ADT Cây • Trong