Bài giảng Giải thuật nén Huffman

28 25 0
Bài giảng Giải thuật nén Huffman

Đ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

Bài giảng Giải thuật nén Huffman có nội dung trình bày về nén tĩnh (Static Huffman); Nén động (Adaptive Huffman); Cây Huffman; Mã hóa Huffman. Để hiểu rõ hơn mời các bạn cùng tham khảo nội dung chi tiết của bài giảng này.

.c om Giải thuật nén Huffman an co ng Nén tĩnh (Static Huffman) cu u du o ng th Nén động (Adaptive Huffman) CuuDuongThanCong.com https://fb.com/tailieudientucntt cu u du o ng th an co ng c om Nén tĩnh (Static Huffman) CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Giới thiệu cu u du o ng th an co ng • Mã hóa Huffman (David A Huffman)là thuật tốn mã hóa dùng để nén liệu • Dựa bảng tần suất xuất kí tự cần mã hóa để xây dựng mã nhị phân cho kí tự cho dung lượng (số bit) sau mã hóa nhỏ CuuDuongThanCong.com https://fb.com/tailieudientucntt Trong mã ASCII, ký tự biểu diễn chuỗi bit .c om Ký tự A B C D E Ý tưởng ng Giảm số bit để biểu diễn ký tự co Dùng chuỗi bit ngắn để biểu diễn ký tự xuất nhiều Ký tự A B C D E u Mã bit 000 001 010 011 100 cu Ký tự A B C D E du o ng th an Sử dụng mã tiền tố để phân cách ký tự Mã bit 01000001 01000010 01000011 01000100 01000101 CuuDuongThanCong.com Tần suất 15 10 Ký tự A B C D E Mã bit 000 01 011 100 Ký tự A B C D E https://fb.com/tailieudientucntt Mã tiền tố 00 11 01 100 101 .c om Cây Huffman co ng Là nhị phân, nút chứa ký tự trọng số (tần suất ký tự đó) th an Mỗi ký tự biểu diễn nút (tính tiền tố) du o ng Nút cha có tổng ký tự, tổng trọng số nút cu u 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 gốc CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Mã Huffman ng Là chuỗi nhị phân sinh dựa Huffman co Mã Huffman ký tự đường dẫn từ nút gốc đến nút ng th an • Sang trái ta bit • Sang phải ta bit du o Có độ dài biến đổi (tối ưu bảng mã) cu u • 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 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Thuật toán nén tĩnh (Static Huffman) ng B1: Duyệt file, lập bảng thống kê tuần suất xuất ký tự B2 an co B2: Xây dựng Huffman dựa vào bảng thống kê ng th B3: Sinh mã Huffman cho ký tự dựa vào Huffman u du o B4: Duyệt file, thay toàn ký tự mã Huffman tương ứng cu B5: Lưu lại Huffman (bảng mã) dùng cho việc giải nén Xuất file nén CuuDuongThanCong.com B1 https://fb.com/tailieudientucntt B3 B4 B5 .c om Chuỗi ký tự cần nén an co ng F = “ABABBCBBDEEEABABBAEEDDCCABBBCDEEDCBCCCCDBBBCAAA” u du o Tần suất 15 10 cu Ký tự A B C D E ng th Bảng tần suất xuất CuuDuongThanCong.com https://fb.com/tailieudientucntt N = 47 Xây dựng Huffman c om Thuật toán tham lam th an co ng B1: Tạo N cây, có nút gốc, nút gốc chứa kí tự trọng số (tần suất ký tự đó) (N = số ký tự) cu u du o ng B2: Lặp lại thao tác sau nhất: + Ghép có trọng số gốc nhỏ thành nút cha, có tổng ký tự, tổng trọng số trọng số nút + Xóa duyệt + Điều chỉnh lại vi phạm tính chất CuuDuongThanCong.com https://fb.com/tailieudientucntt ng Tần suất 15 13 10 co Ký tự B DE C A DE | 13 D|6 E|7 an Tần suất 15 10 Tần suất 19 15 13 cu u du o Ký tự AC B DE ng th Ký tự B C A E D c om Xây dựng Huffman CuuDuongThanCong.com Ký tự Tần suất BDE 28 AC 19 https://fb.com/tailieudientucntt Ký tự Tần suất ABCDE 47 Bài tập: Nén chuỗi sau giải thuật nén tĩnh – Static Huffman ng c om F= “CNTT10110CLCCNNTTT10000CCCCLLLLCCCTTTT11000 NTNNN000TNT” N = 54 N T 12 an L th 11 ng C du o cu u co Ký tự Tần suất 12 Ký tự Mã Huffman 01 1111 C 00 L 1110 N 110 T 10 Kết FOutput = “001101010111101111111110100111000001101101010101111010101010000000011 101110111011100000001010101011111111010101110101101101100101011011010” CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Ưu - Nhược điểm ng co ng th an Ưu điểm • Hệ số nén tương đối cao • Phương pháp thực tương đối đơn giản • Địi hỏi nhớ du o u cu Nhược điểm • Mất lần duyệt file 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 Huffman giải nén CuuDuongThanCong.com https://fb.com/tailieudientucntt ng c om Nén động (Adaptive Huffman) th ng du o u cu Ưu điểm an co • Khắc phục nhược điểm Static Huffman • Đầu đọc vừa duyệt, vừa cập nhật Huffman, vừa xuất kết file nén theo thời gian thực • (Ngược lại) CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Cây Huffman Tính chất anh em: th an co ng Trọng số nút bên trái phải nhỏ nút bên phải, nhỏ nút cha cu u du o ng Nút NYT (not yet transmitted) có trọng số = 0, dùng dể nhận biết ký tự xuất hay chưa Trọng số nút cha tổng trọng số nút CuuDuongThanCong.com https://fb.com/tailieudientucntt Thuật toán nén động (Adaptive Huffman) c om B1: Duyệt ký tự có file nhập TH1: Nếu ký tự chưa tồn tại: ng + Chuỗi bit: đường dẫn đến NYT + Mã bit ký tự th TH2: Nếu ký tự tồn tại: an co + Chèn nút (Ký tự | trọng số = 1) vào NYT Đánh lại số thứ tự ng + Chuỗi bit: đường dẫn đến ký tự cu u du o + Tăng trọng số ký tự (+1) B2: + Tăng trọng số nút cha (+1) + Nếu vi phạm tính anh em  điều chỉnh hết vi phạm B3: Lưu chuỗi bit vào file xuất Lặp lại B1, B2 đến duyệt hết file CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Thuật toán điều chỉnh th an co ng + Nếu trọng số nút hành > nút lân cận từ phải sang trái, từ lên  Vi phạm cu u du o ng + Tìm nút xa có trọng số cao < trọng số nút vi phạm  Hoán đổi vị trí CuuDuongThanCong.com https://fb.com/tailieudientucntt TH1: Ký tự chưa tồn F = “AABBB” #0 #2 c om NYT | 01 ng co NYT th #1 cu u du o ng #0 an (new) A|1 FOutput = 01000011 CuuDuongThanCong.com https://fb.com/tailieudientucntt TH1: Ký tự tồn F = “AABBB” #0 #2 c om Root | 21 ng co NYT th #1 cu u du o ng #0 an (new) A | 21 FOutput = 01000011 CuuDuongThanCong.com https://fb.com/tailieudientucntt TH1: Ký tự chưa tồn F = “AABBB” ng an th #1 #3 B|1 #0 cu u (new) du o NYT A|2 ng #0 #2 co NYT #2 #4 c om Root | 32 #1 FOutput = 010000111 001000010 CuuDuongThanCong.com https://fb.com/tailieudientucntt TH2: Ký tự tồn F = “AABBB” ng th #3 B | 12 #0 cu u (new) du o NYT A|2 ng #2 an co 21 #4 c om Root | 434 #1 FOutput = 010000111001000010 01 CuuDuongThanCong.com https://fb.com/tailieudientucntt TH2: Ký tự tồn (vi phạm) F = “AABBB” ng th #3 B | 23 #0 cu u (new) du o NYT A|2 ng #2 an co #4 c om Root | 445 #1 FOutput = 01000011100100001001 01 CuuDuongThanCong.com https://fb.com/tailieudientucntt Thuật toán giải nén c om B1: Duyệt file, đọc bit file nén duyệt an co ng B2: Xuất ký tự tương ứng duyệt hết nút du o ng th B3: Nếu gặp nút NYT, đọc bit Xuất ký tự tương ứng Cập nhật ký tự vừa xuất vào cu u B4: Thực B1, B2, B3 duyệt hết file B5: Xuất file giải nén CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập: Nén chuỗi sau giải thuật nén động – Adaptive Huffman Ký tự C L N T Mã bit 01000011 01001100 01001110 01010100 cu u du o ng th an co ng c om F = “CNTTCLCCNTTCLCCNTT” FOutput = “C 0N 00T 101 101 100L 11 101 10 10 1001 0 101 10 10” CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om ng cu u du o ng th an co Thanks for your listening ! CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Thực an co ng Nguyễn Văn Hòa cu u du o ng th Cái Ngọc Tịnh Tiến CuuDuongThanCong.com https://fb.com/tailieudientucntt ... B1, B2, B3 duyệt hết file B5: Xuất file giải nén CuuDuongThanCong.com https://fb.com/tailieudientucntt Bài tập: Nén chuỗi sau giải thuật nén động – Adaptive Huffman Ký tự C L N T Mã bit 01000011... mã Huffman cho ký tự dựa vào Huffman u du o B4: Duyệt file, thay toàn ký tự mã Huffman tương ứng cu B5: Lưu lại Huffman (bảng mã) dùng cho việc giải nén Xuất file nén CuuDuongThanCong.com B1 https://fb.com/tailieudientucntt... 107 = 269 bit Tỷ lệ nén: (1 - 107/376)*100 = 72.54 % CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om Thuật toán giải nén ng B1: Xây dựng lại Huffman từ thông tin giải mã lưu th an co

Ngày đăng: 20/08/2021, 17:05

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan