Giới thiệu về nén dữ liệu... Giới thiệu về nén dữ liệu... Mã hoá HuffmanMã Huffman -Là một thuật toán mã hoá dùng để nén dữ liệu.. -Dựa trên bảng tần suất xuất hiện các kí tự cần mã hóa
Trang 1LOGO TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐÀ NẴNG
Khoa Điện Tử– Viễn Thông
MÃ HOÁ HUFFMAN
ĐỀ TÀI:
Đà Nẵng, ngày 02 tháng 04 năm 2018
Trang 3I Giới thiệu về nén dữ liệu
Trang 4- Giảm kích thước dữ liệu
để lưu trữ và truyền đi
- Tăng tính bảo mật
I Giới thiệu về nén dữ liệu
Trang 5 Nén bảo toàn thông tin
Thông tin nguyên thủy không mất mát.
Hiệu suất nén không cao: 10% - 60%.
Các giải thuật tiêu biểu: Huffman, RLE, LZ77,
Nén không bảo toàn thông tin
Thông tin nguyên thủy bị mất mát.
Hiệu suất nén cao: 40% - 90%.
Các giải thuật tiêu biểu: MP3, JPEG, MP4,
Có 2 hình thức nén:
Trang 6II Mã hoá Huffman
Tác giả:
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“
Trang 7II Mã hoá Huffman
Mã Huffman
-Là một thuật toán mã hoá dùng để nén dữ liệu.
-Dựa trên bảng tần suất xuất hiện các kí tự cần mã hóa
để xây dựng một bộ mã nhị phân cho các kí tự đó sao cho dung lượng(số bit) sau khi mã hóa là nhỏ nhất.
-Ứng dụng: máy tính IBM, HDTV, modem, máy fax,…
Trang 8II Mã hoá Huffman
Ví dụ: Giả sử có dữ liệu sau:
Trang 9II Mã hoá Huffman
Ta thấy:
Ký 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 10II Mã hoá Huffman
Thuật toán mã hóa Huffman
Bước 1: Sắp xếp các ký tự nguồn theo thứ tự xác suất giảm
dần.
Bước 2: Kết hợp 2 giá trị có xác suất thấp nhất thành một từ
gốc mới với xác suất bằng tổng của 2 xác suất thấp nhất.
Bước 3: Tiếp tục kết hợp 2 giá trị có xác suất thấp nhất
trong tập giá trị gốc mới cho tới khi ta chỉ còn một giá trị gốc với xác suất là 1.
Bước 4: Sau khi có được cây mã Huffman hoàn chỉnh, tiến
hành gán các ký tự 0, 1 lên các nhánh của cây.
Bước 5: Sắp xếp các ký tự mã hoá từ gốc đến các nhánh, ta
có được từ mã tương ứng với các giá trị gốc ban đầu.
Trang 11Ví dụ: Giả sử ta có dữ liệu như sau:
“ma huffman”
n f
u
Các kĩ tự
0,1 0,2
0,1 0,2 0,2 0,1 0,1
Tần suất
1 2
Trang 14IV Mã hóa và giãi mã
Trang 15 Giãi mã:
IV Mã hóa và giãi mã
0100010010111000100101000111
Trang 26- Hệ số nén tương đối cao.
- Phương pháp thực hiện
tương đối đơn giản.
- Đòi hỏi ít bộ nhớ.
- Mất 2 lần duyệt file khi nén.
- Phải lưu trữ thông tin giải mã vào file nén.
- Phải xây dựng lại cây Huffman khi giải nén.
Ưu điểm
Nhược điểm
Trang 27LOGO