Mã hĩa Huffman động (dynamic Huffman encoding)

Một phần của tài liệu Bài giảng kỹ thuật thông tin số (Trang 96 - 99)

- Chương IV H

b) Giải mã tức thời (instaneous decoding)

4.4.2 Mã hĩa Huffman động (dynamic Huffman encoding)

Khác với mã hĩa Huffman cơ sở, phương pháp mã hĩa Huffman động khơng yêu cầu bên phát và bên thu biết bảng mã liên quan đến dữ liệu phát, cũng khơng yêu cầu kết quả thống kê xác suất xuất hiện ký tự của nguồn tin. Phương pháp mã hĩa Huffman động cho phép cả bên phát (mã hĩa) và bên thu (giải mã) lập cây mã Huffman - và dẫn đến bảng mã - một cách động khi ký tự được phát/ thu.

Với phương pháp này, nếu ký tự phát đang cĩ mặt trong cây mã thì từ mã tương ứng sẽ được xác định giống mã Huffman cơ sở và gới đi theo cách thơng thường. Nếu ký tự chưa cĩ mặt trong cây mã - nghĩa là xuất hiện lần đầu, thì nĩ sẽ được gởi đi theo dạng khơng nén. Bộ mã hĩa bên phát cập nhật vào cây mã Huffman bằng cách tăng số lần xuất hiện (tăng trọng số) của ký tự phát hoặc là đưa thêm ký tự mới vào cây.

Ngồi ra, để cho bên thu cĩ thể xác định được ký tự mà nĩ nhận, mỗi từ mã phát được mã hĩa theo cùng cách của bên thu. Bên thu tiến hành các thay đổi giống như bên phát và cĩ một bảng sao riêng của cây. Nhờ đĩ bên thu sẽ xác định đúng từ mã tiếp theo được nhận tuỳ vào cấu trúc cây mới cập nhật.

- Chương IV -

nút lá rỗng (empty leaf node) - nút lá cĩ 0 lần xuất hiện.

Để mơ tả chi tiết phương pháp này, ta xét ví dụ bản tin truyền đi bắt đầu bằng dãy ký tự:

A B C D C D C . . .

Hình 4.5 minh họa các bước lập cây mã Huffman.

Trước tiên, cả bên phát và bên thu cùng thành lập cây ban đầu ( một nhánh 0 và một nút lá rỗng e0).

Tiếp theo, bộ mã hĩa bắt đầu đọc ký tự đầu tiên trong bản tin - A - và gán 'A'ï vào nhánh phải- nhánh 1 đầu tiên. Vì đây là lần xuất hiện đầu tiên của 'A' nên nĩ được truyền đi khơng nén (dạng ASCII). Vì cây bên giải mã đang rỗng nên nĩ nhận ra dãy bit nhận được là một ký tự khơng nén và nĩ sắp xếp ký tự này vào trong cây theo cách giống bên mã hĩa (hình 4.5a). Với mỗi ký tự tiếp theo, trước hết bộ mã hĩa kiểm tra xem ký tự đĩ đã cĩ mặt trong cây mã chưa. Nếu cĩ rồi thì bộ mã hĩa sẽ gởi từ mã theo cách thơng thường giống như mã Huffman cơ sở, từ mã được xác định bởi vị trí của ký tự trong cây. Nếu chưa cĩ thì bộ mã hĩa gởi từ mã hiện hành cho nút lá rỗng - được xác định bởi vị trí của nút lá rỗng trong cây, theo sau là từ mã khơng nén của ký tự. Vì bộ giải mã cũng cĩ cây mã y như vậy nên nĩ cĩ thể suy ra từ dịng bit nhận được đâu là từ mã cĩ nén, đâu là nút lá rỗng với ký tự khơng nén theo sau. Bộ mã hĩa và giải mã cập nhật vào cây mã dựa trên ký tự cuối cùng được phát/ thu. Nếu đây là ký tự mới thì nút lá rỗng đang tồn tại trong cây được thay bằng một nút nhánh mới, nút lá rỗng được gán bên nhánh 0 và ký tự bên nhánh 1 (hình 4.5 b).

Nếu ký tự đã cĩ mặt trong cây thì số lần xuất hiện của nút lá tương ứng tăng lên 1. Ví duû hình

4.5 e, bộ mã hĩa kiểm tra và thấy ký tự 'C' đã cĩ mặt trong cây mã nên nĩ truyền đi từ mã

tương ứng là '01', trọng số của nút C từ 1 tăng lên thành 2. Các ví dụ tương tự khác ở trong

hình 4.5 f vaì g.

Lúc này, vị trí của nút lá cĩ thể khơng cịn là vị trí tối ưu nữa. Vì vậy, mỗi lần cập nhật cây - tức là thêm ký tự mới hoặc tăng số lần xuất hiện của ký tự sẵn cĩ - cả bộ mã hĩa và giải mã đều phải kiểm tra và nếu cần thì phải thay đổi vị trí hiện tại của tất cả các nút trong cây. Để đảm bảo cả bộ mã hĩa và giải mã đều làm việc này theo cùng một cách, trước hết cả bộ mã hĩa và giải mã phải liệt kê các trọng số của các nút theo chiều từ trái sang phải, từ dưới lên trên bắt đầu từ nút lá rỗng. Nếu thứ tự sắp xếp tăng dần thì khơng thay đổi cây, nếu khơng đúng thì phải thay đổi cấu trúc của cây bằng cách thay đổi vị trí của các nút trong cây. Khi đưa nút lá đến vị trí mới phải kèm theo tồn bộ các nhánh và nút con của chúng (hình 4.5 c

đến 4.5 g).

Qua ví dụ trên ta thấy nếu truyền dãy ký tự A B C D C D C... bằng mã ASCII thì mất 49 bit, trong khi dùng mã Huffman động thì mất 41 bit. Băng thơng truyền dẫn chỉ được tiết kiệm bắt đầu từ khi cĩ ký tự lặp lại. Thực tế, các file văn bản luơn cĩ sự lặp lại ký tự, và mã Huffman động được ứng dụng trong nhiều ứng dụng truyền thơng, như là nén dữ liệu trong modem V.32.

- Chương IV - B1 C1 1 e 0 2 0 1 0 1 1 0 0 B1 e 0 A1 e 0 e 0 0 1 1 0 A1 1 A1 1 0 2 B1 A1 1 0 C1 1 e 0 0 1 0 1 (c) C 0 0 'C' (d) D 1 0 0 'D' (b) B 0 'B' (a) A 'A' Phát Ký tự

Một phần của tài liệu Bài giảng kỹ thuật thông tin số (Trang 96 - 99)

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

(161 trang)