Công nghệ nén này có đ ợc là dựa trên cơ sở gán các mã ngắn hơn cho các Mư là Để đảm bảo cho kết quả giải duy nhất nếu không có mã nào là tiền tố Số l ợng các Bit của các ký tự đ ợ
Trang 1Tr ờng Đại Học Thông Tin Liên Lạc
Khoa Công Ngh Thông Tin
BÁO CÁO TH C HÀNH TRUY N THÔNG ĐA PH ƠNG TI N (6405)
Nhóm 2 GVHD: Đại úy, Ths Nguy n Trung Hi u
Kh hàHòa,à g yà 5àth gà à ă à 7
Trang 2Tr ờng Đại Học Thông Tin Liên Lạc Khoa Công Ngh Thông Tin
BÁO CÁO TH C HÀNH TRUY N THÔNG ĐA PH ƠNG TI N (6405)
Nhóm 2
Lê Trịnh Thiên Thạch
GVHD: Đại úy, Ths Nguy n Trung Hi u
Trang 3I Gi ới thi u mã hóa HUFFMAN
Mã hóa Huffman (David A Huffman)là một thuật toán mư hóa dùng để nén
Nén Huffman là một trong những ph ơng pháp nén phổ biến Việc mã hoá
này dựa trên ph ơng thức mư hoá theo độ dài thay đổi của các bit cho từng
ký tự
Công nghệ nén này có đ ợc là dựa trên cơ sở gán các mã ngắn hơn cho các
Mư là Để đảm bảo cho kết quả giải duy nhất nếu không có mã nào là tiền tố
Số l ợng các Bit của các ký tự đ ợc mã hoá là khác nhau Ký tự có tần xuất
Để xác định đ ợc bảng mư Huffman, chúng ta đi xây dựng cây nhị phân
II Giới thi u cây nhị phân HUFFMAN
Là cây nhị phân, mỗi nút chứa ký tự và trọng số (tần suất của ký tự đó)
Mỗi ký tự đ ợc biểu diễn bằng 1 nút lá (tính tiền tố)
Nút cha có tổng ký tự, tổng trọng số của 2 nút con
Các nút có trọng số, ký tự tăng dần từ trái sang phải
Các nút có trọng số lớn nằm gần nút gốc Các nút có trọng số nhỏ nằm xa nút
1 Nén với mã HUFFMAN
Mã Huffman
Là chuỗi nhị phân đ ợc sinh ra dựa trên cây Huffman
Mã Huffman của ký tự là đ ờng dẫn từ nút gốc đến nút lá đó
Sang trái ta đ ợc bit 0
Sang phải ta đ ợc bit 1
Có độ dài biến đổi (tối u bảng mã)
Các ký tự có tần suất lớn có độ dài ngắn
Các ký tự có tần suất nhỏ có độ dài dài hơn
Nén huffman không mất thông tin
Trang 4 Nén không mất thông tin
Dựa trên thống kê tần số: những ký tự xuất hiện nhiều lần, sử dụng ký
Thuật toán hiệu quả sử dụng: nén jpg, …
Ý t ởng:
Xây dựng bộ mã huffman
Đọc ký tự, chuyển sang dãy bit mới
Gửi đến nơi nhận.q
Đọc dãy bit, nhận dạng ký tự chuyển về ký tự cũ
2 Xây d ng mã HUFFMAN
Ý t ởng:
Xây dựng bảng thống kê tần số xuất hiện của các ký tự cần mã hóa
Mỗi phần tử đ ợc xem nh là đỉnh của một cây
Lặp cho đến lúc chỉ còn một cây
Chọn 2 cây có trọng số bé nhất ghép thành một cây mới
Từ đỉnh duyệt cây
Nếu về bên trái chọn bit 0
Về phải chọn bit 1
Đến lá thì dưy bit đư duyệt chính là mã mới của ký tự
3 Xây d ng cây nhị phân HUFFMAN
B1: Tạo N cây, mỗi cây chỉ có một nút gốc, mỗi nút gốc chỉ chứa một kí tự và
B2: Lặp lại thao tác sau cho đến khi chỉ còn 1 cây duy nhất:
Ghép 2 cây con có trọng số gốc nhỏ nhất thành 1 nút cha, có tổng ký tự,
Xóa các cây đư duyệt
Điều chỉnh lại cây nếu vi phạm tính chất
Trang 5Ví d ụ:
Trang 64 u điểm và nh ợc điểm
u điểm:
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ớ
Nh ợc điểm:
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
III Bài tập th c hành
Đề: Vẽ cây nhị phân phân Huffman cho tập ký tự sau
Trang 7Sau khi sắp xếp theo thứ tự thì bắt đầu vẽ cây HUFFMAN
Bên trái 0
Bên phải 1
Ký tự Mã Huffman
A 01
B 101
C 11110
D 1110
E 110
F 100
G 00
H 11111
Trang 8Sau khi làm xong ta có thể rút ra một hệ quả là:
Ký tự nào xuất hiện càng ít thì chuỗi bit càng dài nh ký tự A xuất hiện 8 lần
thì số bit chỉ có 2 và ký tự H xuất hiện 2 lần thì chuỗi bit có 5 ký tự
Đó chính là u điểm của Huffman, nó sẽ biến 1 ký tự có số lần xuất hiện
Do đó khi ta nén xuống thì sẽ giảm đ ợc độ chiếm không gian, tuy nhiên với
Huffman một số tr ờng hợp sau khi nén xong thì không gian lại nhiều hơn Ngoài ra còn l u ý
Cây nhị phân này có 15 node đếm từ gốc xuống, và cây nhị phân này có 8 ký tự