Chương 4. Cây. Trong chương này, người học có thể hiểu được một số kiến thức cơ bản về: Định nghĩa và các khái niệm, biểu diễn cây, duyệt cây, cây nhị phân. Mời các bạn cùng tham khảo để biết thêm các nội dung chi tiết.
co ng c om TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG Nguyễn Khánh Phương u du o ng th an Cấu trúc liệu thuật toán cu Computer Science department School of Information and Communication technology E-mail: phuongnk@soict.hust.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung khóa học cu u du o ng th an co ng c om Chương Các khái niệm Chương Các sơ đồ thuật toán Chương Các cấu trúc liệu Chương Cây Chương Sắp xếp Chương Tìm kiếm Chương Đồ thị CuuDuongThanCong.com https://fb.com/tailieudientucntt th Nguyễn Khánh Phương u du o ng Chương Cây an co ng c om TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG cu Computer Science department School of Information and Communication technology E-mail: phuongnk@soict.hust.edu.vn CuuDuongThanCong.com https://fb.com/tailieudientucntt Nội dung c om Định nghĩa khái niệm Biểu diễn co ng Duyệt cu u du o ng th an Cây nhị phân Become Rich Force Others to be Poor Rob Banks CuuDuongThanCong.com Stock Fraud https://fb.com/tailieudientucntt Nội dung c om Định nghĩa khái niệm Biểu diễn co ng Duyệt cu u du o ng th an Cây nhị phân Become Rich Force Others to be Poor Rob Banks CuuDuongThanCong.com Stock Fraud https://fb.com/tailieudientucntt Định nghĩa khái niệm cu u du o ng th an co ng c om 1.1 Định nghĩa 1.2 Các thuật ngữ 1.3 Cây có thứ tự (Ordered tree) NGUYỄN KHÁNH PHƯƠNG Bộ môn KHMT – ĐHBK HN CuuDuongThanCong.com https://fb.com/tailieudientucntt Định nghĩa khái niệm cu u du o ng th an co ng c om 1.1 Định nghĩa 1.2 Các thuật ngữ 1.3 Cây có thứ tự (Ordered tree) NGUYỄN KHÁNH PHƯƠNG Bộ môn KHMT – ĐHBK HN CuuDuongThanCong.com https://fb.com/tailieudientucntt 1.1 Định nghĩa c om Cây gồm tập nút, có nút đặc biệt gọi gốc (root) cạnh nối nút nút co Dusty ng Nút gốc T ansey th ng du o T weed u Gill T erry cu B runhilde B randy an Honey B ear Zoe C oyote C rocus Nugget Primrose Nous B elle nút NGUYỄN KHÁNH PHƯƠNG Bộ môn KHMT – ĐHBK HN CuuDuongThanCong.com https://fb.com/tailieudientucntt Cây: Định nghĩa đệ quy Gốc (Root) r2 rk T1 T2 Tk u du o r cu ng th an co ng c om • Bước sở: – Cây rỗng: khơng có nút – Cây có nút r : nút r gọi gốc • Bước đệ quy: – Giả sử T1,T2, ,Tk với gốc tương ứng r1,r2, ,rk – Ta xây dựng cách đặt nút r làm cha (parent) nút r1,r2, ,rk : • Trong này: r gốc; T1, T2, , Tk gốc r; Các nút r1,r2, ,rk gọi (children) nút r r1 CuuDuongThanCong.com NGUYỄN KHÁNH PHƯƠNG Bộ môn KHMT – ĐHBK HN https://fb.com/tailieudientucntt ng u du o ng th an co Lịch thi đấu Cây gia phả Cây thư mục Cấu trúc sách Cây biểu thức Sơ đồ phân cấp quan … cu • • • • • • • c om Các ứng dụng NGUYỄN KHÁNH PHƯƠNG Bộ môn KHMT – ĐHBK HN CuuDuongThanCong.com https://fb.com/tailieudientucntt 174 76 du o 80 T 93 81 D 40 u O 238 E 126 144 125 L R S N I 41 61 65 71 73 cu A 270 ng 156 th an co ng c om 4.4.2 Mã Huffman CuuDuongThanCong.com 113 H 58 55 C U 31 27 https://fb.com/tailieudientucntt ng c om 4.4.2 Mã Huffman 174 76 du o 80 T 93 81 D 40 u O 238 E 126 144 125 L R S N I 41 61 65 71 73 cu A 270 ng 156 th an co 330 CuuDuongThanCong.com 113 H 58 55 C U 31 27 https://fb.com/tailieudientucntt ng c om 4.4.2 Mã Huffman 508 174 76 du o 80 T 93 81 D 40 u O 238 E 126 144 125 L R S N I 41 61 65 71 73 cu A 270 ng 156 th an co 330 CuuDuongThanCong.com 113 H 58 55 C U 31 27 https://fb.com/tailieudientucntt 4.4.2 Mã Huffman c om 330 508 76 D 40 th 144 L R S N I 41 61 65 71 73 CuuDuongThanCong.com 238 E 126 81 93 270 ng 80 T du o O u A 0 174 156 cu an co ng 838 125 113 H 58 C U 31 27 https://fb.com/tailieudientucntt 55 4.4.2 Mã Huffman ng Huffman code 110 011 000 001 1011 1010 1001 1000 1111 0101 0100 11100 11101 3036 Fixed-length code c om 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 3352 ng co an th Frequency 125 93 80 76 73 71 65 61 55 41 40 31 27 838 du o Char E T A O I N S R H L D C U Sum cu u • Sử dụng mã Huffman: tiết kiệm nhớ 10% • Mã Huffman ví dụ đơn giản mã hóa liệu NGUYỄN KHÁNH PHƯƠNG Bộ môn KHMT – ĐHBK HN CuuDuongThanCong.com https://fb.com/tailieudientucntt cu u du o ng th an co ng • Thuật tốn giải mã: – Đọc file nén & xây dựng nhị phân – Sử dụng nhị phần để giải mã • Đi từ nút gốc đến nút • Ví dụ: Giải mã “11100000011” c om 4.4.2 Mã Huffman: giải mã CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4 Một số ứng dụng c om 4.4.1 Biểu thức số học 4.4.2 Mã Huffman cu u du o ng th an co ng 4.4.3 Cây định (Decision tree) 174 CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4.2 Mã Huffman: giải mã ng th an co ng c om procedure Huffman_Decode(B) //B xâu mã hóa văn theo mã Huffman begin While begin x bit xâu B; If x = then P Con trái P Else P Con phải P If (P nút lá) then begin du o cu end; end; end; u CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4.3 Cây định (Decision Tree) c om • Cây định mà đỉnh tương ứng với truy vấn liệu Các cạnh tương ứng với khả trả lời cho câu hỏi Mỗi tương ứng với đầu cu u du o ng th an co ng • Để tính tốn với định gốc di chuyển theo đường đến Tại nút trung gian câu trả lời cho truy vấn liệu dẫn ta đến nút Khi đạt đến ta thu đầu NGUYỄN KHÁNH PHƯƠNG Bộ môn KHMT – ĐHBK HN CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4.3 Cây định cu u du o ng th an co ng c om Ví dụ Bài tốn tra từ điển Cho mảng A gồm n số theo thứ tự tăng dần số x Cần xác định xem x có mặt mảng cho hay không Nếu câu trả lời khẳng định cần rõ vị trí x mảng A • Cây định để giải tốn có dạng nhị phân: – Mỗi nút định chứa câu hỏi dạng: “x < k ?” – Mỗi nút mức sát định chứa câu hỏi : “x = A[i]?” có hai con, ứng với ‘i’ cịn ứng với ‘-’ (khơng có) Ví dụ: Xét A = (2, 3, 5, 7, 11, 13, 17, 19) Cây định có dạng sau CuuDuongThanCong.com https://fb.com/tailieudientucntt 4.4.3 Cây định ng c om • Ta xác định thời gian thuật toán định số truy vấn đường từ gốc đến Như vậy, thời gian tính tình xấu thuật toán độ cao định th an co • Nếu ta hạn chế sử dụng phép so sánh để giải toán tra từ điển, rõ ràng hoạt động thuật tốn giải tốn tra từ điển mơ tả định cu u du o ng • Do đánh giá cận cho độ cao định (thuật toán) giải tốn tra từ điển ta thu cận cho độ phức tạp toán NGUYỄN KHÁNH PHƯƠNG Bộ môn KHMT – ĐHBK HN CuuDuongThanCong.com https://fb.com/tailieudientucntt 178 4.4.3 Cây định Giả thiết rằng: “Các truy vấn liệu phải đảm bảo đủ thông tin để xác định đầu có thể” • Nếu tốn có N đầu rõ ràng định có N (khơng loại trừ tình có số tương ứng với đầu ra) • Từ bổ đề 1, ta biết rằng: Nếu có n nút có nhiều nút (mỗi truy vấn có nhiều câu trả lời) độ cao log n = (log n) • Áp dụng kết này: Với toán tra từ điển với tập S gồm n phần tử, tốn có tất n+1 đầu có thể, nên định có n+1 lá, thế, có độ cao du o ng th an co ng c om • log (n+1) = (log n) Suy ra: Mọi thuật toán giải toán tra từ điển sử dụng phép so sánh có thời gian tính (log n) • Như biết: Thuật tốn tìm kiếm nhị phân có thời gian tính O(log n) Từ kết suy ra: “Thuật tốn tìm kiếm nhị phân thuật toán nhanh số thuật toán sử dụng phép so sánh để giải tốn tra từ điển” 179 cu u • CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài toán xếp cu u du o ng th an co ng c om • Cho dãy n số phân biệt (a[1], a[2], , a[n]), tìm hốn vị = ((1), (2), ,(n)) cho: a[(1)] < a[(2)] < < a[(n)] • Giả sử ta sử dụng phép so sánh để thực xếp, thuật tốn xếp diễn tả mơ hình định Cây định nhị phân thoả mãn: – Mỗi nút phép so sánh "a < b" • coi tương ứng với không gian trình tự – Mỗi cạnh rẽ nhánh theo câu trả lời (true false) – Mỗi trình tự xếp – Cây định có lá, có n phần tử phân biệt cần xếp? • n!, tức tất trình tự • Đối với liệu, có chứa trình tự xếp cần tìm NGUYỄN KHÁNH PHƯƠNG Bộ mơn KHMT – ĐHBK HN CuuDuongThanCong.com https://fb.com/tailieudientucntt 180 Cây định cho toán xếp ba số a, b, c c om an a>c a