Báo cáo tiểu luận Nén DỮ LIỆU HUFFMAN Hầu hết các tập tin trong máy tính có nhiều thông tin dư thừa Nén tập tin thực chất là mã hóa lại thông tin dư thừa Tầm quan trọng: Giảm kích thước dữ liệu: Để lưu trữ. Truyền dữ liệu. Tăng tính bảo mật.
Trang 2COMPANY LOGO
NỘI DUNG CHÍNH
IV Nén và giải nén III Xây dựng Cây Huffman
II Ý tưởng Nén dữ liệu Huffman
I Giới thiệu về nén và giải nén
V Cài đặt chương trình
Trang 3COMPANY LOGO
I Giới thiệu chung về nén và giải nén
Giới thiệu chung:
Hầu hết các tập tin trong máy tính có nhiều thông tin dư thừa
Nén tập tin thực chất là mã hóa lại thông tin
Trang 4COMPANY LOGO
Tác giả:
Được đề xuất bởi David A Huffman
khi còn là sinh viên.
Công bố năm 1952 trong bài báo "A
Method for the Construction of
Minimum - Redundancy Codes“
Sau này Huffman trở thành giảng
viên của Đại học California
II Ý TƯỞNG NÉN DỮ LIỆU HUFFMAN
II Ý tưởng nén dữ liệu Huffman
Trang 5COMPANY LOGO
II Ý TƯỞNG NÉN DỮ LIỆU HUFFMAN
Để lưu trữ dữ liệu trong máy tính, ta phải mã hóa chúng Ví dụ,
trong bộ mã ASCII nổi tiếng ra đời năm 1967, người ta dùng 8 bit
để mã hóa 1 ký tự, cụ thể như:
“A” = 1000001
“B” = 1000010
“C” = 1000011
Vậy, với bộ mã ASCII, chúng ta có thể mã hóa 28 = 256 ký tự,
với mỗi từ mã dài 8 bit.
Mã hóa dữ liệu
II Ý tưởng nén dữ liệu Huffman
Trang 6COMPANY LOGO
II Ý TƯỞNG NÉN DỮ LIỆU HUFFMAN
Trang 8Ký tự o xuất hiện 1 lần và ký tự a xuất hiện 3 lần đều dùng 3 bit như nhau.
Huffman nghĩ ra phương án ký tự nào xuất hiện nhiều lần thì nên dùng số bit
ít , ký tự nào xuất hiện ít thì có thể mã hóa bằng từ mã dài hơn.
Trang 9COMPANY LOGO
II Ý TƯỞNG NÉN DỮ LIỆU HUFFMAN
Tuy nhiên, nếu mã hóa với độ dài thay đổi, thì khi giải mã ta làm thế nào phân biệt được xâu bít nào là mã hóa của ký hiệu nào?
Một trong các giải pháp là dùng các dấu phẩy (“,”) để tách từ mã của các kí tự đứng cạnh nhau
Nhưng như thế số các dấu phẩy sẽ
chiếm một không gian đáng kể trong bảng mã
Và mã tiền tố là giải pháp phù hợp trong trường hợp này.
Trang 10COMPANY LOGO
II Ý TƯỞNG NÉN DỮ LIỆU HUFFMAN
Mã tiền tố là gì??
Nếu mã hóa “A”=0, “B”=01, “C”=11 thì bộ từ mã này
không là mã tiền tố Vì từ mã của “A” là tiền tố của từ
mã của “B”.
Nếu mã hóa “A”=0, “B”=10, “C”=11 thì bộ mã này là
mã tiền tố Khi đó, để mã hóa xâu “ACB” ta có
01110.
Xây dựng và biểu diễn mã tiền tố
Được xây dựng và biểu diễn bằng cây nhị phân gọi là
cây Huffman
II Ý tưởng nén dữ liệu Huffman
Trang 11COMPANY LOGO
III XÂY DỰNG CÂY HUFFMAN
Ví dụ: Giả sử ta có dữ liệu như sau:
“ma huffman”
n f
0,09 0,18 0,18 0,09 0,18
Tần suất
1 2
Trang 12COMPANY LOGO
Tạo 1 cây mới với cây con trái và cây con phải
là hai cây từ mảng cây có tần suất nhỏ nhất, tức là 2 cây ở vị trí 0 và 1
Khóa của cây cha là chuỗi gồm chuỗi cây con trái và cây con phải
Tần suất của cây cha là của 2 cây con trái và phải cộng lại
III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 13COMPANY LOGO
1 n 2
u 1 a 2 f 2 h 2 m 2
null 2
Sắp xếp lại mảng cây theo tần suất tăng dần, nếu bằng
nhau ưu tiên theo kí tự đầu của khóa
III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 14III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 15III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 17III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 19COMPANY LOGO
1 n 1
u 1 a 2 f 2 h 2 m 2 null 2
Tiếp tục sắp xếp
III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 20III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 21III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 22III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 23III Xây dựng cây Huffman
III XÂY DỰNG CÂY HUFFMAN
Trang 251
Trang 261
Trang 271
Trang 28IV Mã hóa và giải mã
1
1
Trang 291
Trang 30IV Mã hóa và giải mã
1
1
Trang 311
Trang 321
IV Nén và giải nén
Trang 331
Trang 341
Trang 35COMPANY LOGO
V Cài đặt chương trình
V CÀI DẶT CHƯƠNG TRÌNH
Trang 36Cảm ơn thầy và các bạn
đã chú ý theo dõi.
Thank You !