Chúng ta không thể tạo ra độ phức tạp Kolmogorov?


28

Chúng ta hãy sửa mã hóa máy Turing không có tiền tố và máy Turing phổ dụng U trên đầu vào (T,x) (được mã hóa dưới dạng mã không có tiền tố của T theo sau x ) xuất ra bất cứ thứ gì T xuất ra trên đầu vào x (có thể cả chạy mãi). Xác định độ phức tạp Kolmogorov của x , K(x) , vì độ dài của chương trình ngắn nhất psao cho U(p)=x .

TxT(x)|x|xT(x)K(x)lim inf|x|T(x)=

Các điều kiện là cần thiết, bởi vì

(a) nếu, sau đó có thể dễ dàng xuất ra một số khác biệt nhỏ so với K (x) vì nó lớn hơn | x | + c_U ,T(x)|x|K(x)|x|+cU

(b) nếu lim inf|x|T(x)<C được cho phép, thì chúng ta chỉ có thể xuất 0 (hoặc một số hằng số khác) cho hầu hết tất cả các số, bằng cách "may mắn" đoán được nhiều nhất một (rất nhiều số) ước tính thành 0 (với một số hằng số khác) và xuất ra một số thứ khác. Chúng tôi thậm chí có thể đảm bảo lim sup|x|T(x)= bằng cách xuất ra một cái gì đó như 2logn cho x=2n .

Cũng lưu ý rằng công việc của chúng tôi sẽ dễ dàng nếu chúng tôi biết rằng T(x) không phải là tính từ, nhưng ít được biết về điều này, vì vậy câu trả lời có thể phụ thuộc vào U , mặc dù tôi nghi ngờ điều đó sẽ xảy ra.

Tôi biết rằng quan hệ được nghiên cứu rất nhiều nói chung, nhưng

Có ai từng hỏi một câu hỏi tương tự trong đó mục tiêu của chúng tôi là đưa ra một thuật toán không xuất ra một số tham số?

Động lực của tôi là vấn đề này http://arxiv.org/abs/1302.1109 .


5
Nó phụ thuộc vào mã hóa của bạn, vì như đã đề cập trong chủ đề về tính siêu thực của mà bạn liên kết đến, có thể chỉ có các chương trình có độ dài chẵn là hợp lệ. Vì vậy, để làm cho câu hỏi của bạn không tầm thường, bạn cần có nhiều giả thuyết hơn về mã hóa. Kp
Denis

2
Đối với câu hỏi thứ hai của bạn: có. Cho một số nguyên , hãy biểu thị máy -th Turing. Hàm không đệ quy theo đường chéo (hoặc DNR) là một hàm sao cho tất cả các số nguyên , . (Nghĩa là, nếu dừng trên , thì , và nếu không thì có thể tùy ý.) Những điều này đã được nghiên cứu gần đây một chút về khả năng tính toán / tính toán cộng đồng ngẫu nhiên. Google "theo đường chéo không đệ quy" để tìm các bài viết về điều này. M[M]Mf:NNM[M](M)f(M)[M]Mf(M)[M](M)f(M)
Joshua Grochow

1
@Denis: Tôi nghĩ bạn đã sai. Theo định nghĩa của tôi về các máy Turing phổ dụng được đưa ra trong đoạn đầu tiên, tất cả các độ dài có thể là các chương trình hợp lệ.
domotorp

3
Một vài lần trước đây tôi đã nghĩ (vô ích) về một phiên bản rõ ràng đơn giản hơn: (dis) chứng minh rằng với đủ lớn , cho tất cả . x0K(x)|x|/2xx0
Marzio De Biasi

1
@Ricky: Điều đó tốt, tôi không có hạn chế nào đối với việc mã hóa máy Turing, chỉ trên các chương trình, mà bạn có thể đọc trong đoạn đầu tiên.
domotorp

Câu trả lời:


7

Câu hỏi có thể được đặt lại là có hay không , và khi Denis chỉ ra trong các nhận xét Điều này là sai đối với một số mã hóa. Đây là một tuyên bố yếu hơn và một bằng chứng cố gắng về nó không phụ thuộc vào bất kỳ chi tiết nào của mã hóa, nhưng tôi sẽ giả sử một ngôn ngữ nhị phân cho đơn giản:liminf|x||T(x)K(x)|=0

Đặt là một hàm tính toán thỏa mãn và . Sau đó . Một cách không chính thức, nếu có một mục tiêu xung quanh độ phức tạp Kolmogorov của mỗi chuỗi phát triển rộng không giới hạn, không có chức năng tính toán nào có thể tránh được việc đánh vào nó.T:{0,1}N0T(x)|x|liminf|x|T(x)=liminf|x||T(x)K(x)|<

Để thấy điều này, hãy để là số -bit ngẫu nhiên , tức là và . Đối với tất cả như vậy ngẫu nhiên tồn tại. Cũng lưu ý rằng có một số lượng vô hạn các giá trị của mà , điều này sau từ các điều kiện đặt trên . Bây giờ hãy để là chuỗi nhỏ nhất sao cho . Rõ ràng có một hằng số sao cho , vì vànb0n<2bK(n)bbnb|{T(x)=b}|2bTxnthT(x)=bc1K(x)>bc1K(n)bncó thể được tính từ . Và có một hằng số sao cho , bởi vì cũng bị giới hạn bởi chỉ một hằng số nhiều hơn và có thể được tính từ . Sau đó và chúng tôi có vô số lựa chọn cho (những người có tiền đề về số lượng thẻ ít nhất là ), mang lại số lượng giá trị vô hạn cho , vậy là xong.xc2K(x)<b+c2K(n)bxn|K(x)T(x)|<c1+c2b2bx

