Độ phức tạp Kolmogorov: Tại sao bạn cần nhiều byte hơn chính chuỗi?


Câu trả lời:


13

Giá trị chính xác của độ phức tạp Kolmogorov phụ thuộc vào ngôn ngữ được chọn để biểu diễn các chuỗi. Ngôn ngữ này phải là Turing hoàn chỉnh, vì vậy đại diện cho tất cả các chuỗi vì bản thân chúng không phải là một tùy chọn.

Theo nguyên tắc pigeonhole, nếu có ít nhất một chuỗi độ dài tối đa có đại diện ngắn hơn chính nó, thì cũng có ít nhất một chuỗi độ dài tối đa n có đại diện dài hơn chính nó. (Biểu diễn là một thuật toán nén.)nn

Bạn có thể có một ngôn ngữ mô tả trong đó mỗi chuỗi có một đại diện dài hơn một bit so với chính nó: bắt đầu mỗi đại diện bằng một bit cho biết hoặc in ra theo nghĩa đen là nghĩa đen hoặc hay diễn giải. Không phải tất cả các ngôn ngữ mô tả là đơn giản mặc dù.

Một tuyên bố chính thức hơn được đưa ra sâu hơn trong bài viết Wikipedia, trong phần định lý bất biến . Có tối ưu ngôn ngữ mô tả, như vậy mà cho bất kỳ ngôn ngữ nào đó, có một hằng số như vậy mà mô tả của bất kỳ chuỗi trong ngôn ngữ tối ưu (không có vấn đề gì chiều dài của nó là) tối đa là C bit dài hơn ở chỗ ngôn ngữ khác. Theo trực giác, viết một thông dịch viên cho ngôn ngữ khác bằng ngôn ngữ tối ưu.CC


6

Mô tả về một chuỗi được xem xét ở đây là một đầu vào cho một số máy Turing phổ dụng. Bạn có thể nghĩ về nó như một chương trình C. Chuỗi hello worldkhông tự nó tạo thành một chương trình C, nhưng chuỗi sau đây : int main(int argc, char *argv[]) { printf("hello world"); }. Như bạn có thể thấy, chi phí không đổi nhưng không phải bằng không.


3
Là một sự tinh tế được thêm vào, C (hoặc một Turing-perfect C) lý tưởng hóa không thể in các chuỗi tùy ý với O (1) trên không gian, bởi vì một số ký tự trong chuỗi ký tự cần trích dẫn.
Gilles 'SO- ngừng trở nên xấu xa'
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.