Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 21 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
21
Dung lượng
1,04 MB
Nội dung
Nhóm 5: Thuật tốn mã hố nguồn Huffman Thành viên nhóm: Nguyễn Duy Tin (102210380) Nguyễn Văn Dũng (102210356) Lê Tuấn Nguyên Khôi (102210359) Nguyên tắc xây dựng mã Hufman ● Huffman đưa nguyên tắc để xây dựng hệ thống tối ưu sau: để mã prefix có độ dài tối thiểu điều kiện cần đủ thỏa mãn tính chất sau: ● Tính chất 1: Tính thứ tự độ dài mã: Nếu xếp tin theo thứ tự giảm dần xác suất p()≥p() với i < j độ dài từ mã tương ứng phải thỏa điều kiện ni≤nj ● Tính chất 2: Tính chất từ mã cuối: với thõa mãn điều kiện ≤ ≤ m (m số mã) từ mã cuối ln có độ dài n nhau, trọng số khác ký hiệu bên phải = = = ● Tính chất 3: Tính liên hệ từ mã cuối từ mà trước cuối: Một dãy gồm hiệu phải từ mã prefix từ mã thứ N từ mã cuối mã Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Đánh giá độ tối ưu thuật toán Huffman ● Với phép mã hóa tối ưu ta có: = H(A) ● Nguồn rời rạc A = , i = ● ● H(A) = Þ So sánh H(A) Nhận xét: phép mã hóa gần tối ưu Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Đề Một văn viết từ kí từ … , biết tần số xuất ký tự văn 1200, 2400, 1200, 3200, 1500, 500 ( lần ) Hãy thực mã hoá Huffman cho văn Kí tự Tần số 1200 2400 1200 3200 1500 500 Tần suất 0.12 0.24 0.12 0.32 0.15 0.05 Bước 1: Sắp xếp nguồn X theo xác suất giảm dần Kí tự Tần số 3200 2400 1500 1200 1200 500 Tần suất 0.32 0.24 0.15 0.12 0.12 0.05 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Bước 2: Tạo danh sách chứa nút bao gồm phần tử đầu vào trọng số nút tần suất xuất theo xác suất bảng xếp 𝐱𝟒 𝐱𝟐 𝐱𝟓 𝐱𝟏 𝐱𝟑 𝐱𝟔 0.32 0.24 0,15 0.12 0,12 0,05 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Bước 3: Từ danh sách này, lấy phần tử có tần suất xuất Sau gắn nút vừa lấy vào nút gốc với trọng số tổng trọng số nút vừa lấy để tạo thành 𝐱𝟒 𝐱𝟐 𝐱𝟓 𝐱𝟏 𝐱𝟑 𝐱𝟔 0.32 0.24 0,15 0.12 0,12 0,05 𝐱𝟑−𝟔 0,17 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Bước 4: Đẩy vào lại danh sách 𝐱𝟒 0.32 𝐱𝟐 0.24 𝐱𝟑−𝟔 0,17 𝐱𝟓 0,15 𝐱𝟏 0.12 𝐱𝟑 𝐱𝟔 0,12 0,05 Bước 5: Lặp lại bước danh sách nút gốc Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Lần lập 1: 𝐱𝟒 0.32 𝐱𝟏−𝟓 𝐱𝟐 0.24 0.27 𝐱𝟓 𝐱𝟏 0,15 0.12 𝐱𝟑−𝟔 0,17 𝐱𝟑 𝐱𝟔 0,12 0,05 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Lần lập 2: 𝐱𝟒 𝐱𝟐−𝟑−𝟔 0.32 0.41 𝐱𝟐 0.24 𝐱𝟏−𝟓 0.27 𝐱𝟓 𝐱𝟏 𝐱𝟑−𝟔 0,17 0,15 0.12 𝐱𝟑 𝐱𝟔 0,12 0,05 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Lần lập 3: 𝐱𝟐−𝟑−𝟔 𝐱𝟒−𝟏−𝟓 0.41 𝐱𝟐 0.24 0.59 𝐱𝟒 𝐱𝟑−𝟔 0.32 0,17 𝐱𝟑 𝐱𝟔 0,12 0,05 𝐱𝟏−𝟓 0.27 𝐱𝟓 𝐱𝟏 0,15 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman 0.12 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Lần lập 4: 𝐱𝒓𝒐𝒐𝒇 𝐱𝟐 0.24 𝐱𝟐−𝟑−𝟔 𝐱𝟒−𝟏−𝟓 0.41 0.59 𝐱𝟑−𝟔 𝐱𝟒 0,17 𝐱𝟏−𝟓 0.27 0.32 𝐱𝟑 𝐱𝟔 𝐱𝟓 𝐱𝟏 0,12 0,05 0,15 0.12 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Bước 6: Xuất phát từ nút góc đánh số tập tin 0,1 cho nhánh ( cho nhánh bên trái, cho nhánh bên phải ) Quá trình dùng lại tất nhánh gán mã 𝐱𝟐−𝟑−𝟔 𝐱𝟐 0.24 0.41 𝐱𝒓𝒐𝒐𝒇 1 𝐱𝟑−𝟔 0,17 𝐱𝟒−𝟏−𝟓 0.59 𝐱𝟒 0.32 1 𝐱𝟏−𝟓 0.27 𝐱𝟑 𝐱𝟔 𝐱𝟓 𝐱𝟏 0,12 0,05 0,15 0.12 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Bước 7: Đánh mã cho nút lá, loại tất nút phụ ta thu tập tin cần tìm 𝐱𝟐−𝟑−𝟔 00 0.41 𝐱𝒓𝒐𝒐𝒇 𝐱𝟑−𝟔 𝐱𝟐 0,17 0.24 010 1 10 𝐱𝟑 𝐱𝟔 0,12 0,05 011 0.59 𝐱𝟒 0.32 𝐱𝟒−𝟏−𝟓 110 𝐱𝟏−𝟓 0.27 𝐱𝟓 𝐱𝟏 0,15 0.12 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman 111 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Các bước xây dựng thuật toán Huffman Bước 7: Đánh mã cho nút lá, loại tất nút phụ ta thu tập tin cần tìm 𝐱𝟐 𝐱𝟒 𝐱𝟑 𝐱𝟔 𝐱𝟓 𝐱𝟏 00 10 010 011 110 111 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Ứng dụng mã hoá Huffman để nén file Các bước thực nén: • Đọc file xác định ký tự xuất file & tần suất chúng • Dựng mã Huffman • Dựa vào mã thu mã hóa ký tự ghi vào file nén • Lưu mã vào cuối file nén Các bước thực giải nén: • Dựa vào mã lưu vào cuối file nén ta xây dựng lại mã Huffman • Dựa vào mã Huffman ta thu mã hoá ký tự • Sau dựa vào file nén tiền hành mã hố ngược lại kí tự H M U F A N 00 10 010 011 110 111 00-010-011-011-10-110-111 H U F F Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman M A N Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Ví dụ minh hoạ Ví dụ : Một file có 500 kí tự tương ứng với kí tự khác S, V, D, U, T Mỗi kí tự có xác suất xuất S: 0.5, V: 0.2, D: 0.15, U: 0.1, T: 0.05 Dùng giải thuật mã hóa Huffman, tính độ lớn file sau mã hóa ● Đối với cách mã hóa thơng thường, để mã hóa 500 kí tự cần tới 1500 bit để mã hóa để biểu diễn kí tự cần bit ●Với cách mã hóa Huffman ta gán chuỗi bit ngắn cho kí tự có xác suất xuất cao Ta gán: S: V: 01 D: 001 U: 0000 T: 0001 →Số bit cần để biểu diễn file : 500*( 1*0.5 + 2*0.2 + 3*0.15 + 4*0.1 + 4*0.05) = 975 bit →975 bit < 1000 bit (so với cách thông thường) Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Bài tập Cho bảng phân phối xác suất tín hiệu rời rạc sau: x A B C D E f(x) 0.2 0.5 0.1 0.05 0.15 a) Xây dựng mã Huffman b) Giải mã đoạn mã nhị phân sau: 10111110110111010100 c) Tính hiệu suất mã Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Bài tập 1: Cho bảng phân phối xác suất tín hiệu rời rạc sau: a) Xây dựng mã Huffman 𝐱𝑩 𝐱𝒓𝒐𝒐𝒇 𝐱𝑨−𝑬−𝑪−𝑫 0.5 100 𝐱 𝑬−𝑪−𝑫 0.3 𝐱𝑬 0.5 𝐱𝑪 −𝑫 0.15 1010 𝐱𝑪 0.1 0.15 𝐱𝑨 x A B C D E f(x) 0.2 0.5 0.1 0.05 0.15 11 0.2 𝐱𝑫 1011 0.05 Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Bài tập Cho bảng phân phối xác suất tín hiệu rời rạc sau: b) Giải mã đoạn mã sau: 10111110110111010100 Từ bảng Huffman ta có: A: 11 B: → 1011 11 1011 11 1010 100 C: 1010 D A D B A C E D: 1011 →DADBACE E: 100 x A B C D E f(x) 0.2 0.5 0.1 0.05 0.15 c) Tính hiệu suất mã ●Entropy = -0.2* -0.5* -0.15* -0.1* -0.05* = ●Độ dài trung bình từ mã: ●Hiệu suất mã: = 2*0.2 + 1*0.5 + 4*0.1 + 4*0.05 + 3*0.15 = / H(x) = Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Bài tập 2: Cho mã sau, mã mã Huffman: a) 010, 00, 011, 10, 111 b) 000, 001, 010, 011, 11, 10 a) b) 0 1 1 1 ● Bị dư 110 → Không phải mã Huffman 0 10 1 ● Đầy đủ từ mã → Mã Huffman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman Thuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufmanThuat.toan.ma.hoa.nguon.huffman.nguyen.tac.xay.dung.cay.ma.hufman