Các biến thể tính toán hiệu quả của độ phức tạp Kolmogorov


28

Độ phức tạp tiền tố Kolmogorov (tức là là kích thước của chương trình tự phân định tối thiểu xuất ra x ) có một số tính năng hay:K(x)x

  1. Nó tương ứng với một trực giác cho các chuỗi có patters hoặc cấu trúc có độ phức tạp thấp hơn các chuỗi không có.
  2. Nó cho phép chúng ta xác định điều kiện phức tạp , hoặc thậm chí tốt hơn K ( x | O ) đối với một số oracle O .K(x|y)K(x|O)O
  3. Nó là tiểu phụ .K(x,y)K(x)+K(y)

Tuy nhiên, nó có một nhược điểm khủng khiếp: trả về cho x là không thể giải quyết được.K(x)x

Tôi đã tự hỏi nếu có một biến thể của độ phức tạp Kolmogorov bằng cách sử dụng một mô hình tính toán bị hạn chế (bằng cách sử dụng các ngôn ngữ yếu hơn so với TM hoặc sử dụng TM giới hạn có nguồn lực) bảo tồn các tính năng (1) và (2) (tính năng ( 3) là một phần thưởng, nhưng không bắt buộc) trong khi tính toán hiệu quả?K(x)

Động lực cho câu hỏi này là để sử dụng trong các nghiên cứu mô phỏng các mô hình đồ chơi tiến hóa khác nhau. Do đó, một câu trả lời đã được sử dụng như một "xấp xỉ thô" cho độ phức tạp Kolmogorov trong công việc số trước đây được ưu tiên. Tuy nhiên, mục tiêu không phải là để đi hoàn toàn thực nghiệm, do đó, một tương đối đơn giản / sạch ngôn ngữ mô tả / mô hình-of-tính toán cho được ưa thích, vì vậy mà nó có thể là có thể để chứng minh một số định lý hợp lý về cách quyết liệt K ' khác với K và trên các loại dây.KKK

Liên quan câu hỏi

Kolmogorov phức tạp với các ngôn ngữ mô tả yếu

Có một khái niệm hợp lý về một thuật toán gần đúng cho một vấn đề không thể giải quyết được không?

Câu trả lời:


10

Gzip. Cilibrasi và Vitanyi có một bài viết thực sự hay khi họ sử dụng gzip như một sự gần đúng của độ phức tạp Kolmogorov để thực hiện phân cụm. Phân cụm bằng cách nén


1
Làm thế nào để họ xác định phức tạp có điều kiện?
Artem Kaznatcheev

1
Đặt A và B là hai tài liệu và AB là hai tài liệu được nối. Họ nhìn vào tỷ lệ SIZE (gzip (A) + gzip (B)) so với SIZE (gzip (AB)).
Chad Brewbaker

1
Mọi người nên lưu ý rằng có những nhược điểm khi sử dụng gzip (và tương tự) để tính gần đúng độ phức tạp Kolmogorov: bactra.org/notebooks/805-gzip.html . Điều đó không nói rằng nó không hữu ích cho việc phân cụm các bộ dữ liệu trong đời thực, nhưng nó nói rằng tiện ích của nó cho các bộ dữ liệu thực tế cho chúng ta biết một số thứ về cách các bộ dữ liệu đó khác với, như thế nào, đầu ra của trình tạo số giả ngẫu nhiên ...
Joshua Grochow

3

Tôi nghĩ nhiều hơn về câu hỏi của mình và đi đến giải pháp khả thi. Nó có hai hạn chế, nó chỉ được xác định trên các chuỗi có độ dài (mặc dù tôi sẽ thảo luận thêm về điều này) và nó không nói về các máy Turing phổ dụng, thay vào đó là theo một câu hỏi trước đó và sử dụng mô hình tính toán thay thế.n=2m


Về cơ bản, chúng ta có thể diễn giải một chuỗi với | x | = 2 m là hàm f x : { 0 , 1 } m{ 0 , 1 } . Sau đó, độ phức tạp K ( x ) của chúng tôi là kích thước (số cạnh) của sơ đồ quyết định nhị phân giảm thứ tự duy nhất (ROBDD; với thứ tự tiêu chuẩn cố định) đại diện cho f x . Điều này thỏa mãn điều kiện [1]. Ngoài ra, vì ROBDD có thể được tính toán trong đa thức thời gian trong 2 mx|x|=2mfx:{0,1}m{0,1}K(x)fx2m, chúng tôi có một biện pháp hiệu quả.

Để thỏa mãn điều kiện [2], chúng ta phải sửa đổi các BDD tiêu chuẩn bằng cách cho phép một loại đặc biệt trên nút. Thông thường các nút được gắn nhãn bởi các chỉ mục , chúng tôi sẽ bao gồm một nút orory đặc biệt. Cho K ( x | y ) trong đó | y | = 2 m, chúng tôi sẽ cho phép các nút đặc biệt trong các BDD như sau:i{1,...,m}K(x|y)|y|=2m

