Sử dụng độ phức tạp Kolmogorov làm đầu vào kích thước


20

Giả sử chúng ta có một vấn đề tính toán, ví dụ như 3-SAT, có một tập hợp các trường hợp vấn đề (đầu vào có thể) . Thông thường trong phân tích thuật toán hoặc lý thuyết độ phức tạp tính toán, chúng ta có một số bộ của tất cả các đầu vào có độ dài và hàm cho thời gian chạy của một số thuật toán giải pháp trên đầu vào . Trình tự thời gian chạy trường hợp xấu nhất cho là S

I(n)={wS:|w|=n}
nT(w)AwA
fn=maxwI(n)T(w).

Bây giờ chúng ta hãy xác định các bộ

IK(n)={wS:K(w)=n}
của tất cả các đầu vào có độ phức tạp Kolmogorov n và chúng ta hãy xác định chuỗi
fnK=1|IK(n)|wIK(n)T(w).
Ở đây fK là chuỗi thời gian chạy trung bình cho A , ngoại trừ "kích thước" của đầu vào là độ phức tạp Kolmogorov của chúng, không phải độ dài của chúng.

Có thuật toán nào cho fn khác biệt đáng kể so với fnK không? Nếu vậy, có vấn đề nào về độ phức tạp thời gian thay đổi khi sử dụng cách phân tích thuật toán khác nhau này không?


4
Câu hỏi tuyệt vời! Một điều mà tôi thường thắc mắc - tôi hy vọng nó sẽ nhận được một số câu trả lời hay. (Tôi đã thêm thẻ độ phức tạp tham số b / c, bạn có thể xem đây là câu hỏi về độ phức tạp được tham số hóa của ví dụ SAT, trong đó tham số là độ phức tạp Kolmogorov.)
Joshua Grochow 27/214

3
Các chuỗi ngẫu nhiên, hay còn gọi là hầu hết các chuỗi, có độ phức tạp Kolmogorov gần độ dài ban đầu của chúng. Đối với phần lớn các đầu vào fn=fnK Bạn có thể nhận được một kết quả thú vị hơn nếu bạn hỏi về độ sâu tính toán thay vì độ phức tạp Kolmogorov. google.com/ Quảng cáo
Chad Brewbaker 27/214

2
Bằng cách trộn một số trường hợp PARITY vào một ngôn ngữ cứng để tạo thành S (ví dụ: bằng cách thêm tiền tố vào mỗi phiên bản với một chút chuyển đổi mô tả ngôn ngữ mà thể hiện đó đến từ đâu), thì fnK sẽ nhỏ hơn fn . Chỉ nhỏ như thế nào phụ thuộc vào mật độ tương đối.
András Salamon

1
Một nơi là trong các bài giảng của Vadhan ở đây (ngày 19 tháng 2): people.seas.harvard.edu/~salil/cs221/spring10/lectures.html
usul

1
@ AndrásSalamon, vâng, tôi hy vọng tôi không quá cẩu thả, nhưng tôi nghĩ nmaxw:K(w)=n|w|về cơ bản nên là hàm bận rộn.
usul

Câu trả lời:


14

