Tải bản đầy đủ (.ppt) (12 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (488.32 KB, 12 trang )


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.

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)

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

×