Risposte:
Prima di rispondere alla tua domanda generale, lasciatemi fare un passo indietro, fornire alcuni retroscena della storia e rispondere a una domanda preliminare: esistono anche funzioni non calcolabili?
[nota notazionale: possiamo mettere in relazione qualsiasi funzione con una lingua e quindi discutere la decidibilità di piuttosto che la calcolabilità di ]
Ci sono alcune lingue che nessuna macchina di Turing può decidere. L'argomento è semplice: ci sono "solo" numerosamente molte TM diverse, ma innumerevoli molte lingue diverse. Così ci sono al massimo lingue decidibili, e il resto (infiniti) sono indecidibili. Ulteriori letture:
Al fine di mettere la mano su un linguaggio specifico indecidibile, l'idea è quella di utilizzare una tecnica chiamata diagonalizzazione (Georg Cantor, 1873) che è stata originariamente utilizzata per mostrare che ci sono più numeri reali che numeri interi, o in altre parole, che .
L'idea di costruire il primo linguaggio indecidibile è semplice: elenchiamo tutte le macchine di Turing (il che è possibile poiché sono ricusivamente enumerabili!) E creiamo un linguaggio che non è d'accordo con ogni TM su almeno un input.
In quanto sopra, ogni riga è una TM e ogni colonna è un input. Il valore della cella è 0 se la TM rifiuta o non si ferma mai e 1 se la TM accetta quell'input. Definiamo la lingua in modo tale che D contenga l' input i -th se e solo se l' i -th TM non accetta tale input.
Seguendo la tabella sopra, poiché M 1 accetta ε . Allo stesso modo, 0 ∉ D , ma 1 ∈ D poiché M 3 non accetta 1 .
Ora, supponiamo che decida D e cerchi la riga k nella tabella: se c'è 1 nella colonna k -esima, M k accetta quell'input ma non è in D , e se c'è uno 0 lì, l'input è in D ma M k non lo accetta. Pertanto, M k non decide D , e abbiamo raggiunto la contraddizione.
Ora per la tua domanda. Esistono diversi modi per dimostrare che una lingua è indecidibile. Proverò a toccare quelli più comuni.
Il primo metodo è mostrare direttamente che una lingua è indecidibile, dimostrando che nessuna TM può deciderla. Questo di solito segue il metodo di diagonalizzazione mostrato sopra.
Esempio.
Mostrare che la (complemento della) lingua diagonale è indecidibile.
Prova.
Supponiamo che sia decidibile e lascia che M D sia il suo decisore. Esistono due casi:
A volte possiamo usare le proprietà di chiusura per mostrare che una lingua non è decidibile, in base ad altre lingue che già sappiamo non essere decidibili.
In particolare, se non è decidibile (scriviamo L ∉ R ), allora anche il suo complemento ¯ L è indecidibile: se esiste un decisore M per ¯ L , potremmo semplicemente usarlo per decidere L accettando ogni volta che M rifiuta e viceversa. Dal momento che M si ferma sempre con una risposta (si tratta di un decisore), possiamo sempre invertito la sua risposta.
Conclusione: La diagonale lingua è indecidibile, L D ∉ R .
Un argomento simile può essere applicato osservando che se sia che il suo complemento ¯ L sono enumerabili ricorsivamente, entrambi sono decidibili. Ciò è particolarmente utile se vogliamo dimostrare che una lingua non è enumerabile in modo ricorsivo, una proprietà forte dell'indecidibilità.
Di solito, è abbastanza difficile dimostrare direttamente che una lingua è indecidibile (a meno che non sia già costruita in modo "diagonale"). L'ultimo e più comune metodo per dimostrare l'indecidibilità è usare un'altra lingua che già sappiamo essere indecidibile. L'idea è di ridurre una lingua all'altra: per dimostrare che se una è decidibile, anche l'altra deve essere decidibile, ma una di esse è già nota per essere indecidibile, il che porta alla conclusione che anche la prima è indecidibile. Maggiori informazioni sulle riduzioni in "Quali sono le tecniche comuni per ridurre i problemi gli uni agli altri?" .
Esempio.
Mostrare che la lingua diagonale è indecidibile.
Prova.
Sappiamo che è indecidibile. Riduciamo L D a H P (questo è indicato L D ≤ H P ), cioè mostriamo che se H P fosse decidibile potremmo usare il suo decisore per decidere L D , che è una contraddizione.
La riduzione funziona convertendo un candidato per L D (cioè un ingresso per qualsiasi potenziale decisore / accettore per L D ) per un candidato w ' per H P tale che w ∈ L D se e solo se w ' ∈ H P . Ci assicuriamo che questa conversione sia calcolabile. Quindi, decidere w ′ ci dice se w ∈ L D o meno , quindi se possiamo decidere HP saremmo anche in grado di decidere L D .¹
La conversione è la seguente. Richiedere un certo e uscita w ' = ⟨ M ' , ⟨ M ⟩ ⟩ , ² dove M ' è una MT che si comporta come M , ma se M scarti, allora M ' entra in un ciclo infinito.
Vediamo che soddisfa i requisiti.
Se w ∈ L D , significa che M si arresta e accetta in ingresso ⟨ M ⟩ . Pertanto, M ' anche soste e accetta in ingresso ⟨ M ⟩ . Così, ⟨ M ' , ⟨ M ⟩ ⟩ ∈ H P .
D'altra parte, se w ∉ L D allora M rifiuta o non si ferma mai ⟨
. In entrambi i casi M ' andrà in un ciclo infinito sul ⟨ M ⟩ . Così, ⟨ M ' , ⟨ M ⟩ ⟩ ∉ H P , e abbiamo finito mostrando che w ∈ L D se e solo se w ' ∈ H P , e hanno così visto come H P ∉ R .
Ulteriori letture: molti esempi di riduzioni e dimostrazione di instabilità delle lingue possono essere trovati tramite il tag riduzioni .
Ci sono alcune ulteriori restrizioni sulla riduzione per essere validi. La conversione stessa deve essere calcolabile e ben definita per qualsiasi input.
Un ingresso di assomiglia ⟨ M , x ⟩ , dove M è un TM ed x è una stringa. Quindi qui scegliamo la stringa x come codifica della macchina M , che è solo una stringa.
"Quindi ogni volta che desideriamo dimostrare che è indecidibile, dobbiamo ridurre L D (o H P ) ad esso? Non c'è qualche scorciatoia?"
Bene, in effetti, c'è. Questo è il teorema di Rice .
Il teorema afferma che molte lingue che hanno una certa struttura sono indecidibili. Poiché tutte queste lingue hanno questa certa struttura, possiamo fare una volta la riduzione e applicarla a qualsiasi lingua che ammetta una struttura simile.
Il teorema è formalmente dichiarato nel modo seguente,
L'insieme è un sottoinsieme di lingue in ; la chiamiamo proprietà perché descrive una proprietà della lingua accettata . Tutte le TM il cui linguaggio soddisfa questa proprietà appartengono a .
Ad esempio, può essere la proprietà che la lingua accettata contiene esattamente due parole:
In questo caso è l'insieme di tutte le TM la cui lingua è composta esattamente da due parole:
La proprietà può essere molto semplice, ma non può essere tutte le lingue RE o nessuna delle lingue RE. Se o la proprietà si dice banale e la indotta è calcolabile. Un esempio per una semplice è quello che contiene solo una singola lingua, diciamo . Nota che sebbene contenga solo una sola lingua, ci sono infinitamente molte macchine cui lingua è , quindi è infinita e indecidibile.
Il teorema è molto potente per dimostrare l'indecidibilità di molte lingue.
Esempio.
La lingua , è indecidibile
Prova.
Possiamo scrivere come , ovvero per la proprietà . Questa è una proprietà non banale (include la lingua , ma non include, ad esempio, la lingua . Pertanto, dal teorema di Rice, è indecidibile.
Ora dimostriamo il teorema. Come accennato in precedenza, mostreremo una riduzione da a (per qualsiasi arbitraria non banale ).
Prova.
Sia una proprietà non banale, . Mostriamo , ovvero riduciamo a modo che se possiamo decidere saremo in grado di decidere (cosa che sappiamo essere impossibile, quindi non può essere decidibile). Nella dimostrazione di seguito si assume che il linguaggio vuoto non fa parte della , che è . (se la lingua vuota è in , una prova equivalente funziona sulla proprietà del complemento , tralascerò i dettagli). Dal momento chenon è banale, include almeno una lingua; chiamiamo quella lingua e supponiamo che sia una macchina che accetta (tale macchina esiste, poiché include solo le lingue in RE).
Ricordiamo che in tale riduzione (vedere la sezione 3 sopra), dobbiamo mostrare come convertire un input per in un input per modo che
Lascia che , lo convertiamo in dove la descrizione della macchina (su un input ) è la seguente:
Vediamo che questa conversione è valida. Per prima cosa nota che è semplice costruire la descrizione di dato .
Se , allora ferma su . In questo caso, procede al passaggio 2 e si comporta proprio come . Pertanto il suo linguaggio è accettato . Pertanto, .
Se allora scorre su . Questo caso, loop su qualsiasi input - si blocca nella fase 1. Il linguaggio accettato da in questo caso è vuota, . Pertanto, .
Il teorema di Rice ci offre un modo semplice per dimostrare che un certo linguaggio che risponde ad alcune proprietà è indecidibile, cioè, . La versione estesa del teorema di Rice ci consente di determinare se la lingua è enumerabile in modo ricorsivo o meno, vale a dire se , controllando se soddisfa alcune proprietà aggiuntive.
Teorema (riso, esteso). Data una proprietà , la lingua è enumerabile in modo ricorsivo ( ) se e solo se tutte e tre le seguenti affermazioni congiuntamente hold
- Per ogni due , se e anche poi anche .
- Se allora esiste un insieme finito sottoinsieme modo che .
- L'insieme di tutte le lingue finite in è enumerabile (in altre parole: esiste una TM che elenca tutte le lingue finite ).
Prova.
Questo è un teorema "se e solo se", e dovremmo dimostrare entrambe le sue direzioni. Innanzitutto, mostriamo che se una delle condizioni (1,2,3) non è , allora . Dopodiché mostreremo che se tutte e tre le condizioni contemporaneamente, allora .
Se (1,2) rimane, ma (3) no, allora .
Supponiamo che , e vedremo che abbiamo un modo per accettare tutte le lingue finite in (e quindi, l'insieme di tutte queste lingue è RE), quindi la condizione (3) vale e arriviamo a una contraddizione . Come decidere se una finita appartiene o meno a ? Facilmente - usiamo la descrizione di per costruire una macchina che accetta solo le parole in , e ora eseguiamo la macchina di su (ricorda - abbiamo assunto , quindi esiste una macchina che accetta!). Se quindi e da , la sua macchina dirà sì sull'input , e abbiamo finito.
Se (2,3) rimane, ma (1) no, allora .
Partiamo dal presupposto che e mostreremo che abbiamo un modo per decidere , portando a una contraddizione.
Perché la condizione (1) non vale, c'è un linguaggio e un superset di esso, in modo che . Ora ripeteremo l'argomento usato nella Sezione 4 per decidere : dato un input per , costruiamo una macchina cui lingua è if o altro, la sua lingua è . Quindi, possiamo decidere : ferma su oppure la macchina RE per accetta; possiamo correre entrambi in parallelo e sono garantiti che almeno uno si fermerà.
Diamo i dettagli della costruzione di (sull'input ):
Perché funziona? Se 1.1 non si ferma mai e accetta esattamente tutti gli input che sono stati accettati al passaggio 1.2, quindi . D'altra parte, se allora, ad un certo punto il passo 1.1 si interrompe e accetta esattamente . Può accadere che accetti in anticipo, ma poiché , in questo caso non cambia la lingua di .
Se (1,3) rimane, ma (2) no, allora .
Ancora una volta, assumeremo e mostreremo che diventa decidibile, il che è una contraddizione.
Se la condizione (2) non è valida, allora per qualsiasi , tutti i suoi sottoinsiemi finiti soddisfano (notare che deve essere infinito, poiché ). Come sopra, al fine di decidere per un dato input , costruiamo una macchina cui lingua è se e un po' finito altrimenti. La contraddizione segue in modo simile a quanto sopra.
La costruzione di questa macchina è abbastanza simile alla precedente abbiamo costruito. La macchina (sull'ingresso ) fa:
Sostiene che, se , poi ad un certo punto, dopo 1000 passi, ferma su . Pertanto, il passaggio 1 si interromperà (e rifiuterà) qualsiasi input di lunghezza . Pertanto, in questo caso, è finito . Si noti inoltre che , e, in particolare, per le nostre ipotesi sulla nullità della condizione (2), abbiamo che .
D'altra parte, se , il passaggio 1 non si interrompe mai e non rifiutiamo mai al passaggio 2. In questo caso è facile vedere che e in particolare, .
Ci resta da mostrare l'altra direzione del teorema esteso. Cioè, dobbiamo dimostrare che se tutte le condizioni (1,2,3) , allora abbiamo una TM che accetta , cioè . In altre parole, dobbiamo mostrare una macchina modo che per qualsiasi input per cui , la macchina accetti questo input, .
Ecco come si comporta la macchina (in input ):
Perché funziona Se ha un sottoinsieme finito , e una volta che genera quel sottoinsieme, il passaggio 2.2 / 2.3 troverà che accetta tutte le parole in quella lingua e accettare.
D'altra parte, se non si può accettare tutte le parole per qualsiasi . In effetti, per condizione (1), anche è in , quindi se accetta tutte le parole in per alcuni , allora e quindi , in contraddizione.
Infine, nota che quanto segue è un corollario semplice (e molto utile) di quanto sopra:
Corollario (riso, esteso). Data una proprietà non banale , in modo che , la lingua non è enumerabile ricorsivamente, cioè .
Uno strumento utile è il teorema di Rice . Ecco cosa dice:
Sia un insieme non banale di funzioni unarie parzialmente calcolabili e una numerazione di Gödel di . Quindi il set di indici di
non è ricorsivo.
Lo trovi anche espresso in termini di codifiche delle macchine di Turing (o di qualsiasi altro linguaggio di programmazione completo di Turing), cioè ; qui definisce una numerazione di Gödel.
Cioè, puoi usare il teorema di Rice per dimostrare che tali insiemi non ricorsivi sono insiemi di insiemi di funzioni non banali (o tali sono riducibili a ).
Si noti che esiste un'estensione che può essere utilizzata per mostrare che determinati set di indici non sono enumerabili in modo ricorsivo.
Consenti a una numerazione di Gödel. Considera l'insieme dei naturali
.
Ora poiché per
Il teorema di Rice può essere applicato e non è decidibile.
Poiché molti non hanno familiarità con le numerazioni di Gödel, si noti che l'esempio funziona anche in termini di macchine di Turing (ovvero programmi) utilizzando .
Considera l'insieme dei naturali
che non è certamente calcolabile. Tuttavia, non è un indice impostato per qualsiasi ! Lasciate per un po ' . Poiché è una numerazione di Gödel , ci sono (infinitamente molti) con ma per tutti vale perché .
Diffidare di questo! Come regola empirica, se l'indice della funzione viene utilizzato sul "lato destro" o come parametro della funzione nella definizione dell'insieme, probabilmente non è un insieme di indici. Potresti aver bisogno della proprietà delle numerazioni di Gödel e del teorema del fixpoint per mostrare che un set non è un set di indici.