Xem xét hàm chẵn lẻ (hoặc bất kỳ hàm nào khác phụ thuộc vào tất cả / hầu hết các bit của đầu vào). Đối với hàm chẵn lẻ, . Vậy Mặt khác, f n = Θ ( n ) . f K n = Θ ( 1T(w)=Θ(|w|)

fn=Θ(n).
fnK=Θ(1|IK(n)|w:K(w)=n|w|)Ω(12nmaxw:K(w)=n|w|).

Lưu ý rằng . Do đó và . Tương tự, ; do đó phát triển rất nhanh. Hơn nữa, nó không khó để thấy rằng không có tính toán trên ràng buộc cho .max w : K ( w ) = n | w | 2 2 Ω ( n ) f K n2 2 Ω ( n ) / 2 nK ( 2 ... 2 2 n ) = O ( n ) f K nK(22n)=O(n)

maxw:K(w)=n|w|22Ω(n)
fnK22Ω(n)/2nK(222n)=O(n)f K nfnK222Ω(n)/2nfnK

9

Với sự quan tâm đến câu hỏi này, tôi nghĩ có thể hữu ích khi chỉ ra rõ ràng hơn lý do chúng ta không nên ngạc nhiên với câu trả lời và cố gắng đưa ra một số hướng để sàng lọc câu hỏi. Điều này thu thập và mở rộng trên một số ý kiến. Tôi xin lỗi nếu điều này là "hiển nhiên"!

Hãy xem xét tập hợp các chuỗi có độ phức tạp Kolmogorov : Có nhiều nhất chuỗi như vậy, vì có mô tả về độ dài . Nhưng lưu ý rằng bộ này là không thể áp dụng được cho chung (nếu không, chúng ta có thể tính chỉ bằng cách lặp từ đến và kiểm tra tư cách thành viên trong ). Hơn nữa, hàm phát triển nhanh không thể chối cãi. Nó là một biến thể của hàm busy-beaver: sản lượng dài nhất của Máy Turing có chiều dài mô tảJ K ( n ) = { w : K ( w ) = n } .n

JK(n)={w:K(w)=n}.
2n2nnnK(w)n=1|w|JK(n)
gK(n)=maxwJK(n)|w|
n? Nếu điều này phát triển chậm hơn một số chức năng tính toán, chúng ta có thể quyết định vấn đề tạm dừng: Đưa ra TM , xây dựng mô phỏng và in ở mỗi bước. Nếu độ dài mô tả của là , thì: dừng lại ở nhiều nhất bước; hoặc không dừng lại.MMM1MnMgK(n)M

Bây giờ, với câu hỏi của Andrew, chúng ta có , trong đó là ngôn ngữ gốc. Vì vậy, cách duy nhất để tránh chứa các đầu vào rất lớn trong sẽ là nếu chỉ chứa các chuỗi rất không nén được. (Lưu ý rằng, nếu không, chúng ta hoàn toàn có thể bỏ qua sự phân biệt giữa phân tích trường hợp xấu nhất và trường hợp trung bình ở đây, bởi vì chúng ta trung bình trên nhiều nhất là chuỗi nhưng kích thước của chuỗi lớn nhất đang tăng nhanh hơn bất kỳ hàm tính toán nào của . )IK(n)=SJK(n)SIK(n)nS2nn

Tôi cảm thấy rằng có khả năng không thể xây dựng bất kỳ không cần thiết (tức là vô hạn) chỉ chứa các chuỗi không nén được, nhưng vẫn có thể quyết định được. Nhưng tôi không biết. Tuy nhiên, hy vọng điều này mang lại trực giác về lý do tại sao chúng ta không nên hy vọng hầu hết các ngôn ngữ sẽ có phát triển chậm hơn chức năng tính toán.SfnK

Để lùi lại một chút, câu hỏi là so sánh hiệu suất trên các đầu vào có độ dài với hiệu suất trên các đầu vào có thể được nén với chiều dài . Nhưng chúng ta có các khái niệm về nén có thể dễ điều khiển hơn (và ít mạnh hơn) so với Độ phức tạp Kolmogorov. Một cách đơn giản là đưa ra một mạch có kích thước , trên đầu vào số nhị phân tạo ra bit thứ của . Lưu ý rằng ở đây, blowup trong kích thước đầu vào nhiều nhất là theo cấp số nhân (một mạch có kích thước có nhiều nhất là đầu vào có thể).nnnbbwn2n

Vì vậy, chúng ta có thể viết lại câu hỏi bằng cách để Và xác định tương tự. Lý do cho hy vọng ở đây là hầu hết các chuỗi yêu cầu một mạch lớn gần bằng chính chuỗi đó và không có chuỗi nào lớn hơn theo cấp số nhân so với mạch yêu cầu. Có lẽ trong trường hợp này, chúng ta có thể tìm thấy các ngôn ngữ trong đó và tương tự nhau không có triệu chứng.

IC(n)={wS:the smallest circuit implicitly specifying w has size n}.
fnCfnfnC

Một câu hỏi khá liên quan là sự phức tạp của các ngôn ngữ ngầm như IMPLICIT_SAT là NEXP-Complete và thông thường phiên bản ngầm của các vấn đề hoàn thành NP là NEXP-Complete. Quyết định IMPLICIT_SAT ít nhất là dễ dàng như chỉ cần sử dụng mạch để viết ra tất cả , sau đó chạy một thuật toán cho SAT trên . Vì vậy, nếu cho SAT, thì điều này dường như gần với việc đưa ra bằng chứng rằng IMPLICIT_SAT trong trường hợp trung bình gần như có thể quyết định nhanh như SAT trong trường hợp xấu nhất. Nhưng tôi không biết người ta sẽ so sánh trực tiếp khái niệm của bạn với các ngôn ngữ ngầm như thế nào bởi vì khái niệm "mạch nhỏ nhất chow w f C n = Θ ( f n ) w

IMPLICIT_SAT={circuits C:C implicitly specifies w,wSAT}.
wwfnC=Θ(fn)w"Không đi vào chơi cho các ngôn ngữ ngầm.

Hy vọng điều này là hữu ích / thú vị!

Tôi không chắc chắn về một cuốn sách giáo khoa có đề cập đến các vấn đề tiềm ẩn, nhưng đây là một số ghi chú bài giảng: http://people.seas.harvard.edu/~salil/cs221/spring10/lec8.pdf


|JK(n)|=2n ? Nhưng không phải mọi mô tả là tối thiểu.
Andrew

1
@AndrewMacFie, đúng, nên là "nhiều nhất". Sẽ sửa chữa.
usul

Cảm ơn bạn đã thêm câu trả lời này :) Có vẻ như đối với bất kỳ thuật toán nào cho 3-SAT, sẽ phát triển nhanh. fnK
Andrew

4

Một trường hợp dễ dàng dường như là nơi ngôn ngữ chỉ chứa các trường hợp đệm. Khi thu được từ một ngôn ngữ bằng cách đệm từng phiên bản có kích thước với các ký hiệu , có thể nằm trong vùng .S L n 2 n - n f K n 2 f nSSLn2nnfnK2fn


Lưu ý rằng câu trả lời của Yury bao gồm câu trả lời này và cũng nói chính xác "có thể nằm trong khu vực của".
András Salamon
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.