Jak pokazać, że funkcja nie jest obliczalna?


Odpowiedzi:


57

Zanim odpowiem na twoje ogólne pytanie, pozwól mi najpierw cofnąć się o krok, podać tło historyczne i odpowiedzieć na wstępne pytanie: Czy istnieją funkcje niepoliczalne?

[notacja: możemy powiązać dowolną funkcję f z językiem Lf={(x,y)y=f(x)} a następnie omówić rozstrzygalność Lf zamiast obliczalności f ]


Języki nierozstrzygalne zrobić opuszczeniu w

Istnieje kilka języków, których nie może określić żadna maszyna Turinga. Argument jest prosty: istnieje „tylko” wiele (0) różnych baz TM, ale niepoliczalnie wiele () różnych języków. Zatem istnieje co najwyżej 0 rozstrzygalnych języków, a pozostałe (nieskończenie wiele) są nierozstrzygalne. Dalsza lektura:

Aby położyć dłoń na konkretnym nierozstrzygalnym języku, pomysł polega na użyciu techniki o nazwie diagonalizacja (Georg Cantor, 1873), która pierwotnie została użyta do wykazania, że ​​jest więcej liczb rzeczywistych niż liczb całkowitych, lub innymi słowy, że .>0

Pomysł skonstruowania pierwszego nierozstrzygalnego języka jest prosty: wymieniamy wszystkie maszyny Turinga (co jest możliwe, ponieważ można je wyliczyć!) I tworzymy język, który nie zgadza się z każdą TM na co najmniej jednym wejściu.

ε0100M110101M201000M300010

Powyżej, każdy wiersz to jedna TM, a każda kolumna to jedno wejście. Wartość komórki wynosi 0, jeśli TM odrzuca lub nigdy się nie zatrzymuje, i 1, jeśli TM akceptuje te dane wejściowe. Definiujemy język tak, aby D zawierał i- ty sygnał wejściowy tylko wtedy, gdy i- ta TM nie akceptuje tego wejścia.DDii

Zgodnie z powyższą tabelą ponieważ M 1 akceptuje ε . Podobnie 0 D , ale 1 D, ponieważ M 3 nie akceptuje 1 .εDM1ε0D1DM31

Załóżmy teraz, że decyduje D i wyszukuje wiersz k w tabeli: jeśli w k- tej kolumnie jest 1 , to M k akceptuje to wejście, ale nie ma go w D , a jeśli jest tam 0 , to wejście jest w D, ale M k tego nie akceptuje. Dlatego M k nie decyduje D i dotarliśmy sprzeczność.MkDk1kMkD0DMkMkD

Teraz twoje pytanie. Istnieje kilka sposobów udowodnienia, że ​​język jest nierozstrzygalny. Spróbuję dotknąć najczęstszych.

1. Bezpośredni dowód

Pierwszą metodą jest bezpośrednie pokazanie, że język jest nierozstrzygalny, poprzez pokazanie, że żadna TM nie może go zdecydować. Zwykle jest to zgodne z przedstawioną powyżej metodą diagonalizacji.

Przykład.

Pokaż, że (dopełnienie) Język przekątnej jest nierozstrzygalny.

LD¯={MML(M)}

Dowód.
Załóżmy, że jest rozstrzygalne i niech M D będzie decydującym. Istnieją dwa przypadki:LD¯MD

  1. przyjmujeM DMDMD lecz następnie, takM Ż L D . Więc to nie może się zdarzyć, jeśli M D postanawia ¯ L D .MDL(MD)MLD¯MDLD¯
  2. nie akceptujeM DMDMD : tak , a zatemM Ż L D . Ale jeśli jest w L D , M D powinny zaakceptowali go, a my ponownie osiągnęła sprzeczność.MDL(MD)MLD¯LDMD

2. Właściwości zamknięcia

Czasami możemy użyć właściwości zamknięcia, aby pokazać, że jakiś język nie jest rozstrzygalny, w oparciu o inne języki, o których wiemy, że nie są rozstrzygalne.

W szczególności, jeśli nie jest rozstrzygalne (piszemy L R ), to również jego dopełnienie ¯ L jest nierozstrzygalne: jeśli istnieje decydujący M dla ¯ L, możemy po prostu użyć go do podjęcia decyzji L , akceptując, gdy M odrzuca i odwrotnie. Ponieważ M zawsze zatrzymuje się z odpowiedzią (jest to decydujący), zawsze możemy odwrócić jego odpowiedź.LLRL¯ML¯LMM

Wniosek: przekątnej język jest nierozstrzygalnym, L DR .LD={MML(M)}LDR

