Biorąc pod uwagę zainteresowanie tym pytaniem, pomyślałem, że bardziej pomocne może być wyraźniejsze wskazanie powodu, dla którego nie powinniśmy być wcale zaskoczeni odpowiedzią i starać się podać kierunek dla doprecyzowania pytania. To zbiera i rozwija się w przypadku niektórych komentarzy. Przepraszam, jeśli to „oczywiste”!
Rozważ zestaw ciągów złożoności Kołmogorowa :
Istnieje najwyżej takich ciągów, ponieważ istnieją opisów długości . Zauważ jednak, że ten zestaw jest nierozstrzygalny dla ogólnego (w przeciwnym razie moglibyśmy obliczyć po prostu przez iterację od do i sprawdzenie członkostwa w ). Ponadto funkcja
rośnie nieobliczalnie szybko. Jest to wariant funkcji bobra zajętego: jaka jest najdłuższa wydajność maszyny Turinga o długości opisun
JK(n)={w:K(w)=n}.
2n2nnnK(w)n=1|w|JK(n)gK(n)=maxw∈JK(n)|w|
n? Gdyby to rosło wolniej niż jakaś funkcja obliczeniowa, moglibyśmy zdecydować o problemie zatrzymania: Biorąc pod uwagę TM , konstruuj który symuluje i wypisuje na każdym kroku. Jeżeli długość opisu wynosi , to albo: zatrzymuje się co najwyżej kroków; lub nie zatrzymuje się.
MM′M1M′nMgK(n)M
Teraz, na pytanie Andrzeja, mamy, że , gdzie jest językiem oryginalnym. Tak więc jedynym sposobem uniknięcia zawierającego dane wejściowe bardzo duże w byłoby, gdyby zawierało tylko bardzo nieściśliwe łańcuchy. (Zauważ, że w przeciwnym razie możemy całkowicie zignorować rozróżnienie między analizą najgorszego i średniego przypadku, ponieważ uśredniamy co najwyżej ciągów, ale rozmiar największego ciągu rośnie szybciej niż jakakolwiek obliczalna funkcja . )IK(n)=S∩JK(n)SIK(n)nS2nn
Wydaje mi się, że prawdopodobnie nie jest możliwe zbudowanie nietrywialnej (tj. Nieskończonej) litery która zawiera tylko nieściśliwe łańcuchy, ale jest rozstrzygalna. Ale nie wiem. Mamy jednak nadzieję, że daje to intuicję, dlaczego nie powinniśmy mieć nadziei, że w większości języków rosło wolniej niż funkcja obliczalna.SfKn
Aby cofnąć się nieco, pytanie polega na porównaniu wydajności na wejściach o długości do wydajności na wejściach, które można skompresować do długości . Ale mamy pojęcia kompresji, które są znacznie łatwiejsze do opanowania (i mniej skuteczne) niż złożoność Kołmogorowa. Prostym sposobem jest podanie obwodu o rozmiarze , który na wejściu liczby binarnej wytwarza ty bit . Zauważ, że tutaj powiększenie wielkości wejściowej jest co najwyżej wykładnicze (obwód o wielkości ma co najwyżej możliwych sygnałów wejściowych).nnnbbwn2n
Możemy więc przeformułować pytanie, pozwalając
I analogicznie zdefiniuj . Powodem nadziei jest to, że większość łańcuchów wymaga obwodu prawie tak dużego jak sam łańcuch i żadne łańcuchy nie są wykładniczo większe niż wymagany obwód. Być może w tym przypadku moglibyśmy znaleźć języki, w których i są podobne asymptotycznie.
IC(n)={w∈S:the smallest circuit implicitly specifying w has size n}.
fCnfnfCn
Dość blisko spokrewnionym pytaniem jest złożoność niejawnych języków, takich jak
IMPLICIT_SAT jest NEXP-zupełny, i zwykle niejawna wersja problemów NP-zupełnych jest NEXP-zupełna. Zdecydowanie IMPLICIT_SAT jest co najmniej tak proste, jak użycie obwodu do wypisania całego , a następnie uruchomienie algorytmu dla SAT na . Jeśli więc dla SAT, to wydaje się to bliskie dostarczenia dowodów, że IMPLICIT_SAT w średnim przypadku jest prawie tak szybko rozstrzygalny, jak SAT w najgorszym przypadku. Ale nie wiem, jak można by bezpośrednio porównać twoje pojęcie z domyślnymi językami, ponieważ pojęcie „najmniejszego obwodu dla
IMPLICIT_SAT={circuits C:C implicitly specifies w,w∈SAT}.
wwfCn=Θ(fn)w„nie wchodzi w grę dla domyślnych języków.
Mam nadzieję, że jest to pomocne / interesujące!
Nie jestem pewien podręcznika, który wspomina o ukrytych problemach, ale oto kilka notatek z wykładów: http://people.seas.harvard.edu/~salil/cs221/spring10/lec8.pdf