Title: Lý Thuyết Thông Tin
1MÔN H?C LÝ THUY?T THÔNG TINCh? d? Mã hóa
Lempel-Ziv
Tru?ng Ð?i H?c Ði?n L?c Khoa Ði?n T? Vi?n Thông
-
-
-
Gi?ng viên b? môn Vu Ng?c Châm - Nhóm
Th?c Hi?n Nhóm 10 -
2 Danh Sách Các Thành Viên Nhóm 10
1 Nguy?n Qu?c Quân 2
Hoàng Van Lâm 3 Nguy?n Van Hùng
4 Nguy?n Van Khoái 5 Nguy?n
Van Ti?n Lâm
3N?I DUNG BÀI BÁO CÁO
- Gi?i thi?u v? m?t s? thu?t toán nén d? li?u .
- So lu?c v? l?ch s? thu?t toán Lempel-ziv.
- Co s? c?a phuong pháp Lempel-Ziv.
- Phuong Pháp nén d? li?u c?a Lempel-ziv.
- Phuong pháp gi?i nén c?a Lempel-Ziv.
- Gi?i thi?u so qua v? thu?t toán nén m? r?ng
Lempel-Ziv-Welch. - Phuong pháp nén theo Lempel-Ziv-Welch
- 8. Tông k?t.
4I M?T S? THU?T TOÁN NÉN HIÊN NAY
- Phuong phap ma hoa Huffman
- Phuong phap ma hoa loa?t dai RLC (Run Length
Coding) - Phuong phap ma hoa du? doan
- Phuong pháp mã hóa Lempel-ziv
- Ngoài ra còn r?t nhi?u thu?t toán khác n?a.
5- IISO LU?C L?CH S? LEMPEL-ZIV
? Do Abraham Lempel và Jacod Ziv dua ra. Và co
ca?i tiên vao nam 1977, 1978 va do do co tên
go?i la phuong phap nen LZ77, LZ78. Nam 1984,
Terry Welch da ca?i tiên hiê?u qua? hon va
da?t tên la LZW (Lempel-Ziv- Welch)
? Ngày nay có rât nhi?u thu?t toán khác nhau du?c
b?t ngu?n t? thu?t toán LZ và du?c ?ng d?ng r?ng
rãi di?n hình là thu?t toán LZMA du?c ?ng d?ng
trong chuong trình 7-zip.LZX ?ng d?ng trong d?nh
d?ng file CAB c?a Microsoft và d?nh d?ng CHM
trong các file c?a office 2007
6IIICO S? C?A PHUONG PHÁP NÉN LZ
? Ý tu?ng c?a phuong pháp là d?a trên vi?c thay
th? 1 c?m kí t? b?ng m?t con tr?, tr? d?n v? trí
xu?t hi?n tru?c dó c?a c?m kí t? ?y.
? Nhu các thu?t toán khác, thu?t toán LZ s? d?ng
1 t? di?n chung cho c? mã hóa và gi?i mã.
? Th? t? t? di?n c?a chu?i con chu?i con xu?t
hi?n sau ph?i khác v?i chu?i con tru?c dó. Có
nghia là chu?i sau s? khác h?n v?i chu?i tru?c
ho?c sai khác v?i chu?i tru?c ít nh?t 1 bit.Chu?i
con tru?c s? là ti?nt?c?a 1 ho?c nhi?u chu?i
con sau.
7IV PHUONG PHÁP NÉN C?A LEMPEL-ZIV
- Th? t? t? di?n c?a chu?i con Thay vì thông báo
v? trí do?n van l?p l?i trong quá kh?, mã LZ78
dánh s? t?t c? các do?n van sao cho m?i do?n ghi
nh?n s? hi?u do?n van l?p l?i trong quá kh? c?ng
v?i m?t ký t? mà nó làm cho do?n dó khác v?i do?n
trong quá kh?. Nhu v?y m?i do?n m?i là m?t do?n
ký t? trong quá kh? c?ng v?i m?t ký t? m?i.
8 IV PHUONG PHÁP NÉN C?A LEMPEL-ZIV
?Các Bu?c Th?c Hi?n Qúa Trình Nén
?Bu?c 1 Chia chu?i c?n mã hóa thành nhi?u chu?i
con theo th? t? t? di?n c?a chu?i con.
?Bu?c 2 Ðánh s? th? t? các chu?i con.
?Bu?c 3 Thay th? m?t chu?i con b?i hai ph?n
? Ph?n con tr? d?n chu?i ti?n t? S? th? t? c?a
chu?i ti?n t?. ? Ph?n bít sai khác v?i chu?i
ti?n t? giá tr? làm nó sai khác v?i chu?i
ti?n t?. ?Bu?c 4 Ghép các chu?i con l?i ta
du?c chu?i k?t qu?.
9 IV PHUONG PHÁP NÉN C?A LEMPEL-ZIV
Ví d? Ta có do?n van b?n c?n mã hóa sau.
aaabbabaabaaabab bây gi? ta s? mã hóa nó theo
LZ78. ?Các bu?c thao tác du?c mô ph?ng du?i b?ng
sau ? Nhu v?y k?t qu? nén c?a chúng ta
là (0,a) (1,a) (0,b) (3,a) (4,a) (5,a)
(4,b)
Input A Aa B Ba baa baaa bab
Ðo?n 1 2 3 4 5 6 7
Output 0a 1a 0b 3a 4a 5a 4b
10 IV PHUONG PHÁP NÉN C?A LEMPEL-ZIV
Ví d? 2 Cho chu?i 1011010100010. Hãy mã hóa nó
theo phuong pháp LZ78
Bài Làm
? Bu?c 1 Theo quy t?c t? di?n ta chia chu?i
thành các do?n 1 , 0 , 11 , 01 , 010 , 00, 10
? Bu?c 2 Ðánh s? th? t? các chu?i con 1-1 , 0-2
, 11-3 01-4 , 010-5 , 00-6 , 10-7. ?Bu?c 3
Thay th? m?t chu?i con b?i hai ph?n ta du?c k?t
qu?. (con tr?, bít) (,1) (0,0) (1,1) (2-1) (4,0)
(2,0) (1,0) ?Bu?c 4 Ghép các chu?i con l?i ta
du?c chu?i k?t qu?. (,1) (0,0) (1,1) (2-1) (4,0)
(2,0) (1,0). Ta s? xem rõ hon trong b?ng sau.
11IV PHUONG PHÁP NÉN C?A LEMPEL-ZIV ? Nhu
v?y k?t qu? nén c?a chúng ta là
100011101100001000010
Chu?i Con 1 0 11 01 010 00 10
Ðo?n 1 2 3 4 5 6 7
Ðo?n Nh? Phân 001 010 011 100 101 110 111
(Con tr?,bít) (,1) (0,0) (01,1) (10,1) (100,0) (010,0) (001,0)
12 V PHUONG PHÁP Gi?I NÉN C?A LEMPEL-ZIV
? Các Bu?c Gi?i Mã Theo Lempel-Ziv. ? Bu?c 1 T?
chu?i mã hóa ta tách thành các chu?i con,m?i
chu?i con g?m hai ph?n. ?Ph?n con tr?
d?n chu?i ti?n t? log2n bit ? ?Ph?n
bit khác v?i chu?i ti?n t? 1 bit. ?Bu?c 2 Thay
ph?n con tr? b?i giá tr? c?a chu?i con ti?n
t?. ? Bu?c 3 Ghép các chu?i con l?i ta du?c
chu?i g?c. Chú gi?i v? log2n bit. Trong
lempel-Ziv thì v?i chu?i con th? n ta s? c?n
log2n bit cho ph?n con tr?. Ví D? Chu?i th? 2
c?n 1 bít cho ph?n con tr?, chu?i th? 3 thì c?n 2
bit
13V PHUONG PHÁP Gi?I NÉN C?A LEMPEL-ZIV Ví
d? Cho chu?i sau 100011101100001000010 hãy gi?i
mã nó theo phuong pháp LZ78.
Bài gi?i Quá
trình gi?i mã chu?i 100011101100001000010 du?c
th?c hi?n trong b?n sau. ? Nhu v?y
k?t qu? gi?i nén c?a chúng ta là 1011010100010
Ðo?n (con tr?, bít) Chu?i con
1 (,1) 1
2 (0,0) 0
3 (01,1) 11
4 (10,1) 01
5 (100,0) 010
6 (010,0) 00
7 (001,0) 10
14V PHUONG PHÁP NÉN VÀ Gi?I NÉN C?A LEMPEL-ZIV
- Luy?n T?p.
- Bài 1 Cho chu?i 000000000000100000000000 b?n
hãy mã hóa nó theo phuong pháp LZ78. - Bai2 Cho chu?i 0010100110100 là chu?i dã du?c
mã hóa. B?n hãy tìm mã ngu?n c?a nó theo phuong
pháp LZ78. - 2. Bài gi?i.
- Bài 1. Chu?i sau khi mã hóa là
- 010100110010110001100
- Bài 2. Mã ngu?n 01000110
- R?t c?m on 2 b?n ?!!!!
15VI GT PHUONG PHÁP MÃ HÓA LEMPEL-ZIV-WELCH
? Lempei-Ziv-Welch nhìn chung là m?t thu?t toán
m? r?ng c?a Lempel-Ziv. ? V? co b?n
Lempel-Ziv-Welch nó là Thu?t toán du?c Terry
Welch c?i ti?n t? thu?t toán Lempel-Ziv nên nó
hi?u qu? hon và nhanh hon LZ r?t nhi?u. ? Uu di?m
c?a LZW là h? s? nén tuong d?i cao, trong t?p tin
nén không c?n ph?i ch?a b?ng mã.
16 VI GT PHUONG PHÁP MÃ HÓA LEMPEL-ZIV-WELCH
?T? Ði?n Mã Hóa LZW. ?Do kích thu?c b? nh? không
ph?i vô h?n và d? d?m b?o t?c d? tìm ki?m, t?
di?n ch? gi?i h?n 4096 ? ph?n t? dùng d? luu l?n
nh?t là 4096 giá tr? c?a các t? mã. ? C?u trúc t?
di?n nhu sau ? 256 t? mã d?u tiên theo th? t? t?
0255. Ðây là mã c?a 256 ký t? co b?n trong b?ng
mã ASCII. ? T? mã th? 256 ch?a m?t mã d?c bi?t là
mã xoá (CC- Clear Code). ? T? mã th? 257 ch?a
mã k?t thúc thông tin (EOI End of information).
Mã này có giá tr? là 257. ? Các t? mã còn l?i (t?
258 d?n 4095) ch?a các m?u thu?ng l?p l?i trong
?nh.
17VI GT PHUONG PHÁP MÃ HÓA LEMPEL-ZIV-WELCH
? Giá Tr? C?a Các Chu?i Trong T? Ði?n. ? Các mã
t? 0-255 mã hóa b?i 8 bít. ?Các mã t? 256-511 mã
hóa b?i 9 bít. ?Các t? mã t? 512 d?n 1023 bi?u
di?n b?i 10 bit. ?T? 1024 d?n 2047 bi?u di?n b?i
11 bit. ?T? 2048 d?n 4095 bi?u di?n b?i 12
bit.
18VI GT PHUONG PHÁP MÃ HÓA LEMPEL-ZIV-WELCH
- ? Có b?n qui t?c d? th?c hiên vi?c nén d? li?u
theo thu?t toán LZW là - Qui t?c 1 256 d?u hi?u d?u tiên du?c dành cho
các kí t? don trong ASCII. - Qui t?c 2 C? g?ng so sánh v?i "t? di?n" khi
trong b? d?m ch?a dã có nhi?u hon hai kí t?. - Qui t?c 3 Các kí t? ? d?u vào (Nh?n t? t?p tin
s? du?c nén) du?c b? sung vào b? d?m ch?a d?n khi
chu?i kí t? trong b? d?m ch?a không có trong "t?
di?n". - Qui t?c 4 Khi b? d?m ch?a có m?t chu?i mà trong
"t? di?n" không có thì chu?i trong b? d?m ch?a
du?c dem vào "t? di?n". Kí t? cu?i cùng c?a chu?i
kí t? trong b? d?m ch?a ph?i ? l?i trong b? d?m
ch?a d? ti?p t?c t?o thành chu?i m?i.
19VII PHUONG PHÁP MÃ HÓA LEMPEL-ZIV-WELCH
- ? Các bu?c th?c hi?n thu?t toán.
- 1.LZW b?t d?u b?i 1 t? di?n 256 kí t? (trong
tru?ng h?p s? d?ng b?ng mã 8 bits) và s? d?ng
chúng nhu t?p kí t? chu?n. Sau dó m?i l?n d?c nó
d?c 8 bits (ví d? 't', 'r', ...) và mã hóa thành
con s? tuong ?ng v?i ch? m?c c?a kí t? dó trong
t? di?n. - 2. M?i khi LZW di qua 1 chu?i con m?i (gi? s?
"tr") thì nó thêm chu?i con dó vào t? di?n. - 3. M?i khi nó di qua 1 chu?i con mà nó dã th?y
tru?c dó, nó ch? d?c thêm 1 kí t? m?i n?a và c?ng
v?i chu?i con dã bi?t d? t?o ra 1 chu?i con m?i.
L?n ti?p theo LZW b?t g?p m?t chu?i con dã có, nó
ch? có vi?c s? d?ng s? ch? m?c tuong ?ng trong t?
di?n.
20VII PHUONG PHÁP MÃ HÓA LEMPEL-ZIV-WELCH Ví
d? Các bu?c d? mã hoá chu?i "ABCBCABCABCD" nhu
sau
Bu?c w k wk Chu?i Hi?n th? Ð?u ra
0 Null A A
1 A B AB AB 258 A65
2 B C BC BC 259 B66
3 C B CB CB 260 C67
4 B C BC
5 BC A BCA BCA 261 BC259
6 A B AB
7 AB C ABC ABC 262 AB258
8 C A CA CA 263 C67
9 A B AB
10 AB C ABC
11 ABC D ABCD ABCD 264 ABC262
12 D Null D 68
21VII PHUONG PHÁP MÃ HÓA LEMPEL-ZIV-WELCH
- Chu?i ra 65-66-67-259-258-67-262-68
- Ð?u vào kích thu?c là 12.896bits
- Ð?u ra kích thu?c 5.83.967 bits
- T? l? nén là 96/671,43
- Nh?n xét Trong thu?t toán nén này, ph?n l?n th?i
gian khi b?t d?u nén ch? y?u m?t vào vi?c t?o "t?
di?n". Khi "t? di?n" d? l?n, xác su?t g?p chu?i ?
b? d?m ch?a trong "t? di?n" tang lên và càng nén
du?c nhi?u hon
22VIIIT?NG K?T
- ? Qua quá trình tìm hi?u v? thu?t toán nén gi?u
li?u Lempel-Ziv thì chúng ta th?y thu?t toán này
khá là hi?u qu? trong vi?c nén gi? li?u nh?t là
gi? li?u ? d?nh d?ng van b?n. - ? Trong th?c t? thì phuong pháp nén này du?c áp
d?ng khá ph? bi?n và d?c bi?t là trong Word 2007
và chuong chình nén gi? li?u 7-Zip. - ? Trong quá trình nhóm tìm hi?u v? ch? d? và
trình bày tru?c l?p còn có nhi?u ch? chua du?c
t?t l?m. Mong cô cùng các b?n dóng góp ý ki?n, d?
bài báo cáo du?c hoàn ch?nh hon. - R?t c?m on cô cùng các b?n dã l?ng nghe. ? ? ?
23C?m on Cô Cùng Các B?n Ðã L?ng Nghe ?!!!