Có bất kỳ thuật toán nén tối ưu đã được chứng minh trên lý thuyết?


7

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?



Liên kết của DavidToth là câu trả lời. Trong ngắn hạn "không". Bạn không thể chứng minh bất kỳ dữ liệu nào được nén tối thiểu (điều này tất nhiên làm cho không thể chứng minh thuật toán tối ưu)
edA-qa mort-ora-y

2
@ edA-qamort-ora-y: "Bạn không thể chứng minh bất kỳ dữ liệu nào được nén tối thiểu" - điều này không đúng. Cf. vấn đề tạm dừng, nói chung là không thể giải quyết được, nhưng tất nhiên có một số chương trình mà chúng tôi có thể chứng minh rằng nó tạm dừng hoặc không dừng lại. Cf. chức năng hải ly bận rộn; một số giá trị của hàm được biết đến.
Jukka Suomela

@JukkaSuomela, vâng, phrasing của tôi không kỹ lưỡng về mặt đó. Rõ ràng bạn có thể có các bộ dữ liệu cụ thể có thể được hiển thị để được nén tối ưu. Tôi đoán tuy nhiên là kích thước của dữ liệu đó là cực kỳ nhỏ.
edA-qa mort-ora-y

Một số liệu tuyệt vời mà bạn có thể quan tâm là khoảng cách nén được chuẩn hóa (NCD). Vitanyi & Li trong số những người khác có giấy tờ về nó. Nói tóm lại, nó hoạt động khá tốt cho tất cả các loại dữ liệu và chuyên môn hóa tất cả các số liệu khác theo một nghĩa nào đó. Kiểm tra cuốn sách Vitanyi & Li về độ phức tạp Kolmogorov để có một khởi đầu tốt nếu bạn muốn.
Juho

Câu trả lời:


9

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.


Khác với dữ liệu hoàn toàn ngẫu nhiên Tôi không nghĩ bất kỳ loại dữ liệu nào đáp ứng các điều kiện này.
edA-qa mort-ora-y

2
Nhưng các kỹ thuật khác không phải là biểu tượng để biểu tượng. Đó là cách họ đạt được nén tốt hơn. Và đó cũng là lý do tại sao mã hóa Huffman hiếm khi được sử dụng bởi chính nó.
Svick

6

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.


6

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:


2

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.


Tại sao điều này bị hạ cấp?
Sasho Nikolov
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.