Một hàm ý là đối với một số , vô cùng thường xuyên. Vì vậy, người ta có thể nói rằng chúng ta không thể tạo ra thứ gì đó không phải là sự phức tạp của Kolmogorov!cZT(x)=K(x)+c


1
Đẹp, tôi nghĩ rằng điều này nên làm việc. Tất nhiên, có thể không có bất kỳ chuỗi nào có , vì vậy có lẽ bạn muốn yêu cầu , phải không? f(x)=bf(x)b
domotorp

1
Nó cần phải là để có thể tính toán được từ . Vì vậy, tôi đoán người ta cần chọn sao cho hoặc chuỗi ánh xạ tới nó. Có lẽ, các giả định nên ngụ ý có vô số như vậy (mặc dù tôi không hoàn toàn nhìn thấy nó vào lúc này). (Theo như tôi có thể nói, các giả định đã không được sử dụng theo bất kỳ cách nào khác.)f(x)=bnxb,n b2b+1b
Emil Jeřábek hỗ trợ Monica

1
Vâng, thực sự điều này là cần thiết. Nhưng bằng chứng rất dễ xảy ra bởi mâu thuẫn - nếu luôn luôn là nếu , thì bằng cách xem bất kỳ phạm vi , chúng ta có thể kết luận rằng ít nhất chuỗi được ánh xạ tới , do đó, vô cùng nhiều, mâu thuẫn với . <2bb>b0b0<bBBb0b0lim inf=
domotorp

Những gì Denis nói về không áp dụng cho cách tôi đã xác định tính phổ quát trong dòng đầu tiên của câu hỏi của tôi. Nhận xét của anh ta cũng tầm thường, tôi không biết tại sao rất nhiều người đã phản đối nhận xét của anh ta. Nhưng than ôi, câu trả lời không chính xác của Peter đã nhận được rất nhiều sự ủng hộ, tôi đang mất niềm tin vào trang web này ...
domotorp

Không quan trọng làm thế nào các TM được mã hóa, miễn là các tiêu chí của tôi về TM phổ quát được thỏa mãn, vì vậy nhận xét của Denis là không chính xác. Nếu nó được tuyên bố như một nhận xét về một mô hình khác, thì đó sẽ là một điều khác biệt. Dù sao đi nữa, thay vì moping về điều này, chúng ta hãy thử xem liệu chúng ta có thể củng cố ý tưởng của bạn không ...
domotorp 10/2/2016

3

Tôi nghĩ rằng các công trình sau đây. Tôi sẽ sử dụng cho độ phức tạp KolmogorovC(x)

  • Cho một thời gian giới hạn (giả sử, một số hàm số mũ của độ dài của chương trình đầu vào) và gọi kết quả là . Nếu một chương trình vượt quá thời gian, sẽ vào một vòng lặp vô hạn.UtUtUt
  • Đặt là chương trình ngắn nhất cho trên . Lưu ý rằng là tính toán.Ct(x)xtCt
  • Đặt trả về , trừ khi giá trị này bằngtrong trường hợp này trả về 0. Trừ khi là đầu ra của chương trình trống, trong trường hợp đó trả về 1.T(x)Ct(x)+1|x|x
  • Vì , sẽ luôn khác với . Logic trong bước trước sẽ xử lý các trường hợp cạnh.C(x)Ct(x)T(x)C(x)
  • Ut chức năng như một mã cho tất cả các chuỗi, vì vậy nó có giới hạn vô cực.

một vài ý kiến, lý thuyết KC theo cách giải thích khác (nhưng tương đương) nêu rõ như sau: Hầu như tất cả các chuỗi đã có trong biểu diễn tối ưu của chúng ( wrt đến một mô hình nhất định) ngoại trừ vô số chuỗi có thể được chuyển đổi thành biểu diễn tối ưu (tối thiểu) wrt đến một mô hình tính toán nhất định (hoặc TM). Theo nghĩa này, hầu hết mọi chương trình đều đưa ra các biểu diễn chuỗi tối ưu, nhưng chúng không được biết (hoặc tính toán) a-prori
Nikos M.

Tại sao bạn sẽ có? T(x)|x|
domotorp

@domotorp Về mặt kỹ thuật chúng ta có trong đó là độ dài của chương trình in ngắn nhất. Tất nhiên, hằng số này cũng có đối với (và trên thực tế, trừ khi chương trình in thực sự chậm, nó là hằng số tương tự). T(x)|x|+ccC(x)
Peter

Nhưng đây là những gì làm cho toàn bộ câu hỏi thú vị! Tôi có thể đã yêu cầu bất kỳ chức năng thay vì, ví dụ: , mục tiêu duy nhất của tôi là loại bỏ các giải pháp tương tự như của bạn. |x||x|/2+99
domotorp

@domotrop Tôi thấy, vì vậy bạn muốn buộc không phải là người hướng lên trên . Điều đó thú vị hơn ...T(x)C(x)
Peter
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.