Xây dựng mã Huffman:

Một phần của tài liệu Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN PHƯƠNG PHÁP THAM LAM (Trang 25 - 27)

Huffman phát minh ra giải thuật tham lam nhằm xây dựng mã tiền tố tối ưu gọi là giải thuật mã hoá Huffman. Đúng với nhận xét của ta ở phần 16.2, sự kiểm chứng về độ tin cậy đúng đắn trên thuộc tính lựa chọn-tham lam và cấu trúc con tối ưu. Hơn nữa chứng minh rằng hiểu được những thuộc tính này và rồi phát triển dạng giả mã, đầu tiên ta biểu diễn dưới dạng giả mã. Làm như thế sẽ giúp làm rõ giải thuật chọn những chọn lựa tham lam như thế nào.

Trong dạng giả mã sau đây, ta giả sử rằng C là một tập hợp gồm n ký tự và mỗi ký tự c∈C là phần tử với tần số xác định f[c]. Giải thuật xây dựng cây T tương ứng với mã tối

ưu theo cách từ trên xuống. Nó bắt đầu với một tập gồm C lá và thực hiện một chuỗi gồm C −1 phép “kết hợp” để tạo ra cây cuối cùng. Một hàng đợi ưu tiên nhỏ nhất Q, được lập trên khoá f, được sử dụng để nhận biết 2 đối tượng có tần số nhỏ nhất để kết hợp với nhau. Kết quả của sự kết hợp 2 phần tử đó là một phần tử mới mà tần số của nó là tổng của các tần số của 2 phần tử được kết hợp.

Chẳng hạn, giải thuật Huffman được chỉ ra như ở minh hoạ 16.5. Vì rằng có 6 mẫu tự trong bảng chữ cái, kích thước chuỗi ban đầu là 6, và 5 bước kết nối được yêu cầu để xây dựng cây. Cây cuối cùng biểu diễn mã tiền tố tối ưu. Từ mã đối với mẫu tự là một chuỗi các nhãn dọc theo đường đi từ gốc đến mẫu tự đó.

Minh hoạ 16.5: Các bước của giải thuật Huffman với tần số được cho trong minh hoạ 16.3 mỗi đường đi chỉ ra nội dung của chuỗi được sắp xếp theo thứ tự tăng dần của tần số. Ở mỗi bước, 2 cây với tần số thấp nhất được kết hợp với nhau. Các lá được thể hiện bởi các hình chữ nhật chứa một ký tự và tần số của nó. Những nút trong được thể hiện bởi các vòng tròn chứa tổng các tần số của các nút con của nó. Nút ngoài cùng kết nối với nút trong bởi các con của nó có nhãn là 0 nếu đó là cạnh đi đến nút con trái và 1 nếu

đó là cạnh đi đến nút con phải. Từ mã cho một mẫu tự là một dãy các nhãn trên những cạnh kết nối gốc với lá biểu diễn cho mẫu tự đó. (a) Tập hợp ban đầu của n=6 nút, mỗi nút là một mẫu tự. (b)-(e) các giai đoạn trung gian. (f) Cây cuối cùng

Dòng 2 khởi tạo hàng đợi ưu tiên nhỏ nhất Q với các ký tự trong C. Vòng For ở dòng 3-8 lặp lại nhiều lần động tác trích ra 2 nút x và y có tần số thấp nhất trong hàng đợi, và thay thế chúng trong hàng đợi với một nút mới z thực hiện kết hợp chúng với nhau. Tần số của z được tính là tổng của các tần số của x và y ở dòng 7. Nút z có x là nút con trái và y là nút con phải. (Thứ tự này là tuỳ ý; đổi vị trí cây con trái và phải đều mang lại một mã khác có mức hao phí tương đương). Sau n-1 phép kết hợp, nút thứ nhất trái được để lại trong hàng đợi - gốc của cây mã hoá - được trả về giá trị ở dòng 9.

Phân tích thời gian chạy giải thuật Huffman cho thấy rằng Q được thực hiện như một đống nhị phân (xem Chương 6). Cho một tập hợp C gồm n ký tự, giá trị ban đầu của Q ở dòng 2 có thể được thực hiện trong O(n) thời gian dùng cho thủ tục BUILD_MIN_HEAP trong phần 6.3. Vòng Forở dòng 3-8 được thực hiện chính xác là n-1 lần, và bởi vì mỗi phép toán đống yêu cầu thời gian là O(lgn), nên vòng lặp đóng góp O(nlgn) vào thời gian chạy thuật toán. Vì vậy, tổng thời gian chạy của giải thuật Huffman trên tập hợp gồm n ký tự là O(nlgn).

Một phần của tài liệu Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN PHƯƠNG PHÁP THAM LAM (Trang 25 - 27)

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

(46 trang)
w