Podobny argument można zastosować, zauważając, że jeśli zarówno jak i jego uzupełnienie ¯ L są rekurencyjnie policzalne, oba są rozstrzygalne. Jest to szczególnie przydatne, jeśli chcemy udowodnić, że języka nie da się wyliczyć rekurencyjnie, co jest silną właściwością niż nierozstrzygalność.LL¯

3. Zmniejszenie nierozstrzygniętego problemu

Zwykle dość trudno jest bezpośrednio udowodnić, że język jest nierozstrzygalny (chyba że jest już skonstruowany w sposób „diagonalny”). Ostatnią i najczęstszą metodą udowodnienia nierozstrzygalności jest użycie innego języka, o którym wiemy, że jest nierozstrzygalny. Chodzi o to, aby zredukować jeden język do drugiego: aby pokazać, że jeśli jeden jest rozstrzygalny, to drugi musi być również rozstrzygalny, ale wiadomo, że jeden z nich jest nierozstrzygalny, co prowadzi do wniosku, że pierwszy jest również nierozstrzygalny. Przeczytaj więcej na temat redukcji w „Jakie są typowe techniki wzajemnego zmniejszania problemów?” .

Przykład.

Pokaż, że przekątna język jest nierozstrzygalny.

HP={M,xM halts on x}

Dowód.
Wiemy, że jest nierozstrzygalny. Zmniejszamy L D do H P (to jest oznaczone L DH P ), to znaczy, że wykazują, że jeśli H P był rozstrzygalne można było używać jej decydującym zdecydować L D , co jest sprzeczne.LDLDHPLDHPHPLD

Zmniejszenie polega na konwersji kandydata dla L D (to jest wejścia do potencjalnego decydującym / akceptora L D ) z kandydatem w ' do H P tak, że w L D wtedy i tylko wtedy, gdy w "H P . Zapewniamy, że ta konwersja jest obliczalna. Zatem decyzja w ' mówi nam, czy w L D , więc jeśli możemy zdecydować HP, będziemy mogli również zdecydować L DwLDLDwHPwLDwHPwwLDLD

Konwersja jest następująca. Podjąć pewne i wyjściowe w ' = M ' , M , ² gdzie M ' jest tm, która zachowuje się jak M , ale jeśli M odrzutów, a M ' przechodzi w nieskończonej pętli.w=Mw=M,MMMMM

Zobaczmy, że spełniają wymagania. Jeśli w L D , to znaczy, że M postojów i akceptuje wejście M . W związku z tym, M ' również zatrzymanie i akceptuje wejście M . Tak więc, M ' , M H P . Z drugiej strony, jeśli w L D następnie M albo odrzuca albo nigdy zatrzymanie na w,w
wLDM MMMM,MHP
wLDM . W obu przypadkach M " trafi do nieskończonej pętli naM . Tak więc,M ' , M H P , i pokazuje, że są wykonane w L D wtedy i tylko wtedy, gdy w "H P , i w ten sposób wykazać, że H P R .MMMM,MHPwLDwHPHPR

Dalsza lektura: wiele przykładów redukcji i dowodzenia niemożności rozstrzygnięcia języków można znaleźć za pomocą tagu .


  1. Obowiązują pewne ograniczenia dotyczące ograniczenia. Sama konwersja musi być obliczalna i dobrze zdefiniowana dla każdego wejścia.

  2. Sygnał wejściowy o wygląda M , x , gdzie M jest TM i x jest kilka znaków. Więc tutaj wybieramy ciąg x, który ma być kodowaniem maszyny M , która jest tylko jakimś ciągiem ..HPM,xMxxM


4. Twierdzenie Rice'a

„Więc za każdym razem chcemy udowodnić jest nierozstrzygalny, musimy zmniejszyć L D (lub H P ) do tego? Czy to nie jest jakiś skrót?”LLDHP

Cóż, w rzeczywistości jest. To jest twierdzenie Rice'a .

Twierdzenie mówi, że wiele języków o określonej strukturze jest nierozstrzygalnych. Ponieważ wszystkie te języki mają tę pewną strukturę, możemy wykonać redukcję raz i zastosować ją do dowolnego języka, który przyjmuje podobną strukturę.

Twierdzenie to formalnie sformułowano w następujący sposób:

SRELS

LS={ML(M)S}

Zestaw jest podzbiorem języków w ; nazywamy to właściwością, ponieważ opisuje właściwość akceptowanego języka . Wszystkie bazy TM, których język spełnia tę właściwość, należą do .SREL(M)LS

Na przykład może być właściwością, że zaakceptowany język zawiera dokładnie dwa słowa:SL(M)

