Dữ liệu có thể được nén với kích thước nhỏ hơn giới hạn nén dữ liệu của Shannon không?


17

Tôi đã đọc về các thuật toán nén dữ liệu và giới hạn lý thuyết cho việc nén dữ liệu. Gần đây tôi gặp một phương pháp nén gọi là "Mã hóa Entropator Entropy", ý tưởng chính của phương pháp này là mã hóa tệp như các ký tự được trình bày trong tệp, tần số của chúng và chỉ số của các ký tự này được biểu thị bởi tệp.

Những tài liệu này có thể giúp giải thích phương pháp này:

https://arxiv.org/pdf/1703,08127

http://www-video.eecs.ber siêu.edu / con / dvdai / dcc2003.pdf

https://www.thinkmind.org/doad.php?articleid=ctrq_2014_2_10_70019

Tuy nhiên, trong tài liệu đầu tiên tôi đã đọc rằng bằng cách sử dụng phương pháp này, họ có thể nén một số văn bản xuống dưới giới hạn Shannon (Họ không xem xét không gian cần thiết để lưu tần số của các ký tự và không gian cần thiết để lưu meta dữ liệu của tập tin). Tôi đã nghĩ về nó và tôi thấy rằng phương pháp này sẽ không hiệu quả đối với các tệp rất nhỏ nhưng mặt khác nó có thể hoạt động tốt với các tệp lớn. Trên thực tế tôi không hiểu đầy đủ thuật toán này hoặc giới hạn Shannon rất rõ, tôi chỉ biết đó là tổng xác suất của mỗi ký tự nhân với của đối ứng xác suất.log2

Vì vậy, tôi có một số câu hỏi:

  1. Phương pháp nén này có thực sự nén các tệp nhỏ hơn giới hạn Shannon không?

  2. Có thuật toán nén nào nén các tệp xuống dưới giới hạn Shannon (câu trả lời cho câu hỏi này theo như tôi biết là không)?

  3. Phương pháp nén có thể nén các tệp nhỏ hơn giới hạn Shannon từng tồn tại không?

  4. Nếu mã hóa tổ hợp thực sự nén các tệp vượt quá giới hạn Shannon, không thể nén tệp này nhiều lần cho đến khi chúng ta đạt được kích thước tệp chúng ta muốn?


26
Shannon đã chứng minh rằng bạn không thể nén dưới giới hạn Shannon.
Yuval Filmus

11
Bạn có thể đi dưới giới hạn Shannon với nén mất mát . Shannon chỉ cho thấy bạn không thể nén dưới giới hạn mà không mất thông tin . @YuvalFilmus. Giống như, trên một hình ảnh RGB, bạn có thể loại bỏ các bit thứ tự thấp của các thành phần R, G, B.
smci


6
@smci Điều đó phần lớn không liên quan trong bất kỳ cuộc thảo luận nào về lý thuyết nén. Rõ ràng tôi có thể vứt bỏ mọi bit và gọi nó là nén.
đường ống

1
Hãy nói rằng tôi có một tập tin lớn như một hình ảnh. Bây giờ trong mô hình tôi ánh xạ toàn bộ hình ảnh thành "1" ha..Tôi đã nén dưới giới hạn Shannon vì toàn bộ hình ảnh được nén thành "1" ......
Pieter B

Câu trả lời:


34

Trên thực tế tôi không hiểu đầy đủ thuật toán này hoặc giới hạn Shannon rất rõ, tôi chỉ biết đó là tổng xác suất của mỗi ký tự nhân với log2 của đối ứng xác suất.

Đây là mấu chốt. Giới hạn Shannon không phải là một số thuộc tính phổ quát của một chuỗi văn bản. Nó là thuộc tính của một chuỗi văn bản cộng với một mô hình cung cấp xác suất (có thể phụ thuộc vào ngữ cảnh) của các ký hiệu. Nó cho chúng ta biết mô hình đó có thể nén văn bản tốt như thế nào , giả sử mô hình là chính xác .

Nếu bạn sử dụng một mô hình để tính giới hạn Shannon và sau đó là một mô hình khác để nén, nếu mô hình thứ hai chính xác hơn, bạn có thể vượt qua giới hạn Shannon ban đầu bạn đã tính, nhưng điều đó không thực sự phù hợp.


4
Để làm một ví dụ thực tế, nếu bạn biết dữ liệu của mình bao gồm một chữ cái được lặp lại N lần, bạn có thể đạt được tốc độ nén lớn tùy ý (tức là từ 10 tỷ 'a' đến một tuple ('a', 10000000))
Ant

12

Thật đơn giản để chỉ ra rằng bạn có thể nén dưới giới hạn Shannon - sử dụng máy nén gian lận có một loạt các tệp phổ biến được gán cho mã thông báo. Các tệp đã nói được lưu trữ dưới dạng các mã thông báo đó. (Rõ ràng, máy nén phải rất lớn hoặc được vẽ trên một thư viện rất lớn.)

Mặc dù vậy, máy nén sẽ kém hiệu quả hơn trong việc xử lý bất kỳ tệp nào không có trong thư viện của nó, vì theo một cách nào đó, nó phải phân biệt mã thông báo với nén thông thường.

Những gì bạn không thể làm là có một máy nén vượt qua giới hạn Shannon trên tất cả các tệp .


11

1/21/31/6plog2(1/p)

Nhưng nếu bạn áp dụng một mô hình khác, bạn sẽ nhận được một chuỗi xác suất khác. Fe chữ "u" khá hiếm, vì vậy xác suất của nó trên toàn bộ văn bản có thể là 3% và đó là xác suất bạn phải gán cho chữ cái này bằng mô hình Markovthứ tự 0 .

Nhưng trong các văn bản tiếng Anh, sau "q" thường xuất hiện "u", do đó, sử dụng mô hình đơn hàng 1, bạn có thể gán xác suất cao hơn nhiều cho "u" đi sau "q", do đó cải thiện tỷ lệ nén.

Ngoài ra, một số mô hình xuất ra ít ký hiệu hơn so với đầu vào, LZ77 thay thế lặp lại văn bản bằng tham chiếu ngược, vì vậy "abababab" biến thành "ab [2,8]".

Khi ai đó nói về entropy của Shannon về một số dữ liệu thay vì dữ liệu được nén bởi một mô hình cụ thể, cô ấy thường có nghĩa là entropy Shannon được tạo bởi mô hình order-0, tức là gán cho mỗi biểu tượng xác suất của nó trên toàn bộ văn bản. Rõ ràng, bạn có thể đánh bại lề này bằng cách áp dụng một mô hình tinh vi hơn cho dữ liệu.


3

Một cách giải thích khác có thể có của văn bản: thuật toán nén đã cho sẽ giúp bạn nén một số văn bản tốt hơn và nén kém hơn đối với các văn bản khác. Tuy nhiên, người dùng thường quan tâm đến một số loại tệp (trang HTML bằng tiếng Anh, mã máy 80386) hơn các loại khác (bảng số thực sự ngẫu nhiên, tiếng ồn vô nghĩa được chọn để giảm thiểu sự lặp lại). Bất kỳ sơ đồ nén nào cũng sẽ đánh đổi việc nén dữ liệu trong thế giới thực trở nên tồi tệ hơn là vô dụng trong việc nén một số loại chuỗi khác.

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.