IV. GIẢI THUẬT MÊ HÓA HUFFMAN 1.Đặt vấn đề
ÐỊNH NGHĨA VĂ CÂC KHÂI NIỆM CƠ BẢN
1. Ðịnh nghĩa : TOP
Cđy (Trees) lă một tập hợp hữu hạn câc phần tử gọi lă nút cđy (Node), trong đó có một nút đặc biệt gọi lă nút gốc (Root). Trín tập hợp câc nút năy có một quan hệ phđn cấp gọi lă quan hệ "cha - con".
Một nút có thể có kiểu bất ký, ta thường biểu diễn nút bằng tín nút. Tín nút có thể lă một ký tự, một số hay một chuỗi vă có thể được ghi trong một vòng tròn. Ta quy ước biểu diễn cđy như sau: Ta viết nút cha ở dòng trín, câc nút con ở dòng dưới vă quan hệ "cha-con" được biểu diễn bằng một đoạn thẳng nối liền 2 nút.
A B C D E F G Ví dụ :
Ngoăi ra ta có thể định nghĩa cđy một câch đệ qui như sau :
Một nút (đơn độc) lă một cđy vă nút đó cũng lă nút gốc của cđỵ
Nếu ta có n lă một nút vă T1, T2, ..., Tk lă câc cđy với n1, n2,..., nk lần lượt lă câc nút gốc của câc cđy con thì ta có thể xđy dựng một cđy mới bằng câch cho n trở thănh cha của câc nút n1, n2,..., nk; Nghĩa lă trín cđy mới năy n lă nút gốc còn câc cđy T1, T2, ..., Tk lă câc cđy con của nút n.
Ðể tiện việc quản lý, người ta cho phĩp tồn tại một cđy không có nút năo, mă ta gọi lă cđy rỗng (Null tree).
2. Câc khâi niệm cơ bản : TOP
Một nút đơn độc cũng lă một cđỵ
Tập hợp rỗng cũng lă một cđy mă ta gọi lă cđy rỗng. Mức của một nút :
+ Nút gốc : Mức 0.
+ Câc nút câch nút gốc i cạnh được gọi lă nút ở mức ị Sách C1 C2 C3 §1.1 §1.2 §3.1 §3.3 §3.2 §3.2.1 §3.2.2
Mức 0 Mức 1 Mức 2 Mức 3
Ví dụ:
Cha - con: Nút A lă nút cha của nút B khi nút A ở mức i vă nút B ở mức i+1. Ðồng thời có một cạnh nối giữa cặp nút A vă B (ta còn gọi B lă con của A).
Cha - ông (con - châu)/ tiền bối - hậu duệ: Nếu có một đường nối từ nút A đến nút B vă mức của nút A < mức của nút B thì ta nói A lă cha ông (tiền bối) của B vă B gọi lă con châu (hậu duệ) của Ạ
Anh em ruột: Câc nút con của cùng một nút cha được gọi lă câc nút anh em ruột.
Ðường đi: Cho một dêy câc nút n1, n2,..., nk sao cho ni lă nút cha của ni+1 thì ta nói n1 ( n2 ( ...( nk lă một đường đi từ nút n1 ( nk. Ðộ dăi của đường đi bằng số nút trín đường đi trừ 1 hay bằng số cạnh trín đường đị
Nút gốc (Root): Lă nút không có nút chạ Nút lâ (leaf): Lă nút không có nút con.
Chiều cao của một nút: Lă độ dăi đường đi từ nút đó đến nút lâ xa nhất.
Ðộ sđu của một nút (mức của một nút): Lă chiều dăi đường đi từ nút gốc đến nút đó.
Chiều cao của một cđy: Lă chiều cao của nút gốc. Bậc của một nút: Lă số nút con của nút đó.
Bậc của một cđy: Lă bậc cao nhất của câc nút trong cđỵ + Cđy có bậc n được gọi lă cđy n - phđn.
+ Rừng lă một tập hợp hữu hạn câc cđy phđn biệt.
Nếu ta phđn biệt thứ tự câc nút con của một cđy thì ta gọi cđy đó lă cđy có thứ tự. Ngược lại lă cđy không có thứ tự.
Thứ tự của câc nút trong một cđy có thứ tự được quy ước từ trâi sang phải vă từ trín xuống dướị
Nếu A vă B lă 2 nút anh em ruột vă A ở bín trâi của B thì câc nút con châu của A lă nút bín trâi tất cả câc nút con châu của B.
Ðể xâc định nút trâi (phải) của một nút n, ta vẽ một đường đi từ nút gốc đến nút n. Nút năo nằm bín trâi của đường đi thì sẽ lă nút trâi của nút đó, nút năo nằm bín phải của đường đi thì sẽ lă nút phải của nút đó.
1 2 3 4 5 6 8 7 9 10 11 12 Ví dụ: Thứ tự duyệt cđy:
Duyệt cđy lă một quy tắc xử lý lần lượt tất cả câc nút của một cđy mă ở đó mỗi nút chỉ được xử lý một lần.
Danh sâch liệt kí câc nút theo thứ tự xử lý được gọi lă danh sâch duyệt cđỵ
3. Câc phĩp duyệt cđy quan trọng : TOP
Duyệt tiền tự (PreOrder). Duyệt trung tự (InOrder). Duyệt hậu tự (PostOder).
Ðịnh nghĩa câc phĩp duyệt cđy: Ta có thể định nghĩa phĩp duyệt cđy tổng quât bằng đệ quy như sau :
Cđy rỗng : Danh sâch duyệt tiền tự, trung tự, hậu tự lă danh sâch rỗng. Cđy có một nút : Danh sâch duyệt tiền tự, trung tự, hậu tự chính lă nút đó.
Ví dụ : Cho một cđy như hình sau :
4. Cđy có nhản vă cđy biểu thức : TOP
Ta thường lưu trữ kết hợp một nhản (Label) hoặc một giâ trị (value) với một nút của cđỵ Như vậy, nhản của một nút không phải lă tín của nút mă lă giâ trị được lưu tại nút đó. Nhản của một nút còn được gọi lă khóa của nút.
Ví dụ : Cđy sau đđy sẽ biểu diễn cho biểu thức (a + b) * (a - c)
Trong cđy trín thì n1, n2,..., n7 lă câc tín nút còn *, +, -, a, b, c lă câc nhản của nút.