Come funziona una macchina di Turing non deterministica?


12

Quali sono le differenze tra le macchine di Turing deterministiche e non deterministiche? Modelli diversi ma equivalenti di NDTM. In particolare, qual è questa frase frequentemente usata "indeterminatamente indovinare"? Come usarlo nel modo giusto ed esempi di utilizzo errato. Il mio obiettivo è creare una domanda di riferimento.


1
Cosa stai cercando oltre a quello che Wikipedia ha da dire sull'argomento?
David Richerby,

1
I miei contributi su questo argomento: uno , due .
Raffaello

Non sono sicuro di essere d'accordo con la forma di questo tentativo di una domanda di riferimento (piuttosto ampia). Inoltre, non mi è chiaro cosa ci si aspetta oltre la definizione qui. (Se più persone leggessero la definizione, ci sarebbe meno confusione in giro.)
Raffaello

Risposte:


8

Ecco alcuni modi di pensare al non determinismo (copiato da questa risposta ).

Il genio. Ogni volta che la macchina ha una scelta, un genio le dice da che parte andare. Se l'input è nella lingua, il genio può dirigere la macchina in modo tale che alla fine accetti. Al contrario, se l'input non è nella lingua, qualunque cosa il genio dica alla macchina di fare, rifiuterà sempre.

Suggerimenti. La macchina calcola una funzione bivariata. Il primo input è una parola , e il secondo input è un "suggerimento" . Ogni volta che la macchina deve affrontare una scelta non deterministica, consulta il simbolo di suggerimento successivo e opera di conseguenza. Ci viene promesso quanto segue:wx

  • Completezza: se c'è qualche suggerimento che fa accettare la macchina.wLx
  • Solidità: se la macchina rifiuta su tutti i suggerimenti.wL

Accettare calcoli. Un calcolo accettante è un calcolo legale (uno in cui la macchina opera sempre secondo una delle scelte che deve affrontare) che termina in uno stato accettante. Una parola è nella lingua se ha un calcolo accettante.

