1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Thuật toán mã hoá nguồn huffman nguyên tắc xây dựng cây mã hufman

21 33 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

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ã Đá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 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ã hố 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 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 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 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,15 0.12 0,17 𝐱𝟑 𝐱𝟔 0,12 0,05 Bước 5: Lặp lại bước danh sách nút gốc Các bước xây dựng thuật toán Huffman Lần lập 1: 𝐱𝟒 𝐱𝟏−𝟓 𝐱𝟐 𝐱𝟑−𝟔 0.32 0.27 0.24 0,17 𝐱𝟓 𝐱𝟏 0,15 0.12 𝐱𝟑 𝐱𝟔 0,12 0,05 Các bước xây dựng thuật toán Huffman Lần lập 2: 𝐱𝟐−𝟑−𝟔 0.41 𝐱𝟐 𝐱𝟑−𝟔 0.24 0,17 𝐱𝟒 𝐱𝟏−𝟓 0.32 0.27 𝐱𝟓 𝐱𝟏 0,15 𝐱𝟑 𝐱𝟔 0,12 0,05 0.12 Các bước xây dựng thuật toán Huffman Lần lập 3: 𝐱𝟐−𝟑−𝟔 𝐱𝟒−𝟏−𝟓 0.41 0.59 𝐱𝟐 𝐱𝟑−𝟔 𝐱𝟒 𝐱𝟏−𝟓 0.24 0,17 0.32 0.27 𝐱𝟑 𝐱𝟔 0,12 0,05 𝐱𝟓 𝐱𝟏 0,15 0.12 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 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ã 𝐱𝒓𝒐𝒐𝒇 1 𝐱𝟒−𝟏−𝟓 𝐱𝟐−𝟑−𝟔 𝐱𝟐 0.24 0.41 𝐱𝟑−𝟔 0,17 0.59 𝐱𝟒 0.32 1 𝐱𝟏−𝟓 0.27 𝐱𝟑 𝐱𝟔 𝐱𝟓 𝐱𝟏 0,12 0,05 0,15 0.12 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 𝐱𝒓𝒐𝒐𝒇 1 𝐱𝟒−𝟏−𝟓 𝐱𝟐−𝟑−𝟔 00 0.41 𝐱𝟑−𝟔 𝐱𝟐 0,17 0.24 010 10 𝐱𝟒 0.32 𝐱𝟑 𝐱𝟔 0,12 0,05 011 0.59 110 𝐱𝟏−𝟓 0.27 𝐱𝟓 𝐱𝟏 0,15 0.12 111 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 Ứ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ã hố ký tự • Sau dựa vào file nén tiền hành mã hoá 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 M A N 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) 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ã 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 𝐱𝑩 𝐱 𝑨−𝑬−𝑪−𝑫 0.5 100 𝐱 𝑬−𝑪−𝑫 𝐱𝑬 0.3 0.5 𝐱𝑨 𝐱𝑪 −𝑫 0.15 11 0.2 0.15 1010 𝐱𝑪 0.1 𝐱𝑫 0.05 1011 x A B C D E f(x) 0.2 0.5 0.1 0.05 0.15 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ã: / H(x) = = 2*0.2 + 1*0.5 + 4*0.1 + 4*0.05 + 3*0.15 = 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 THANKS ! .. .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... • 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. .. 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ã 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

Ngày đăng: 05/12/2022, 07:17

Xem thêm:

HÌNH ẢNH LIÊN QUAN

tần suất xuất hiện của nó theo xác suất trong bảng đã sắp xếp - Thuật toán mã hoá nguồn huffman nguyên tắc xây dựng cây mã hufman
t ần suất xuất hiện của nó theo xác suất trong bảng đã sắp xếp (Trang 5)
Bài tập 1 Cho bảng phân phối xác suất các tín hiệu rời rạc như sau: - Thuật toán mã hoá nguồn huffman nguyên tắc xây dựng cây mã hufman
i tập 1 Cho bảng phân phối xác suất các tín hiệu rời rạc như sau: (Trang 17)
Bài tập 1: Cho bảng phân phối xác suất các tín hiệu rời rạc như sau: - Thuật toán mã hoá nguồn huffman nguyên tắc xây dựng cây mã hufman
i tập 1: Cho bảng phân phối xác suất các tín hiệu rời rạc như sau: (Trang 18)
Bài tập 1 Cho bảng phân phối xác suất các tín hiệu rời rạc như sau: b) Giải mã đoạn mã sau: 10111110110111010100 - Thuật toán mã hoá nguồn huffman nguyên tắc xây dựng cây mã hufman
i tập 1 Cho bảng phân phối xác suất các tín hiệu rời rạc như sau: b) Giải mã đoạn mã sau: 10111110110111010100 (Trang 19)

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w