Có phải mã hóa Huffman luôn tối ưu vì nó sử dụng ý tưởng của Shanon? Điều gì về văn bản, hình ảnh, video, ... nén?
Là chủ đề này vẫn còn hoạt động trong lĩnh vực này? Những tài liệu tham khảo cổ điển hoặc hiện đại tôi nên đọc?
Có phải mã hóa Huffman luôn tối ưu vì nó sử dụng ý tưởng của Shanon? Điều gì về văn bản, hình ảnh, video, ... nén?
Là chủ đề này vẫn còn hoạt động trong lĩnh vực này? Những tài liệu tham khảo cổ điển hoặc hiện đại tôi nên đọc?
Câu trả lời:
Mã hóa Huffman là tối ưu cho mã hóa biểu tượng thành biểu tượng trong đó xác suất của mọi biểu tượng là độc lập và được biết trước. Tuy nhiên, khi các điều kiện này không được thỏa mãn (như trong hình ảnh, video), các kỹ thuật mã hóa khác như LZW, JPEG, v.v ... được sử dụng. Để biết thêm chi tiết, bạn có thể xem qua cuốn sách "Giới thiệu về nén dữ liệu" của Khalid Sayood.
Có một phiên bản của thuật toán Lempel-Ziv là tối ưu trong một số tình huống. Cụ thể, nếu đầu vào đến từ chuỗi Markov ergodic, thì tốc độ tiệm cận của thuật toán Lempel-Ziv bằng với entropy. Để biết thêm về điều đó, hãy xem Chương 13 của Cover và Thomas.
Nén Huffman, với các giả định nhất định thường không áp dụng cho các tệp thực, có thể được chứng minh là tối ưu.
Một số thuật toán nén nén một số loại tệp nhỏ hơn thuật toán Huffman , do đó Huffman không tối ưu. Các thuật toán này khai thác một hoặc một trong những cảnh báo trong bằng chứng tối ưu Huffman.
Bất cứ khi nào chúng tôi có (a), chúng tôi mã hóa từng ký hiệu một cách độc lập bằng số bit nguyên và (b) mỗi ký hiệu là "không liên quan" đến các ký hiệu khác mà chúng tôi truyền (không có thông tin lẫn nhau, độc lập thống kê, v.v.) và (c) người nhận biết phân phối xác suất của mọi ký hiệu có thể, sau đó nén Huffman là tối ưu (tạo ra các tệp nén nhỏ nhất).
(a) ký hiệu bằng ký hiệu: Bằng cách nới lỏng hạn chế nhị phân Huffman rằng mỗi ký hiệu đầu vào phải được mã hóa dưới dạng số bit, một số thuật toán nén, chẳng hạn như mã hóa phạm vi, không bao giờ tệ hơn và thường tốt hơn Huffman tiêu chuẩn .
(b) các ký hiệu không liên quan: hầu hết các tệp dữ liệu thực có một số thông tin lẫn nhau giữa các ký hiệu. Người ta có thể làm tốt hơn Huffman đơn giản bằng cách "giải mã" các ký hiệu, và sau đó sử dụng thuật toán Huffman trên các ký hiệu đã phân tách này.
(c) phân phối xác suất đã biết: Thông thường người nhận không biết phân phối xác suất chính xác. Vì vậy, các thuật toán nén Huffman điển hình gửi bảng tần số trước, sau đó gửi dữ liệu nén. Một số thuật toán nén "thích ứng", chẳng hạn như mã hóa cây Polar, có thể nén tốt hơn Huffman vì chúng hội tụ phân phối xác suất hoặc thích ứng với phân phối xác suất thay đổi, mà không bao giờ gửi bảng tần số rõ ràng.
Sách và giấy tờ thảo luận về nén tốt hơn Huffman như vậy:
Tốc độ nén tối ưu có liên quan đến entropy của dữ liệu.
Từ bài viết Wikipedia http://en.wikipedia.org/wiki/Shannon%27s_source_coding_theorem :
N iid các biến ngẫu nhiên, mỗi biến có entropy H (X) có thể được nén thành nhiều hơn bit NH (X) với rủi ro mất thông tin không đáng kể, vì N có xu hướng vô cùng; nhưng ngược lại, nếu chúng được nén thành ít hơn NH (X) bit thì gần như chắc chắn thông tin đó sẽ bị mất.