Nếu chúng ta đang chạy một BDD trên đầu vào ( | một | = m ) sau đó một nút bình thường dán nhãn bởi tôi chỉ đơn giản là gửi cho chúng tôi xuống mép dán nhãn một i . Thay vào đó, một nút sấm sẽ gửi chúng ta xuống một cạnh có nhãn f y ( a ) . Như vậy, K ' ( x | x ) = 2 và với xác suất cao K ' ( x | y ) K ( x ) cho một y nhặt thống nhất một cách ngẫu nhiên.a|a|=miaify(a)K(x|x)=2K(x|y)K(x)y

[Lưu ý: không rõ liệu độ phức tạp có điều kiện vẫn có thể được tính toán một cách hiệu quả :(]

Thông thường, chúng tôi cũng có tính phụ phụ kể từ khi xây dựng một OBDD cho chúng ta có thể có một truy vấn cho bit đầu tiên và vào 0 đi đến ROBDD cho x và trên 1 đến ROBDD cho y . Do đó, chúng ta có K ' ( x . Y ) K ' ( x ) + K ' ( y ) .x.y0x1yK(x.y)K(x)+K(y)


K(x)x|x|=2m|y|=2lm>lK(x.y)=K(x)+K(y)

Cũng có một số hạn chế không may với cách tiếp cận của tôi. Chúng ta không thể vượt xa các OBDD, nếu chúng ta xem xét các cây quyết định tối thiểu hoặc chỉ các BDD thì chúng ta sẽ tìm hiểu về các vấn đề khó hiểu được giải quyết trong câu trả lời này . Ngay cả đối với việc đặt hàng biến đổi của các OBDD dường như cũng có kết quả có thể thu được . Vì vậy, có vẻ như các OBDD là giới hạn của cách tiếp cận phức tạp không tương tự như tiêu chuẩn-Kolmogorov này.


2

Tôi không phải là chuyên gia, nhưng nếu bạn cần một thước đo độ phức tạp thực tế cho các chuỗi, bạn có thể xem qua thước đo độ phức tạp Titchener .

Xem trang web của Titchener để giới thiệu nhanh; giấy tờ của mình có thể được tải xuống ở định dạng pdf .

Tóm tắt - Một thước đo mới về độ phức tạp của chuỗi đối với các chuỗi hữu hạn được trình bày dựa trên quy trình sản xuất chuỗi phân cấp đệ quy cụ thể . Từ giới hạn tối đa, chúng tôi suy ra mối quan hệ giữa độ phức tạp và tổng nội dung thông tin. .. bài viết đầy đủ ...

Tôi cũng tìm thấy một số bài viết về triển khai thực tế (ví dụ: " Thuật toán phân tách nhanh T ")


2

Về cơ bản, hầu hết mọi phương pháp học máy hoặc nén đều gần đúng với độ phức tạp của Kolmogorov:

  • p(x)logp(x)
  • nK(x)n+sCsCx

Do đó, bạn chỉ có thể tìm kiếm các mẫu với bất kỳ máy nén hoặc phân phối xác suất nào và chúng nén dữ liệu của bạn càng tốt thì giới hạn trên của bạn đối với K (x) càng tốt. Chỉ cần đảm bảo thêm kích thước của chính máy nén vào kích thước của dữ liệu nén để có được ước tính.

K(x)

K(x)K

Bạn cũng có thể sử dụng thời gian giới hạn để xác định lớp mô hình của mình, điều này dẫn bạn đến câu trả lời của Suresh. Về cơ bản, nếu bạn cho rằng nguồn dữ liệu của bạn có độ phức tạp thời gian đa thức và bạn thử tất cả các máy Turing đa thức để nén nó, bạn có thể chắc chắn rằng bạn đã ước tính chính xác độ phức tạp Kolmogorov. Điều này có thể vẫn chưa thực tế, nhưng đối với giới hạn thời gian thấp hơn, bạn có thể tính được hỗn hợp Bayes đầy đủ, gần đúng với nó.

Để biết chi tiết kỹ thuật xem bài viết này . Tuyên bố miễn trừ trách nhiệm: Tôi là một trong những tác giả.

K(x)K(x)


-1

Bạn đang tìm kiếm sự phức tạp giới hạn tài nguyên Kolmogorov. Bạn có thể bắt đầu với giấy này và chi nhánh ra.


2
cảm ơn vì liên kết đến bài báo, tôi đề cập đến sự phức tạp giới hạn tài nguyên trong câu hỏi, nhưng thực sự quan tâm đến các biện pháp có thể tính toán hiệu quả. Có vẻ như bài báo cho thấy 'chuỗi ngẫu nhiên' cho các mô hình này tương ứng với các bộ có độ phức tạp cao. Điều này cho thấy rằng việc quyết định độ phức tạp của một chuỗi trong các mô hình này là không thể tính toán một cách hiệu quả, phải không?
Artem Kaznatcheev
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.