Possiamo formalizzare l'idea di accettare il calcolo usando le configurazioni . Una configurazione è una descrizione istantanea dell'intero stato della macchina. Possiamo definire una relazione , dove sono configurazioni, che vale quando può portare a in un solo passaggio. In una macchina deterministica, esiste al massimo un per ogni , mentre in una macchina non deterministica potrebbe essercene più di uno. Un calcolo di accettazione per una parola è uno che inizia nella configurazione iniziale (il nastro contiene , i punti di testa all'inizio diσσσ,σσσσσwww, lo stato è lo stato iniziale) e termina con una configurazione accettante.

Un'altra descrizione equivalente è in termini di raggiungibilità. Considera un grafico diretto in cui i vertici sono configurazioni e c'è un vantaggio da a if . Un calcolo di accettazione è un percorso dalla configurazione iniziale a una configurazione di accettazione.σσσσ


7

La differenza tra macchine di Turing deterministiche e non deterministiche sta nella funzione di transizione. Nelle macchine di Turing deterministiche la funzione di transizione è una funzione parziale:δ

δ:Q×BQ×B×{left,right}

il che significa che dato uno stato e un simbolo di nastro hai uno o nessuno stato, inserisci il simbolo a destra e la direzione per spostarti. Tuttavia, nelle macchine di Turing non deterministiche questo sembra (qui è l'insieme dei sottoinsiemi di un insieme):P

δ:Q×BP(Q×B×{left,right})

significa che non hai nessuno o più stati, simboli di nastro da scrivere o direzione in cui spostarti. Questo dà alla tua macchina la possibilità di scegliere efficacemente in tale stato e simbolo del nastro tra i diversi "rami" di calcolo possibili.

In pratica, ciò significa che possiamo calcolare output diversi per lo stesso input. Pertanto, il linguaggio di una macchina di Turing non deterministica è l'insieme di parole per le quali troviamo una derivazione nelle transizioni definite. Una corsa specifica potrebbe non trovare tale derivazione ma l'importante è che possa verificarsi. Quindi quando "indovini" stai solo scegliendo uno dei possibili rami del calcolo.

Esempio di utilizzo

L={(M1,M2):there exists at least one word accepted by both TM at the same time}

In questo caso si potrebbe semplicemente "indovinare" una parola ed eseguire e su controllando che se entrambi accettano, accettano allo stesso tempo. L'ipotesi potrebbe funzionare introducendo uno stato con transizioni che scrivono su alcuni nastri / o e che esce leggendo qualsiasi simbolo sulla macchina generale.wM1M2wq01

Ad essere sincero, non ho riscontrato alcun esempio di cattivo uso di questa "ipotesi", ma verificare che ogni volta che questa frase venga usata correttamente, si riduca per verificare che si possano costruire automi con questa struttura che simulano le ipotesi.


"In pratica, ciò significa che possiamo calcolare output diversi per lo stesso input." - questo sembra suggerire che potremmo effettivamente costruire una macchina non deterministica. Questo è falso.
Raffaello

@Raphael vuoi dire che non è possibile costruire una macchina non deterministica? perché è così?
Rodrigo,

Perché il non determinismo è un concetto matematico che non ha un equivalente fisico (per quanto ne so).
Raffaello

6

Accettazione della stringa di input in NTM

vorrei aggiungere altro sulle macchine di Turing deterministiche e non deterministiche. Consideriamo che per alcune lingue , progettiamo rispettivamente una macchina di Turing deterministica e non deterministica. Su alcuni input , ci sarà solo un percorso di configurazioni nel caso della macchina deterministica di Turing, cioè (dove ogni rappresenta una configurazione al passaggio). Ora sulla base della configurazione , possiamo facilmente accettare e rifiutare la stringa di input .Lxc0c1ckciickx

Vedi l'immagine qui sotto per una migliore comprensione: inserisci qui la descrizione dell'immagine

Nel caso di NTM, dobbiamo stare attenti, perché può accadere che su alcuni percorsi di configurazione entriamo nello stato di rifiuto. Quindi per le macchine di Turing non deterministiche, diciamo che una stringa è accettata se almeno uno dei percorsi di configurazione porta allo stato di accettazione . Rifiuteremo la stringa di input se tutti i percorsi di configurazione portano allo stato di rifiuto.

Ad esempio, considera l'albero di configurazione sopra indicato per la macchina di Turing non deterministica, diciamo una stringa di input , in questo caso accetteremo la stringa di input perché esiste un percorso di accettazione.x

Riferimento : http://cs.umw.edu/~finlayson/class/fall14/cpsc326/notes/24-complexity2.html


5

Aumento con un modulo di ipotesi.

Ho trovato questo modello in " Computer e intrattabilità " di MR Garey e DS Johnson.

L'NDTM ha esattamente la stessa struttura di un DTM, tranne per il fatto che è aumentato con un modulo di indovinello con la propria testina di sola scrittura. Il modulo di indovinello fornisce i mezzi per scrivere "indovinare" e viene utilizzato esclusivamente per questo scopo.

inserisci qui la descrizione dell'immagine

Come funziona.

Il primo stadio è lo stadio delle ipotesi. Inizialmente, la stringa di input viene scritta nei quadrati del nastro da a(mentre tutti gli altri quadrati sono vuoti), la testina di lettura / scrittura esegue la scansione del quadrato , la testina di sola scrittura esegue la scansione del quadrato e il controllo dello stato finito è "inattivo". Il modulo di indovinamento quindi dirige la testina di sola scrittura, un passo alla volta, sia per scrivere un simbolo dall'alfabeto nastro nel riquadro del nastro che viene scansionato e spostare un quadrato a sinistra, sia per fermare, a quel punto il il modulo di diventa inattivo e il controllo dello stato finito viene attivato nello statox1|x|11Γq0. La scelta se rimanere attivo e, in tal caso, quale simbolo di scrivere, viene fatta dal modulo di indovinare in modo totalmente arbitrario. Quindi il modulo di ipotesi può scrivere qualsiasi stringa da prima che si fermi e, in effetti, non deve mai fermarsi.ΓΓ

La fase di "verifica" inizia quando il controllo dello stato finito è attivato nello stato . Da questo punto in poi, il calcolo procede esclusivamente sotto la direzione del programma NDTM secondo esattamente le stesse regole di un DTM. Il modulo indovinello e la sua testina di sola scrittura non sono più coinvolti, avendo adempiuto al loro ruolo scrivendo la stringa indovinata sul nastro. Naturalmente, la stringa indovinata può (e di solito verrà) esaminata durante la fase di controllo. Il calcolo cessa quando e se il controllo dello stato di stato finito entra in uno dei due stati di (o o ) e si dice che accetti il ​​calcolo se si ferma nello statoq0qYqNqY. Tutti gli altri calcoli, fermi o meno, sono classificati semplicemente come calcoli non accettanti .
Si noti che qualsiasi programma NDTM avrà un numero infinito di possibili calcoli per una determinata stringa di input , uno per ogni possibile stringa indovinata da . Diciamo che il programma NDTM accetta se almeno uno di questi è un calcolo accettante.MxΓM x

Il tempo richiesto da un programma NDTM per accettare la stringa è definito come il minimo, tra tutti i calcoli di accettazione di per , del numero di passaggi che si verificano nelle ipotesi e nel controllo degli stadi fino allo stato di arresto è inserito.MxLMMxqY

L'unico punto che merita una menzione speciale speciale è che, laddove di solito immaginiamo un algoritmo non deterministico come indovinare una struttura che in qualche modo dipende dalla data istanza [problema] , il modulo di ipotesi di un NDTM ignora completamente l'input dato. Tuttavia, poiché ogni stringa di è una possibile ipotesi, possiamo sempre progettare il nostro programma NDTM in modo che la fase di controllo inizi controllando se non la stringa indovinata corrisponde (sotto l'interpretazione implicita che il nostro programma pone sulle stringhe) a un ipotesi appropriata per l'input dato. In caso contrario, il programma può accedere immediatamente allo stato di arresto . SIΓqN

. . .

La classe è definita in modo informale come la classe di tutti i problemi di decisione che, secondo schemi di codifica ragionevoli, possono essere risolti con algoritmi non deterministici a tempo polinomiale.NPΠ

L'uso del termine "risolvere" in queste definizioni informali dovrebbe, ovviamente, essere preso con un granello di sale. Dovrebbe essere evidente che un "algoritmo non deterministico del tempo polinomiale" è fondamentalmente un dispositivo definitivo per catturare il concetto di verificabilità del tempo polinomiale, piuttosto che un metodo realistico per risolvere i problemi di decisione. Invece di avere solo un possibile calcolo su un dato input, ne ha molti diversi, uno per ogni possibile ipotesi.

È questa nozione di "verificabilità" del tempo polinomiale che la classe intende isolare. Si noti che la verificabilità del tempo polinomiale non implica la solvibilità polinomiale.NP

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.