Halting theorem

Questo è un problema fondamentale, che abbiamo trattato anche in Fondamenti teorica#Halting problem, ma qui lo ritrattiamo, perché così lo rifacciamo per bene. In parte è stato trattato anche al corso di Logica.

Enunciato Halting theorem

Questo è molto simile a quanto presente sul (Sipser 2012). Ossia consideriamo il linguaggio

Dimostrazione Halting theorem

La parte del sì è facile perché basta eseguirlo e vedere che si ferma (quindi abbiamo una La macchina di Turing#La macchina di Turing universale. Se si ferma appartiene al linguaggio, altrimenti è la parte in cui diverge.

Dimostrazione non decidibilità Supponiamo sia decidibile e dimostriamo l'assurdo. Se esiste una macchina tale per cui decida quel linguaggio,

allora possiamo usare questa macchina per costruire un tale che per cui

Allora la computazione della funzione genera un assurdo.

Il motivo è che Questa cosa dovrebbe essere riscritta in modo per essere comprensibile da macchine di Turing.

Opposto di Halting theorem

Ossia vogliamo riconoscere il linguaggio

Si può dimostrare che questo problema non è nemmeno riconoscibile da nessuno!

Dimostrazione complemento di halting theorem

Si ragiona anche qui per assurdo, se fosse riconoscibile, avremmo che Halting theorem principale sarebbe riconoscibile.

Halting Theorem and Reducibility-20240306120459845

Mapping reducibility

Definizione mapping reducibility

Un linguaggio è riducibile a un altro linguaggio se esiste una funzione computabile totale tale che valga

E si scrive che Ossia posso mappare qualunque parola in in una stringa in . È molto importante che sia computabile, perché è un modo di dire che non stiamo barando nella dimostrazione, e mi appoggio soltanto all'espressività dei due linguaggi.

Proprietà di decidibilità basilari

  • Se è decidibile, allora è decidibile.
  • Se è indecidibile allora lo è anche perché altrimenti si avrebbe un assurdo
  • Se è decidibile e no allora altrimenti assurdo per il primo punto.

Ogni linguaggio decidibile è semplice

Ossia se è decidibile allora per ogni tale che e , ossia è un linguaggio finito, si ha che

In altre parole, possiamo dire che i linguaggi decidibili sono mapping reducibili a qualunque altro linguaggio non banale, quindi sono le più semplici esistenti in altre parole.

Dimostrazione: Dato che è decidibile, esiste tale che decide se appartiene o meno a quel linguaggio. Dato che è finito, esiste un che non appartiene e un altro che appartiene. Allora costruisco la funzione così:

  1. Runno , se appartiene, mappo a
  2. Se non appartiene mappo a . Ez.

Indecidibilità su nastro vuoto

NOTA: in ogni caso devo vedere se il codice della macchina è valido.

Definendo il linguaggio

Per dimostrare ciò basta dimostrare che Ossia dobbiamo costruire una funzione che mappa ogni stringa di in una di . Questo è molto semplice, solo definire qualche dettaglio (non banale) Halting Theorem and Reducibility-20240306125418004

Indicibilità ogni input

Definiamo il linguaggio

Anche questo si può dimostrare in maniera simile al precedente, con una mapping reduction. Questo è anche più semplice: Se non è il codice di nessuna macchina ritorno quello. Altrimenti: Per ogni input costruisco la seguente macchina

  1. La macchina nuova prende un input , la ignora per il momento, e simula .
  2. Se termina (e quindi appartiene a ) allora termino anche io ignorando l'input.
  3. Altrimenti divergo, e quindi non appartengo. Questa nuova macchina è bona. Quindi funziona l'indicibilità

Quindi Se non è codice ho già la risposta. Altrimenti

Equivalence problem decidability

Anche in questo caso proviamo a ridurci al caso . Sempre come prima, per input mi costruisco questa macchina Halting Theorem and Reducibility-20240306132502507 La correttezza di questo è un po' più fine, però è giusto. Vedere qui.

Equivalence problem recognizability

Il linguaggio del problema di equivalenza non è nemmeno riconoscibile. Per fare ciò devo ridurre a questo EQ. Dimostro la riduzione

Halting Theorem and Reducibility-20240306133625876

Nota sulla gerarchia

Cosa curiosa è che è il suo opposto non sono comparabili. Mentre ci aspetteremmo che HALT sia più semplice. Una altra cosa curiosa è che EQ non è riconoscibile, e nemmeno il suo opposto lo è. Quindi EQ non è nemmeno semi-decidibile. Halting Theorem and Reducibility-20240517122359749

Turing riducibilità

Definizione di oracolo

Dato un linguaggio e una stringa , l'oracolo mi dice in tempo finito se .

Definizione Turing-riducibilità

Dato un , questo è Turing riducibile a , quindi , se dato un oracolo per possiamo decidere

Mapping reducibility => Turing-riducibilità

Possiamo dimostrare in modo semplice che con Turing-riducibilità è riducibile a . Senza problemi. Mentre non posso farlo con Mapping reducibility. Questo mi dice che Turing riducibilità è una proprietà più forte della mapping reducibility, anche se non è propriamente una dimostrazione di questa proprietà.

Baker-Gill-Soloway (1975)

Questa sezione è solamente una nota filosofica, ma di poco conto per l'esame.

Prendiamo una macchina di Turing con oracolo, ossia possiamo chiedere se una stringa è parte dell'oracolo in tempo costante (come se fosse un dizionario con accesso diretto).

Esistono oracoli tali per cui con una macchina di Turing che usi il primo oracolo, e anche che usando il secondo oracolo. Questo teorema dice che la tecnica di diagonalizzazione di Cantor non può essere usata per risolvere NP = P. Questo dato è inutile per la maggior parte delle cose attuali credo. Oppure TM non sono buoni per risolvere questo problema (ha fatto nascere la branca con i circuiti booleani, non fatta qui).

References

[1] Sipser “Introduction to the Theory of Computation” Cengage Learning 2012