Come dimostrare che una funzione non è calcolabile?


Risposte:


57

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 f con una lingua Lf={(x,y)y=f(x)} e quindi discutere la decidibilità di Lf piuttosto che la calcolabilità di f ]


Lingue indecidibili fanno esistere

Ci sono alcune lingue che nessuna macchina di Turing può decidere. L'argomento è semplice: ci sono "solo" numerosamente molte (0) TM diverse, ma innumerevoli molte () lingue diverse. Così ci sono al massimo 0 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 .>0

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.

ε0100M110101M201000M300010

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.DDii

Seguendo la tabella sopra, poiché M 1 accetta ε . Allo stesso modo, 0 D , ma 1 D poiché M 3 non accetta 1 .εDM1ε0D1DM31

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.MkDk1kMkD0DMkMkD

Ora per la tua domanda. Esistono diversi modi per dimostrare che una lingua è indecidibile. Proverò a toccare quelli più comuni.

1. Prova diretta

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.

LD¯={MML(M)}

Prova.
Supponiamo che sia decidibile e lascia che M D sia il suo decisore. Esistono due casi:LD¯MD

  1. accettaM DMDMD : ma poi,in modoM ¯ L D . Quindi questo non può accadere se M D decide ¯ L D .MDL(MD)MLD¯MDLD¯
  2. non accettaM DMDMD : così e quindiM ¯ L D . Ma se è in L D , M D avrebbe dovuto accettare, e abbiamo raggiunto ancora una volta la contraddizione.MDL(MD)MLD¯LDMD

2. Proprietà di chiusura

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.LLRL¯ML¯LMM

Conclusione: La diagonale lingua è indecidibile, L DR .LD={MML(M)}LDR

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à.LL¯

3. Riduzione da un problema indecidibile

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.

HP={M,xM halts on x}

Prova.
Sappiamo che è indecidibile. Riduciamo L D a H P (questo è indicato L DH P ), cioè mostriamo che se H P fosse decidibile potremmo usare il suo decisore per decidere L D , che è una contraddizione.LDLDHPLDHPHPLD

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 DwLDLDwHPwLDwHPwwLDLD

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.w=Mw=M,MMMMM

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 w,w
wLDM MMMM,MHP
wLDM . In entrambi i casi M ' andrà in un ciclo infinito sulM . 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 .MMMM,MHPwLDwHPHPR

Ulteriori letture: molti esempi di riduzioni e dimostrazione di instabilità delle lingue possono essere trovati tramite il tag .


  1. Ci sono alcune ulteriori restrizioni sulla riduzione per essere validi. La conversione stessa deve essere calcolabile e ben definita per qualsiasi input.

  2. 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.HPM,xMxxM


4. Teorema di Rice

"Quindi ogni volta che desideriamo dimostrare che è indecidibile, dobbiamo ridurre L D (o H P ) ad esso? Non c'è qualche scorciatoia?"LLDHP

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,

SRELS

LS={ML(M)S}

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 .SREL(M)LS

Ad esempio, può essere la proprietà che la lingua accettata contiene esattamente due parole:SL(M)

S2={L|L|=2,LRE}.
In questo caso è l'insieme di tutte le TM la cui lingua è composta esattamente da due parole: LS2
LS2={ML(M)S}={M|L(M)|=2}.

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.S=S=RELSSScomplete={Σ}SMΣLScompete


Il teorema è molto potente per dimostrare l'indecidibilità di molte lingue.

Esempio.

La lingua , è indecidibileL={MM never reaches the accepting state}

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.L{ML(M)=0}L=LSS={LRE,|L|=0}L=L={1,11,111,}L


Ora dimostriamo il teorema. Come accennato in precedenza, mostreremo una riduzione da a (per qualsiasi arbitraria non banale ).HPLSS

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 cheSSREHPLSHPLSLSHPLSSSSS¯=RESSnon è 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).L0M0L0S

Ricordiamo che in tale riduzione (vedere la sezione 3 sopra), dobbiamo mostrare come convertire un input per in un input per modo che wHPwLS

wHP if and only if wLS

Lascia che , lo convertiamo in dove la descrizione della macchina (su un input ) è la seguente:w=(M,x)w=MMx

  1. Esegui su .Mx
  2. Se il passaggio 1 sopra si interrompe, eseguire su e accettare / rifiutare di conseguenza.M0x

