1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tiểu luận Phân tích và thiết kế thuật toán GiẢI THUẬT MÃ HÓA HUFFMAN

12 1,2K 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 12
Dung lượng 272 KB

Nội dung

NỘI DUNG TRÌNH BÀY NỘI DUNG TRÌNH BÀY 1. 1. Giới thiệu bài toán Giới thiệu bài toán 2. 2. Giải thuật Huffman Giải thuật Huffman 3. 3. Tính đúng đắn của giải thuật Huffman Tính đúng đắn của giải thuật Huffman 4. Cài đặt thuật toán 4. Cài đặt thuật toán Giả sử có một thông báo C là một chuỗi các ký tự, trong đó mỗi ký tự xuất hiện độc lập với cùng một xác xuất tại bất kỳ vị trí nào trong thông báo. Yêu cầu đặt ra là mã hóa thông báo thành một chuỗi các ký tự 0, 1. input: chuỗi ký tự C tần suất w[c], c∈C output: mã nhịp phân của thông báo C 1.Giới thiệu bài toán GiẢI THUẬT MÃ HÓA HUFFMAN Ví dụ: Xét thông báo gồm 5 ký tự a,b,c,d,e với tần suất các ký tự: Ký tự Tần suất(w i ) Mã 1 (l i ) a 0.12 000 b 0.4 001 c 0.15 010 d 0.08 011 e 0.25 100 Chiều dài trung bình của dãy nhị phân là: l tb = Σw i l i =3 GiẢI THUẬT MÃ HÓA HUFFMAN (tt) Cách khác là: xây dựng từ mã không là tiền tố của nhau. Chiều dài trung bình của dãy nhị phân là: l tb = Σw i l i ≈ 2.2 Vậy có cách mã hóa nào có l tb <2.2? Ký tự Tần suất(w i ) Mã 1 Mã 2 (l i ) a 0.12 000 000 b 0.4 001 11 c 0.15 010 01 d 0.08 011 001 e 0.25 100 10 GiẢI THUẬT MÃ HÓA HUFFMAN (tt) Vào năm 1952, D. Huffman đã phát minh ra một cách tổng quát để tìm ra bảng mã này một cách tốt nhất. Bước 1: Đếm số lần xuất hiện của mỗi kí tự trong tệp (tính tần suất xuất hiện của ký tự). Bước 2: Xây dựng cây nhị phân với các tần suất được chứa trong các nút. Một nút mới được tạo ra với 2 nút con là các nút có tần suất bé nhất, với giá trị tần suất của nút mới bằng tổng tần suất của 2 nút con. Lặp lại như vậy cho đến khi tất cả các nút tổ hợp thành 1 cây duy nhất. 2. Giải thuật Huffman GiẢI THUẬT MÃ HÓA HUFFMAN (tt) 0.08 0.12 0.15 0.25 0.4 d a c e b 0.2 d 0.08 a 0.12   Ví dụ: be 0.40.25 c 0.15  0.35 c 0.15 0.2 d 0.08 a 0.12 b 0.4 e 0.25 b 0.4  0.6 0.35 c 0.15 0.2 d 0.08 a 0.12 e 0.25 Chiều dài trung bình của mã là: l tb =0.12*4+0.4*1+0.15*3+0.08*4+0.25*2= 2.15 < 2.2 Quy ước: 0: đi đến cây con trái; 1: đi đến cây con phải. Cây mã hóa Huffman: 1.0 0.6 0.35 c 0.15 0.2 d 0.08 a 0.12 e 0.25 b 0.4 GiẢI THUẬT MÃ HÓA HUFFMAN (tt) Tính tham lam được thể hiện? 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. Tại mỗi bước 2 phần tử có tần số nhỏ nhất được lấy ra để kết hợp với nhau, kết quả là một phần tử mới được tạo ra 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. GiẢI THUẬT MÃ HÓA HUFFMAN (tt) 3. Tính đúng đắn của giải thuật Huffman Để chứng minh thuật toán Huffman là đúng, ta chỉ ra rằng bài toán xác định mã tiền tố tối ưu thể hiện sự lựa chọn tham lam. Bổ đề 16.2 Cho C là một bảng mẫu tự mà mỗi ký tự c có tần số là f[c]. Cho x và y là 2 ký tự trong C có tần số thấp nhất. Thì tồn tại mã tiền tố tối ưu đối với C mà trong đó những từ mã của x và y có chiều dài giống nhau và chỉ khác duy nhất ở bit cuối cùng. GiẢI THUẬT MÃ HÓA HUFFMAN (tt) GiẢI THUẬT MÃ HÓA HUFFMAN (tt) Bổ đề 16.3 Cho C là một bảng mẫu tự cho trước với tần số f[c] xác định với mỗi ký tự. Cho x và y là hai ký tự trong C với tần số nhỏ nhất. Cho C’ là bảng mẫu tự C với x và y bị xoá và có thêm ký tự mới z, vì vậy C’=C-{x,y}+{z}; xác định f của C’ cũng là của C, loại trừ rằng f[z]=f[x]+f[y]. Cho T’ là cây bất kỳ biểu diễn mã tiền tố tối ưu của bảng mẫu tự C’. Thì cây T, thu được từ T’ bằng việc thay thế nút lá z với một nút trong có x và y là con, biểu diễn mã tiền tố tối ưu cho bảng mẫu tự C. Bổ đề 16.4 Thủ tục Huffman hình thành nên mã tiền tố tối ưu. [...]...GiẢI THUẬT MÃ HÓA HUFFMAN (tt) 4 Xây dựng giải thuật mã hóa Huffman HUFFMAN(C) 1 n ← |C| 2 Q←C 3 for i =1 to n - 1 4 do allocate a new node z 5 left[z] ← EXTRACT-MIN (Q) 6 right[z] ← EXTRACT-MIN (Q) 7 f [z] ← f [x] + f [y] 8 INSERT(Q, z) 9 return EXTRACT-MIN(Q) Độ phức tạp tính toán: O(nlgn) Cơ sở lý thuyết của phương pháp tham lam . bài toán Giới thiệu bài toán 2. 2. Giải thuật Huffman Giải thuật Huffman 3. 3. Tính đúng đắn của giải thuật Huffman Tính đúng đắn của giải thuật Huffman 4. Cài đặt thuật toán 4. Cài đặt thuật. cách mã hóa nào có l tb <2.2? Ký tự Tần suất(w i ) Mã 1 Mã 2 (l i ) a 0.12 000 000 b 0.4 001 11 c 0.15 010 01 d 0.08 011 001 e 0.25 100 10 GiẢI THUẬT MÃ HÓA HUFFMAN (tt) Vào năm 1952, D. Huffman. để kết hợp với nhau, kết quả là một phần tử mới được tạo ra 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. GiẢI THUẬT MÃ HÓA HUFFMAN (tt) 3. Tính đúng đắn của giải thuật

Ngày đăng: 11/04/2015, 22:06

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w