2010-07-16 32 views
18

Đây là một câu hỏi lý thuyết, do đó, hy vọng rằng nhiều chi tiết ở đây không được tính toán trong thực tế hoặc thậm chí trong lý thuyết.Tốc độ nén tối đa về mặt lý thuyết có thể là bao nhiêu?

Giả sử tôi có một chuỗi s mà tôi muốn nén. Kết quả phải là một nhị phân tự giải nén (có thể là trình biên dịch x86, nhưng nó cũng có thể là một số ngôn ngữ mức độ thấp hoàn toàn giả thuyết Turing khác) xuất ra s.

Bây giờ, chúng tôi có thể dễ dàng lặp qua tất cả các chương trình và tệp nhị phân như vậy, được sắp xếp theo kích thước. Hãy để B_s là danh sách phụ của những tệp nhị phân này, xuất ra s (tất nhiên là B_s là không thể chối cãi).

Vì mỗi bộ số nguyên dương phải có giá trị nhỏ nhất, phải có chương trình nhỏ nhất b_min_s trong B_s.

Đối với ngôn ngữ nào (tức là tập hợp các chuỗi), chúng tôi có biết điều gì đó về kích thước của b_min_s không? Có lẽ chỉ là một ước tính. (Tôi có thể xây dựng một số ví dụ tầm thường nơi tôi luôn có thể thậm chí tính toán B_s và cũng b_min_s, nhưng tôi quan tâm đến ngôn ngữ thú vị hơn.)

+0

Tôi nhớ lại một số chương trình rất thông minh từ những ngày cũ, chẳng hạn như bộ tải khởi động tự ghi đè nhiều lần. Có khả năng, để đạt được kích thước tối thiểu tổng thể của chương trình tự giải nén, chương trình có thể sử dụng văn bản riêng của nó bằng cách nào đó - ví dụ, như một nguồn của các hằng số. –

Trả lời

16

Đây là Kolmogorov complexity, và bạn là chính xác rằng nó not computable. Nếu có, bạn có thể tạo ra một chương trình nghịch lý có độ dài n đã in một chuỗi có độ phức tạp Kolmogorov m> n.

Rõ ràng, bạn có thể ràng buộc b_min_s cho các đầu vào đã cho. Tuy nhiên, theo như tôi biết hầu hết những nỗ lực để làm như vậy đã được chứng minh sự tồn tại. Ví dụ, có một sự cạnh tranh liên tục để nén English Wikipedia.

+0

Yea, chính xác giải thưởng đó đã đưa tôi đến câu hỏi này. :) Tuy nhiên, các cuộc thi/cố gắng như vậy chỉ đưa ra các chỉ dẫn vì chúng chỉ ra các giới hạn thấp hơn cho một chuỗi ví dụ cụ thể. Họ không đưa ra bất kỳ câu trả lời nào về giới hạn trung bình/thực của một số ngôn ngữ cụ thể (ví dụ: XML có ngữ pháp tiếng Anh chính xác như nội dung). – Albert

+1

Đây là một số giải thích nén tốt tôi muốn khuyên bạn nên đọc thêm: http://www.mattmahoney.net/dc/dce.html - và trên trang Hutter, có một liên kết đến http://cs.fit.edu /~mmahoney/compression/textdata.html cũng rất hay để đọc. – schnaader

0

Tốc độ nén tối đa (avarage) có thể là 1: 1.
Số lượng đầu vào có thể bằng số lượng đầu ra.
Nó phải có khả năng ánh xạ đầu ra trở lại đầu vào.
Để có thể lưu trữ đầu ra, bạn cần vùng chứa có cùng kích thước với vùng chứa tối thiểu cho đầu vào - cho tỷ lệ nén 1: 1.

+2

"Tốc độ nén tối đa (avarage) có thể là 1: 1." Điều đó thực sự có ý nghĩa gì? –

+0

Điều đó có nghĩa là hãy nói rằng bạn lấy tất cả các chuỗi 100 byte có thể và nén từng chuỗi. Độ dài trung bình của đầu ra nén của bạn là ít nhất 100 byte, do đó, nén trung bình là 1: 1 hoặc tệ hơn. Tất nhiên, dữ liệu trong thế giới thực không phải là ngẫu nhiên nên tốt nhất nên nói rằng anh ta đang nói về tốc độ nén tối ưu trong trường hợp xấu nhất. Nhưng nó cố gắng trả lời câu hỏi trong dòng tiêu đề: tốc độ nén tối đa có thể phụ thuộc trên tất cả dữ liệu. Nó không thực sự trả lời cơ thể của câu hỏi ... – jjrv

0

Về cơ bản, bạn cần đủ thông tin để xây dựng lại thông tin ban đầu của mình. Tôi đoán các câu trả lời khác hữu ích hơn cho cuộc thảo luận lý thuyết của bạn, nhưng hãy ghi nhớ điều này.

6

Claude Shannon ước tính mật độ thông tin của ngôn ngữ tiếng Anh để thể trong ngưỡng giữa 0,6 và 1,3 bit cho mỗi nhân vật trong bài báo năm 1951 của ông Prediction and Entropy of Printed English (PDF, 1.6   MB. Chuông Sys. Tech. J (3) p 50. 64).

+0

Hm, tôi tự hỏi liệu phức tạp Kolmogorov có tương thích với mật độ thông tin của Shannons hay không. Từ trực giác của tôi, thông tin Shannon chỉ là một luồng bit. Ví dụ. dòng pixel của một hình ảnh fractal vẫn còn một số mật độ thông tin cao theo định nghĩa của Shannon. Vì vậy, theo những cân nhắc này, tôi tự hỏi nếu 0.6 thực sự là một ước tính tốt. Có thể cho văn bản tiếng Anh không chứa bất kỳ thông tin dư thừa nào. – Albert

+0

Thông tin Shannon đưa ra tuyên bố về trường hợp thống kê chung, trong khi độ phức tạp Kolmogorov là nội dung thông tin của một đối tượng đơn lẻ. Vì vậy, trong ví dụ này, thông tin Shannon nói một cái gì đó về nhân vật trung bình trong một văn bản tiếng Anh, trong khi sự phức tạp Kolmogorov là nội dung thông tin của một cơ thể cụ thể của văn bản, ví dụ như chuỗi của bạn. – phreeza

+0

Nhưng Shannon là một nhân vật chính trong "lý thuyết thông tin" và entropy, và cuối cùng là entropy là vấn đề ở đây. ["Entropy của Shannon đại diện cho một giới hạn tuyệt đối về nén lossless tốt nhất có thể của bất kỳ giao tiếp"] (http://en.wikipedia.org/wiki/Entropy_%28information_theory%29) –

Các vấn đề liên quan