Vediamo che questa conversione è valida. Per prima cosa nota che è semplice costruire la descrizione di dato .Mw=(M,x)

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, .wHPMxMM0L(M)=M0Sw=MLS
wHPMxMxML(M)=Sw=MLS

4.1 Il teorema del riso esteso

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.LLRLREL

Teorema (riso, esteso). Data una proprietà , la lingua è enumerabile in modo ricorsivo ( ) se e solo se tutte e tre le seguenti affermazioni congiuntamente holdSRE

LS={ML(M)S}
LSRE
  1. Per ogni due , se e anche poi anche .L1,L2REL1SL1L2L2S
  2. Se allora esiste un insieme finito sottoinsieme modo che .L1SL2L1L2S
  3. L'insieme di tutte le lingue finite in è enumerabile (in altre parole: esiste una TM che elenca tutte le lingue finite ).SLS

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 .LSRELSRE

Se (1,2) rimane, ma (3) no, alloraLSRE .
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 accettaLSRESLSLMLLLSMLLSRELS!). Se quindi e da , la sua macchina dirà sì sull'input , e abbiamo finito.LSMLLSLSREML

Se (2,3) rimane, ma (1) no, alloraLSRE .
Partiamo dal presupposto che e mostreremo che abbiamo un modo per decidere , portando a una contraddizione.LSREHP

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 accettaL1SL2L1L2SHP(M,x)HPML1(M,x)HPL2HPMxLSM; possiamo correre entrambi in parallelo e sono garantiti che almeno uno si fermerà.

Diamo i dettagli della costruzione di (sull'input ):Mx

  1. Effettuate le seguenti operazioni in parallelo:
    1.1 eseguite su . 1.2 esegui la macchina di suMx
    L1x
  2. Se 1.2 si interrompe e accetta, accetta.
  3. Se 1.1 si ferma: avvia la macchina di su .L2x

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 .(M,x)HPML(M)=L1(M,x)HPML21.2L1L2M

Se (1,3) rimane, ma (2) no, alloraLSRE .
Ancora una volta, assumeremo e mostreremo che diventa decidibile, il che è una contraddizione.LSREHP

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.L1SL2L1L2SL1L1L1HP(M,x)ML1(M,x)HPL2

La costruzione di questa macchina è abbastanza simile alla precedente abbiamo costruito. La macchina (sull'ingresso ) fa:MMx

  1. Esegue su perpassi.Mx|x|
  2. Se ferma durante il passaggio 1, rifiutaM
  3. Altrimenti, esegui la macchina di su .L1x

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 .(M,x)HPMxx>1000L(M)L(M)L1L(M)S

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, .(M,x)HPL(M)=L1L(M)S


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, .LSLSREMSML(M)SMS(M)accept

Ecco come si comporta la macchina (in input ):MSM

  1. Sia la macchina che elenca tutti i linguaggi finiti in , garantito dalla condizione (3).Menum SS
  2. Esegui quanto segue in parallelo (a coda di rondine, vedi ad esempio, this e this ) per 2.1 Esegui fino a quando non emette la lingua 2.2. Controlla se accetta tutte le parole di (esegui su queste parole, sempre in parallelo). 2.3. Se per alcuni , accetta tutte le parole di - accetta.i=1,2,...
    Menum SLi
    MLiM
    iMLi

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.L(M)SLjSMenum SM

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.L(M)SLii=1,2,...LLiSMLiiL(M)LiL(M)S


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è .SRES

LS={ML(M)S}
LSRE

Grazie per aver aggiunto la versione estesa del teorema di Rice! Conosco una versione diversa; Dovrò scavare quello. Comunque, non penso che sia molto importante o addirittura utile avere le prove qui. Forse puoi fare riferimento a loro o caricarli da qualche altra parte se non esiste un buon riferimento?
Raffaello

13

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 diPPφPP

IP={iNφiP}

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.IP={MM TM,fMP}.

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 ).SS

Si noti che esiste un'estensione che può essere utilizzata per mostrare che determinati set di indici non sono enumerabili in modo ricorsivo.

Esempio

Consenti a una numerazione di Gödel. Considera l'insieme dei naturaliφ

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

Ora poiché perP={fPf(j)=1 for all j2N}

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

Il teorema di Rice può essere applicato e non è decidibile.A

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 .A={MfM(x)=1 for all x2N}

Unexample

Considera l'insieme dei naturali

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

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é .APf=φiiAφjiφj=fjAf(2)=ij

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.smn

Vedi qui e qui per i post correlati sul teorema di Rice.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.