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

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.. input: chuỗi ký tự C tần suất w[c], c

Trang 1

NỘI DUNG TRÌNH BÀY

1 Giới thiệu bài toán

2 Giải thuật Huffman Giải thuật Huffman

3. Tính đúng đắn của giải thuật Huffman

4 Cài đặt thuật toán

Trang 2

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

Trang 3

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(wi) Mã 1 (li)

Chiều dài trung bình của dãy nhị phân là: ltb= wili=3

GiẢI THUẬT MÃ HÓA HUFFMAN (tt)

Trang 4

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à: ltb= wili  2.2

Vậy có cách mã hóa nào có ltb<2.2?

Ký tự Tần suất(wi) Mã 1 Mã 2 (li)

GiẢI THUẬT MÃ HÓA HUFFMAN (tt)

Trang 5

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)

Trang 6

0.08 0.12 0.15 0.25 0.4

0.2

d

0.08

a 0.12

Ví dụ:

b e

0.4 0.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

Trang 7

Chiều dài trung bình của mã là:

ltb=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)

Trang 8

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)

Trang 9

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)

Trang 10

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

Trang 11

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)

GiẢI THUẬT MÃ HÓA HUFFMAN (tt)

Trang 12

Cơ sở lý thuyết của phương pháp tham lam

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