Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 4 - Nguyễn Đức Nghĩa

65 65 0
Bài giảng Cấu trúc dữ liệu và thuật toán: Chương 4 - Nguyễn Đức Nghĩa

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Cấu trúc dữ liệu và thuật toán - Chương 4: Cây cung cáp cho người học các kiến thức: Định nghĩa và các khái niệm, cây nhị phân, các ứng dụng. Đây là một tài liệu hữu ích dành cho các bạn sinh viên ngành Công nghệ thông tin và những ai quan tâm dùng làm tài liệu học tập và nghiên cứu.

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 ứng dụng 1/28/2013 CẤU TRÚC DỮ CuuDuongThanCong.com LIỆU VÀ THUẬT TOÁN NGUYỄ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Ữ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT 4.1.1 Định nghĩa Cây bao gồm nút, có nút đặc biệt gọi gốc (root) cạnh nối nút Cây định nghĩa đệ qui sau: Định nghĩa cây: Basic Step: Một nút r r gọi gốc Recursive Step: Giả sử T1,T2, ,Tk với gốc r1,r2, ,rk Ta xây dựng cách đặt r làm cha (parent) nút r1,r2, , rk Trong r gốc T1, T2, , Tk gốc r Các nút r1, r2, , rk gọi (children) nút r Chú ý: Nhiều để phù hợp ta cần định nghĩa rỗng (null tree) khơng có nút 1/28/2013 CẤU TRÚC DỮ LIỆUCuuDuongThanCong.com VÀ THUẬT TỐN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT Cấu trúc đệ qui r r2 r1 T1 1/28/2013 T2 rk Tk CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT Cây thực tế ứ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 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Ữ CuuDuongThanCong.com LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT Cây lịch thi đấu Trong đời thường hay sử dụng để diễn tả lịch thi đấu giải thể thao theo thể thức đấu loại trực tiếp, chẳng hạn vòng World Cub Pháp Tây ban nha Brazin Anh Đức Ucrain Italia Ahentina Pháp Pháp Brazin Italia Đức Italia Italia CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 1/28/2013 NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT Cây gia phả Cây gia phả 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Ữ LIỆUCuuDuongThanCong.com VÀ THUẬT TỐN NGUYỄ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Ữ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT Cây thư mục 1/28/2013 CẤU TRÚC DỮ CuuDuongThanCong.com LIỆU VÀ THUẬT TOÁN NGUYỄ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Ữ LIỆU VÀ THUẬT TOÁN 11 NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT Cây gia phả ngược (Ancestor Tree) Cây phả hệ ngược: người 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 Hoàng Cúc CẤU TRÚC DỮ CuuDuongThanCong.com LIỆU VÀ THUẬT TỐN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT Quang Thái 12 Cây biểu thức (Expression Tree) + / / * 1/3 + 6*7 / CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 1/28/2013 13 NGUYỄN ĐƯ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Ữ CuuDuongThanCong.com LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT Tập số hồn hảo: {6} 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Ữ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 15 4.1.2 Các thuật ngữ • • • • • • • • • • • 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Ữ CuuDuongThanCong.com LIỆU VÀ THUẬT TOÁN NGUYỄ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 ni+1 với  i < k, dãy gọi đường (path) từ nút n1 tới nút nk Độ dài (length) đường số lượng nút đường trừ bớt Như đường độ dài đường từ nút đến • Nếu có đường từ nút a tới nút b, a gọi tổ tiên (ancestor) b, b gọi hậu duệ (descendant) a • Tổ tiên (hậu duệ) nút khác với 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 nút khác hậu duệ thường • Một nút khơng có hậu duệ thường gọi lá (leaf) • Các nút có cha gọi anh em (sibling) • Cây (subtree) một nút với tất hậu duệ • Chiều cao (height) nút độ dài đường dài từ nút đến cộng Chiều cao (height of a tree) chiều cao gốc Độ sâu/mức (depth/level) nút cộng với độ dài đường từ gốc đến 1/28/2013 CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 17 NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT Thuật ngữ nút nodes CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT CuuDuongThanCong.com 1/28/2013 18 Thuật ngữ Nút cha parent node CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 1/28/2013 NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT 19 Thuật ngữ cha parent child CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT CuuDuongThanCong.com 1/28/2013 20 Ví dụ: Prefix + / / * + 1/28/2013 / / * 7 CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 101 NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 4.3 Các ví dụ ứ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Ữ CuuDuongThanCong.com LIỆU VÀ THUẬT TOÁN NGUYỄ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Ữ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 103 Mã Huffman • Giả sử có văn bảng chữ C Với chữ c  C ta biết tần suất xuất văn f(c) Cần tìm cách mã hố văn sử dụng nhớ 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) cách mà hoá ký tự c xâu nhị ph©n code(c) cho m· cđa mét ký tù bÊt kỳ 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 bé nhí h¬n 1/28/2013 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 104 Mã hố độ dài cố định • Để mã hố 26 chữ tiếng Anh mã nhị phân độ dài cố định, độ dài 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Ữ LIỆU VÀ THUẬT TỐN NGUYỄ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 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 106 Morse Code • Căn vào thống kê tần suất chữ tiếng Anh • Morse đề xuất cách mã hoá: 1/28/2013 CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄ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 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 108 Mã Huffman • Mỗi mã phi tiền tố biểu diễn nhị phân T mà cuả tương ứng với chữ cạnh gán cho hai số • Mã 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Ữ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 109 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 hoá tổng độ dài có trọng số B(T )   f (c) depth(c) cC depth(c) độ dài đường từ gốc đến tương ứng với ký tự c 1/28/2013 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 110 Mã Huffman • Ý tưởng thuật tốn: • Chữ có tần suất nhỏ cần gán cho có khoảng cách đến gốc lớn hơn; chữ có tần suất xuất lớn cần gán cho nút gần gốc 1/28/2013 CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄ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ỏ 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ể cài đặt với thời gian O(n log n) sử dụng priority queue 1/28/2013 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄ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 ký tự văn CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 1/28/2013 113 NGUYỄN ĐƯ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 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄ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 H 58 55 C U 31 27 CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 1/28/2013 115 NGUYỄN ĐƯ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 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄ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 113 H 58 55 C U 31 27 CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN 1/28/2013 117 NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT X©y dùng m· Huffman A O 80 76 1/28/2013 T E 93 81 126 125 D L R S N I 40 41 61 65 71 73 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT 113 H 58 55 C U 31 27 118 X©y dùng m· Huffman A O 80 76 T E 93 81 126 144 125 D L R S N I 40 41 61 65 71 73 113 H 58 55 C U 31 27 CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 1/28/2013 119 NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT X©y dùng m· Huffman 156 A O 80 76 1/28/2013 T E 93 81 126 144 125 D L R S N I 40 41 61 65 71 73 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT 113 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 144 125 D L R S N I 40 41 61 65 71 73 113 H 58 55 C U 31 27 CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 1/28/2013 121 NGUYỄN ĐƯ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 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄ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 144 125 D L R S N I 40 41 61 65 71 73 113 H 58 55 C U 31 27 CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 1/28/2013 123 NGUYỄN ĐƯ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 93 81 126 144 125 D L R S N I 40 41 61 65 71 73 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT 113 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 144 125 D L R S N I 40 41 61 65 71 73 113 H 58 55 C U 31 27 CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN 1/28/2013 125 NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT X©y dùng m· Huffman 838 330 0 O 80 76 1/28/2013 508 0 174 156 A 1 270 T 81 93 238 E 126 144 D L R S N I 40 41 61 65 71 73 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 125 113 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: Gii mó procedure Huffman_Decode(B); (* B xâu mà hóa 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 P If (P nút ) then begin end; end end; 1/28/2013 CuuDuongThanCong.com CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT 128 QUESTIONS? 1/28/2013 CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT CuuDuongThanCong.com 129 ... 1/28/2013 20 Thuật ngữ cha CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN 1/28/2013 NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 21 Thuật ngữ - leaf gốc - root CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT... 1/28/2013 22 Thuật ngữ - subtree CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN NGUYỄN ĐƯC NGHĨA - Bộ môn KHMT 1/28/2013 23 1/28/2013 24 Thuật ngữ CẤU TRÚC DỮ LIỆU VÀ THUẬT TỐN NGUYỄ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Ữ LIỆU VÀ THUẬT TỐN NGUYỄN ĐƯC NGHĨA - Bộ mơn KHMT 4. 1.1

Ngày đăng: 11/01/2020, 17:59

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan