Ứng dụng cây vào mã hóa thông tin – Thuật toán Huffman

Một phần của tài liệu Bài giảng toán rời rạc ths nguyễn thị thúy hạnh (Trang 65 - 68)

Trong tin học, dễ thấy làta có thể biểu diễn mỗi chữ cái trong Bảng chữ cái tiếng Anh bằng một xâu nhị phân độ dài 5 (Vì chỉ có 26 chữ cái và có tới 25 = 32 xâu nhị phân độ dài 5) ; hoặc bằng một xâu nhị phân có độ dài không quá 4 (Vì có tới xâu nhị phân kiểu này).

Định nghĩa 1: Một cách mã hóa gọi là mã tiền tố nếu xâu nhị phân ứng với một chữ cái nào đó không phải là tiền tố (phần đầu) của xâu nhị phân ứng với một chữ cái khác.

Ví dụ 1: Trong các sơ đồ mã sau :

Chữ cái A E T S

Mã T1 11 00 10 01

Mã T2 0 1 01 001

Mã T1là một mã tiền tố, mã T2không phải là một mã tiền tố.

Đối với mã T1, từ TEAS được mã bởi xâu nhị phân 10001101. Và ngược lại, xâu 10001101 chỉ là mã của từ TEAS.

Đối với mã T2 , từ TEAS có mã là 0110001. Nhưng ngược lại, xâu 0110001 có thể là mã của các từ AEEAS ; AEEAAT ; AEEAAAE (giải mã không duy nhất).

Chú ý:

(1) Đối với các mã tiền tố, mỗi từđƣợc mã hóa bởi một xâu nhịphân và ngƣợc lại mỗi xâu nhị phân là mã của đúng một từ duy nhất.

(2) Mỗi cách mã hóa có thể biểu diễn bằng một cây nhị phân (còn gọi là cây mã) nhƣ sau :

- Các cạnh của cây mã được gán nhãn0 hoặc 1.

- Một đỉnh của cây mã đƣợc gán nhãn là chữ cái x nếu dãy các nhãn của các cạnh trên đƣờng đi từ gốc đến đỉnh x chính là xâu nhị phân mã hóa cho một chữ cái này.

(3) Một cách mã hóa là mã tiền tố khi và chỉ khi trong cây mã của nó, chỉ có các lá mới có nhãn là các chữ cái. Nếu tồn tại đỉnh trong có nhãn là chữcái thì đó không phải là mã tiền tố.

(4) Đểgiải mã một xâu nhịphân thì ta dùng dãy các bít để tạo thành đƣờng đi bắt đầu từ gốc của cây mã, khi gặp lá thì kết thúc và bắt đầu đƣờng đi mới cũng từ gốc.

Hình 4.7. Cây nhị phân biểu diễn cho mã T1 T2.

Để giải mã xâu nhị phân 1000110100 bởi mã T1, ta tìm đường đi bắt đầu từ gốc của T1 => TEASE.

Giải mã xâu 1000110100 bởi mã T2 tương tự ta được các từ EAAAEEAEAA ; EAATETAA ;

….

Định nghĩa 2:Mã tiền tố Tcủa bảng chữ cái X gọi là mã tiền tố tối ưuđối với bản tin Ynếu số bít dùng để mã hóa bản tin đó là ít nhất.

Ví d 3: Cho bảng chữ cái * +và hai mã tiền tố của X :

a b e f i l o r t u y

T1 0000 00010 00011 0010 0011 010 011 10 110 1110 1111

a b e f i l o r t u y

T2 0000 0001 0010 0011 010 0110 0111 1000 1001 101 110

Tính số bit cần dùng để mã hóa bản tin Y = “You are beautiful”.

Giải. Tần suất các chữ cái trong bản tin Y là:

Chữ cái a b e f i l o r t u y

Tần suất 2 1 2 1 1 1 1 1 1 3 1

Số bít cần dùng để mã hóa bản tin Y:

Đối với mã T1 là : N1 =8.4+3.5+3.3+2 = 58 (bit)

Đối với mã T2 là : N2 = 10.4+5.3 = 55 (bit).

Thuật toán Huffman (xác định mã tiền tố tối ưu của bảng chữ cái X đối với bản tin Y):

(1) : Coi mỗi chữ cái xi X là một lá và mỗi lá có kèm theo một nhãn f(xi) là tần suất của kí tự đó.

(2) : Sắp xếp các lá theo thứ tự có tần suất không giảm: f(x1) f(x2) f(xn) Nối hai lá có tần suất nhỏ nhất x1, x2ta đƣợc đỉnh trong y1, có nhãn là f(y1) = f(x1) + f(x2).

(3) : Coi y1 là lá (bỏ đi hai chữ cái x1, x2). Lặp lại bƣớc 2. Cứnhƣ vậy cho đến khi các lá đƣợc ghép hết.

Từcây mã Huffman thu đƣợc, suy ra bảng mã tối ƣu cần tìm.

Ví dụ 4:

Tìm mã tiền tố tối ưu cho tập kí tự X đối với bản tin Y =“You are beautiful” trong Ví dụ 1.

Giải. Sắp xếp các chữ cái trong tập kí tự X theo tần suất tăng dần :

Lặp 1 : Chữ cái b f i l o r t y a e u Tần suất 1 1 1 1 1 1 1 1 2 2 3 Ghép b và f được đỉnh trong y1 (2). Lặp 2: Ghép i và l được đỉnh trong y2 (2). Lặp 3: Ghép o và r được đỉnh trong y3 (2). Lặp 4: Ghép t và y được đỉnh trong y4 (2). Lặp 5: Ghép a và e được đỉnh trong y5 (4) Lặp 6 : Chữ cái y1 y2 y3 y4 u y5 Tần suất 2 2 2 2 3 4 Ghép y1 và y2được đỉnh trong y6 (4). Lặp 7 : Ghép y3 và y4được đỉnh trong y7 (4). Lặp 8 : Ghép u và y5được đỉnh trong y8 (7). Lặp 9 : Chữ cái y6 y7 y8 Tần suất 4 4 7 Ghép y6 và y7được đỉnh trong y9 (8). Lặp 10 : Ghép y8 và y9được đỉnh trong y10 (15).

Hình 4.8. Cây nhị phân biểu diễn mã tiền tố tối ƣu của bảng chữ cái X.

Vậy mãtiền tố tối ưu cần tìm là:

Chữ cái a b e f i l o r t u y

(Số bít cần dùng để mã hóa bản tin Y là N3 = 8.4 + 4.3 + 3.2 = 50 bít).

Một phần của tài liệu Bài giảng toán rời rạc ths nguyễn thị thúy hạnh (Trang 65 - 68)

Tải bản đầy đủ (PDF)

(113 trang)