Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
375,51 KB
Nội dung
Giáo viên hướng dẫn
Thầy Nguyễn Thành Nhựt
Cô Mai Trăng Thanh
Mã Lempel – Ziv
Nhóm 3
Võ Thị Ngọc Giàu
Hà Minh Hoàng
Ngô Đình Quang Huy
Phan Thị Trà My
0511089
0511100
0511107
0511158
1
Giới thiệu sơ lược
Kết hợp giữa 2 thuật toán của
Abraham Lempel và Jacob Ziv từ
năm 1977-1978.
Là một thuật toán nén dữ liệu
không mất thông tin.
Ứng dụng nhiều trong các tiện ích
như: zip, gzip, nén ảnh GIF và
chuẩn modem V.42, ...
Abraham Lempel
Jacob Ziv
2
Giới thiệu sơ lược(tt)
Hai thuật toán nguyên bản là LZ77 và
LZ78.
3
LZ78
Phương pháp nén: thay thế một phần của
chuỗi bởi “con trỏ” tới chuỗi tiền tố.
Thứ tự từ điển của chuỗi con: chuỗi con xuất
hiện sau phải khác với chuỗi con trước đó. Có
nghĩa là chuỗi sau sẽ khác hẳn với chuỗi trước
hoặc sai khác với chuỗi trước ít nhất 1 bit.
Chuỗi con trước sẽ là “tiền tố” của 1 hoặc
nhiều chuỗi con sau.
4
LZ78 – Ví dụ
Cho chuỗi 1011010100010
Tách thành các chuỗi con theo
thứ tự từ điển:
1, 0, 11, 01, 010, 00, 10.
5
LZ78 – Mã hóa
9Chia chuỗi cần mã hóa thành nhiều chuỗi
con theo thứ tự từ điển của chuỗi con;
9Đánh số thứ tự các chuỗi con;
9Thay thế một chuỗi con bởi hai phần:
Phần “con trỏ” đến chuỗi tiền tố: số thứ tự (nhị
phân) của chuỗi tiền tố;
¾ Phần bit sai khác với chuỗi tiền tố: 1 bit.
¾
9Ghép các chuỗi con lại ta được chuỗi mã
hóa.
6
LZ78 – Lưu ý
Với chuỗi con thứ n, ta sẽ cần
[log2n] bit cho phần “con trỏ” .
VD: chuỗi thứ 2 cần 1 bit cho
phần “con trỏ”, chuỗi thứ 3 thì
cần 2 bit, ...
7
LZ78 – Ví dụ mã hóa
VD: mã hóa chuỗi 1011010100010.
Bảng mã hóa:
Chuỗi con
λ
1
0
11
01
010
00
10
n
0
1
2
3
4
5
6
7
n (nhị phân) 000 001 010
011
100
101
110
111
(con trỏ , bit)
( , 1) (0 , 0) (01 , 1) (10 , 1) (100 , 0) (010 , 0) (001 , 0)
=> Chuỗi mã hóa:
100011101100001000010
8
LZ78 – Giải mã
9Từ chuỗi mã hóa, ta tách thành các
chuỗi con. Mỗi chuỗi con n gồm 2
phần:
Phần “con trỏ” đến chuỗi tiền tố: [log2n] bit;
Phần bit khác với chuỗi tiền tố: 1 bit.
9Thay phần “con trỏ” bằng giá trị của
chuỗi con tiền tố.
9Ghép các chuỗi con lại ta được chuỗi
gốc.
9
LZ78 – Ví dụ giải mã
Giãi mã chuỗi 100011101100001000010
Bảng giải mã:
n
(con trỏ , bit)
Chuỗi con
1
2
3
4
5
6
7
( , 1)
(0 , 0)
(01 , 1)
(10 , 1)
(100 , 0)
(010 , 0)
(001 , 0)
1
0
11
01
010
00
10
=> Chuỗi gốc: 1011010100010
10
LZ78 – Ví dụ
VD1: Mã hóa chuỗi
000000000000100000000000
sử dụng thuật toán Lempel – Ziv.
VD2: Giải mã chuỗi
00101011101100100100011010101000011
được mã hóa bằng thuật toán Lempel – Ziv.
11
LZ78 – Giải ví dụ 1
Mã hóa chuỗi
000000000000100000000000
Bảng mã hóa:
Chuỗi con
λ
0
00
000
0000
001
00000 000000
n
0
1
2
3
4
5
6
7
n (nhị phân) 000 001 010
011
100
101
110
111
(con trỏ , bit)
( , 0) (1 , 0) (10 , 0) (11 , 0) (010 , 1) (100 , 0) (110 , 0)
=> Chuỗi mã hóa:
010100110010110001100
12
LZ78 – Giải ví dụ 2
Giải mã chuỗi
00101011101100100100011010101000011
Bảng giải mã:
n
(con trỏ , bit)
Chuỗi con
1
2
3
4
5
6
7
8
9
10
( , 0)
(0 , 1)
(01 , 0)
(11 , 1)
(011 , 0)
(010 , 0)
(100 , 0)
(110 , 1)
(0101 , 0)
(0001 , 1)
0
1
00
001
000
10
0010
101
0000
01
=> Chuỗi gốc: 0100001000100010101000001
13
LZ78 – Nhận xét
Ưu điểm:
9Không cần phải lưu trữ “từ điển”, có
thể xây dựng lại từ quá trình giải mã.
Nhược điểm:
9“Từ điển” tăng lên không giới hạn;
9Các chuỗi con dài xuất hiện khá trễ
trong quá trình xây dựng “từ điển”.
14
Tài liệu tham khảo
Christina Zeeh - Seminar “Famous Algorithms”.
David J.C. MacKay - Information Theory, Inference, and
Learning Algorithms.
http://en.wikipedia.org/wiki/lempel - ziv.
15
Thanks 4 ur attention!!!☺
16
[...]...LZ78 – Ví dụ VD1: Mã hóa chuỗi 000000000000100000000000 sử dụng thuật toán Lempel – Ziv VD2: Giải mã chuỗi 00101011101100100100011010101000011 được mã hóa bằng thuật toán Lempel – Ziv 11 LZ78 – Giải ví dụ 1 Mã hóa chuỗi 000000000000100000000000 Bảng mã hóa: Chuỗi con λ 0 00 000 0000 001 00000 000000 n 0 1 2 3 4 5 6 7 n (nhị phân) 000... lưu trữ “từ điển”, có thể xây dựng lại từ quá trình giải mã Nhược điểm: 9“Từ điển” tăng lên không giới hạn; 9Các chuỗi con dài xuất hiện khá trễ trong quá trình xây dựng “từ điển” 14 Tài liệu tham khảo Christina Zeeh - Seminar “Famous Algorithms” David J.C MacKay - Information Theory, Inference, and Learning Algorithms http://en.wikipedia.org/wiki /lempel - ziv 15 Thanks 4 ur attention!!!☺ 16 ... 2 3 4 5 6 7 n (nhị phân) 000 001 010 011 100 101 110 111 (con trỏ , bit) ( , 0) (1 , 0) (10 , 0) (11 , 0) (010 , 1) (100 , 0) (110 , 0) => Chuỗi mã hóa: 010100110010110001100 12 LZ78 – Giải ví dụ 2 Giải mã chuỗi 00101011101100100100011010101000011 Bảng giải mã: n (con trỏ , bit) Chuỗi con 1 2 3 4 5 6 7 8 9 10 ( , 0) (0 , 1) (01 , 0) (11 , 1) (011 , 0) (010 , 0) (100 , 0) (110 , 1) (0101 , 0) (0001 , ... GIF chuẩn modem V.42, Abraham Lempel Jacob Ziv Giới thiệu sơ lược(tt) Hai thuật toán nguyên LZ7 7 LZ7 8 LZ7 8 Phương pháp nén: thay phần chuỗi “con trỏ” tới chuỗi tiền tố Thứ tự từ điển chuỗi con:... trước bit Chuỗi trước “tiền tố” nhiều chuỗi sau LZ7 8 – Ví dụ Cho chuỗi 1011010100010 Tách thành chuỗi theo thứ tự từ điển: 1, 0, 11, 01, 010, 00, 10 LZ7 8 – Mã hóa 9Chia chuỗi cần mã hóa thành nhiều... 9Ghép chuỗi lại ta chuỗi mã hóa LZ7 8 – Lưu ý Với chuỗi thứ n, ta cần [log2n] bit cho phần “con trỏ” VD: chuỗi thứ cần bit cho phần “con trỏ”, chuỗi thứ cần bit, LZ7 8 – Ví dụ mã hóa VD: mã hóa