S2={L|L|=2,LRE}.
W tym przypadku jest zbiorem wszystkich baz TM, których język składa się z dokładnie dwóch słów: LS2
LS2={ML(M)S}={M|L(M)|=2}.

Właściwość może być bardzo prosta, ale nie może to być wszystkie języki RE lub żaden z języków RE. Jeśli lub wówczas właściwość jest uważana za trywialną , a indukowany jest obliczalny. Przykładem prostego jest taki, który zawiera tylko jeden język, powiedzmy . Zauważ, że chociaż zawiera tylko jeden język, istnieje nieskończenie wiele maszyn których językiem jest , więc jest nieskończony i nierozstrzygalny.S=S=RELSSScomplete={Σ}SMΣLScompete


Twierdzenie to jest bardzo silne, aby udowodnić nierozstrzygalność wielu języków.

Przykład.

Język , jest niezdecydowanyL={MM never reaches the accepting state}

Dowód.
Możemy zapisać jako , to znaczy dla właściwości . Jest to nietrywialna właściwość (obejmuje język , ale nie obejmuje na przykład języka . Dlatego według twierdzenia Rice'a jest nierozstrzygalny.L{ML(M)=0}L=LSS={LRE,|L|=0}L=L={1,11,111,}L


Udowodnimy teraz twierdzenie. Jak wspomniano powyżej, pokażemy redukcję z do (dla dowolnego arbitralnego, nietrywialnego ).HPLSS

Dowód.
Niech będzie nietrywialną własnością, . Pokazujemy , czyli zmniejszamy do , abyśmy mogli zdecydować moglibyśmy zdecydować (co, jak wiemy, jest niemożliwe, dlatego nie może być rozstrzygalne). W dowodzie poniżej zakładamy, że język nie jest pusta część , czyli . (jeśli pusty język jest w , równoważny dowód działa na właściwości dopełniacza , pominę szczegóły). PonieważSSREHPLSHPLSLSHPLSSSSS¯=RESSjest nietrywialny, obejmuje co najmniej jeden język; nazwijmy ten język i załóżmy, że jest maszyną, która akceptuje (taka maszyna istnieje, ponieważ zawiera tylko języki w RE).L0M0L0S

Przypomnijmy, że przy takiej redukcji (patrz sekcja 3 powyżej) musimy pokazać, jak przekonwertować wejście dla na wejście dla , aby wHPwLS

wHP if and only if wLS

Niech , konwertujemy go na gdzie opis maszyny (na wejściu ) jest następujący:w=(M,x)w=MMx

  1. Uruchom na .Mx
  2. Jeśli krok 1 powyżej się zatrzyma, uruchom na i odpowiednio zaakceptuj / odrzuć.M0x

Widzimy, że ta konwersja jest ważna. Po pierwsze, należy łatwo skonstruować opis podany .Mw=(M,x)

Jeśli , to zatrzymuje się na . W takim przypadku przechodzi do kroku 2 i zachowuje się jak . Dlatego jego akceptowaną język . Dlatego . Jeśli to zapętla się na . W tym przypadku, pętle na dowolnym wejściu - że zostaje zatrzymany w etapie 1. Język akceptowane przez„w tym przypadku jest pusty, . Dlatego .wHPMxMM0L(M)=M0Sw=MLS
wHPMxMxML(M)=Sw=MLS

4.1. Twierdzenie o rozszerzonym ryżu

Twierdzenie Rice'a daje nam w łatwy sposób, aby pokazać, że pewnego języka , który spełnia pewne właściwości jest nierozstrzygalny, to znaczy, . Rozszerzona wersja twierdzenia Rice'a pozwala nam ustalić, czy język jest wymienny rekurencyjnie, czy nie, to znaczy określa, czy , sprawdzając, czy spełnia pewne dodatkowe właściwości.LLRLREL

Twierdzenie (Rice, rozszerzone). Biorąc pod uwagę właściwość , język jest wymienny ( ) tylko wtedy, gdy wszystkie następujące trzy instrukcje są łącznie utrzymaćSRE

LS={ML(M)S}
LSRE
  1. Dla dowolnych dwóch , jeśli oraz wówczas również .L1,L2REL1SL1L2L2S
  2. Jeśli to istnieje skończona podzbiór tak że .L1SL2L1L2S
  3. Zbiór wszystkich skończonych języków w jest wyliczalny (innymi słowy: istnieje TM, która wylicza wszystkie skończone języki ).SLS

Dowód.
Jest to twierdzenie „wtedy i tylko wtedy” i powinniśmy udowodnić oba jego kierunki. Po pierwsze, pokazujemy, że jeśli jeden z warunków (1,2,3) nie jest spełniony, to . Następnie pokażemy, że jeśli wszystkie trzy warunki utrzymują się jednocześnie, to .LSRELSRE

Jeśli (1,2) jest wstrzymane, ale (3) nie, toLSRE .
Załóżmy, że , i zobaczymy, że mamy sposób na zaakceptowanie dowolnych skończonych języków w (a zatem zestaw wszystkich tych języków to RE), a zatem warunek (3) zachowuje się i dochodzimy do sprzeczności . Jak zdecydować, czy skończony należy do czy nie? Łatwo - używamy opis skonstruować maszynę że akceptuje tylko słowa , a teraz możemy uruchomić maszynę na (pamiętaj - założyliśmy , więc nie jest to maszyna, która akceptujeLSRESLSLMLLLSMLLSRELS!). Jeśli to a ponieważ , jego maszyna powie tak na wejściu , i gotowe.LSMLLSLSREML

Jeśli (2,3) utrzymuje, ale (1) nie, toLSRE . Zakładamy, że i pokażemy, że mamy sposób decydować o , co prowadzi do sprzeczności.L SREHP
LSREHP

Ponieważ warunek (1) nie posiada, nie jest językiem i rozszerzeniem tego, tak że . Teraz powtórzymy argument użyty w Rozdziale 4, aby zdecydować : biorąc pod uwagę dane wejściowe dla , konstruujemy maszynę której językiem jest jeśli lub w inny sposób, jego językiem jest . Następnie możemy zdecydować : albo zatrzymuje się na , albo maszyna RE dla akceptujeL 2L 1 L 2S H P ( M , x )L1SL2L1L2SHP(M,x)HPML1(M,x)HPL2HPMxLSM; możemy działać równolegle i mamy gwarancję, że przynajmniej jeden się zatrzyma.

Podajmy szczegóły budowy (na wejściu ):Mx

  1. Wykonaj następujące czynności równolegle:
    1.1 uruchom na . 1.2 uruchom maszynę naMx
    L1x
  2. Jeśli 1.2 zatrzyma się i zaakceptuje - zaakceptuj.
  3. Jeśli 1.1 zatrzyma się: uruchom maszynę na .L2x

Dlaczego to działa? Jeśli 1.1 nigdy się nie zatrzymuje, a akceptuje dokładnie wszystkie dane wejściowe, które są akceptowane w kroku 1.2, więc . Z drugiej strony, jeśli , to w pewnym momencie krok 1.1 zatrzymuje się, a akceptuje dokładnie . Może się zdarzyć, że zaakceptuje wcześniej, ale ponieważ , nie zmienia to języka w tym przypadku.(M,x)HPML(M)=L1(M,x)HPML21.2L1L2M

Jeśli (1,3) jest wstrzymane, ale (2) nie, toLSRE .
Ponownie założymy i pokażemy, że staje się rozstrzygalne, co jest sprzecznością.LSREHP

Jeśli warunek (2) nie jest spełniony, to dla dowolnego wszystkie jego skończone podzestawy spełniają (zwróć uwagę, że musi być nieskończony, ponieważ ). Jak wyżej, aby zdecydować dla danego wejścia , konstruujemy maszynę której językiem jest if i niektóre skończone przeciwnym razie . Sprzeczność zachodzi w podobny sposób jak powyżej.L1SL2L1L2SL1L1L1HP(M,x)ML1(M,x)HPL2

Konstrukcja tej maszyny jest dość podobna do poprzedniej którą zbudowaliśmy. Maszyna (na wejściu ) wykonuje:MMx

  1. Uruchamia na dlakroki.Mx|x|
  2. Jeśli zatrzyma się podczas kroku 1 - odrzućM
  3. W przeciwnym razie uruchom maszynę na .L1x

Utrzymuje, że jeśli , to w pewnym momencie, powiedzmy po 1000 krokach, zatrzymuje się na . Dlatego krok 1 zatrzyma (i odrzuci) wszelkie dane wejściowe o długości . Dlatego w tym przypadku jest skończone . Należy również zauważyć, że , a w szczególności przez nasze założenia na unieważnienie warunkiem (2), że mamy .(M,x)HPMxx>1000L(M)L(M)L1L(M)S

Z drugiej strony, jeśli , to krok 1 nigdy się nie zatrzymuje, a my nigdy nie odrzucamy w kroku 2. W tym przypadku łatwo zauważyć, że i in zwłaszcza .(M,x)HPL(M)=L1L(M)S


Pozostaje nam wskazać inny kierunek rozszerzonego twierdzenia. Oznacza to, że musimy pokazać, że jeśli wszystkie warunki (1,2,3) są spełnione, to mamy TM, która akceptuje , czyli . Innymi słowy, musimy pokazać maszynę , aby dla każdego wejścia dla którego , maszyna zaakceptowała te dane wejściowe, .LSLSREMSML(M)SMS(M)accept

Oto jak zachowuje się maszyna (na wejściu ):MSM

  1. Niech będzie maszyną, która wylicza wszystkie skończone języki w , gwarantowane przez warunek (3).Menum SS
  2. Uruchom następujące polecenie równolegle (przez połączenie typu „jaskółczy ogon”, patrz np. To i to ) dla 2.1 Uruchom aż wyświetli język 2.2. Sprawdź, czy akceptuje wszystkie słowa (uruchom na tych słowach, ponownie równolegle). 2.3 Jeśli dla niektórych , akceptuje wszystkie słowa - zaakceptuj.i=1,2,...
    Menum SLi
    MLiM
    iMLi

Dlaczego to działa? Jeśli ma skończony podzbiór , a gdy wyjdzie z tego podzbioru, w krokach 2.2 / 2.3 okaże się, że akceptuje wszystkie słowa w tym języku i zaakceptować.L(M)SLjSMenum SM

Z drugiej strony, jeśli nie może być akceptując wszystkie słowa dla każdego . Rzeczywiście, pod warunkiem (1), każdy również znajduje się w , więc jeśli akceptuje wszystkie słowa w dla niektórych , to a zatem , w przeciwieństwie.L(M)SLii=1,2,...LLiSMLiiL(M)LiL(M)S


Na koniec zauważ, że poniższe jest prostym (i bardzo przydatnym) następstwem powyższych:

Następstwo (ryż, rozszerzone). Biorąc pod uwagę nietrywialną właściwość , tak że , język nie jest wymienny rekurencyjnie, to znaczy .SRES

LS={ML(M)S}
LSRE

Dziękujemy za dodanie rozszerzonej wersji twierdzenia Rice'a! Znam inną wersję; Będę musiał to wykopać. W każdym razie nie sądzę, aby posiadanie dowodów było bardzo ważne lub nawet pomocne. Może możesz odwołać się do nich lub przesłać je gdzie indziej, jeśli nie ma dobrego odniesienia?
Raphael

13

Jednym z przydatnych narzędzi jest twierdzenie Rice'a . Oto, co mówi:

Niech nietrywialnym zestaw części obliczeniowych funkcji pojedynczych, i Gödel numeracja od . Następnie zestaw indeksówPPφPP

IP={iNφiP}

nie jest rekurencyjny.

Można go również znaleźć w postaci kodowania maszyn Turinga (lub dowolnego innego języka programowania Turinga), tj. ; tutaj definiuje numerację Gödla.IP={MM TM,fMP}.

To znaczy, możesz użyć twierdzenia Rice'a, aby udowodnić takie zbiory nierekurencyjne, które są zestawami indeksów nietrywialnych zbiorów funkcji (lub takie można sprowadzać do ).SS

Zauważ, że istnieje rozszerzenie, którego można użyć, aby pokazać, że niektóre zestawy indeksów nie są wymienne rekurencyjnie.

Przykład

Niech ma numerację Gödla. Rozważ zestaw naturalsφ

A={iNφi(j)=1 for all j2N} .

Teraz, ponieważ dlaP={fPf(j)=1 for all j2N}

  • A=IP ,
  • (n1)P i
  • (n2)P ,

Twierdzenie Rice'a można zastosować, a nie jest rozstrzygalne.A

Ponieważ wielu nie zna numeracji Gödla, należy zauważyć, że przykład działa również w zakresie maszyn Turinga (tj. Programów), używając .A={MfM(x)=1 for all x2N}

Nieprzygotowany

Rozważ zestaw naturals

A={iNφi(j)=i for all j2N}

co z pewnością nie jest obliczalne. Jednak nie jest zestawem indeksów dla żadnego ! Niech jakiegoś . Ponieważ jest numeracją Gödla , istnieje (nieskończenie wiele) z ale dla wszystkich wstrzymanych, ponieważ .APf=φiiAφjiφj=fjAf(2)=ij

Uważaj na to! Zasadniczo, jeśli indeks funkcji jest używany po „prawej stronie” lub jako parametr funkcji w definicji zestawu, prawdopodobnie nie jest to zestaw indeksów. Może być potrzebna właściwość numeracji Gödla i twierdzenie o punkcie stałym, aby pokazać, że zbiór nie jest zestawem indeksów.smn

Zobacz tutaj i tutaj pokrewne posty na temat twierdzenia Rice'a.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.