Il non determinismo in un turing machine non deterministico è diverso da quello degli automi finiti e degli automi push down?


9

Consenti una stringa di input come . Quindi se un NFA è attualmente nello stato (e ha letto l'input fino all'alfabeto ) quindi prima di leggere il simbolo di input successivo l'NFA si divide in due NFA, uno in stato e l'altro in , se c'è una transizione di il tipo . Se esiste un ciclo di tipo , dove sono alcuni stati di NFA, quindi è inutile ricordare un altro NFA nello stato fino al punto in cui l'input è stato letto fino all'alfabeto r w i r s r ϵ s r ϵ s ϵ q 1 . . . . ϵ q k ϵ rw1w2...wnrwirsrϵsrϵsϵq1....ϵqkϵr r w i r w i r ε , ε un s ε , ε un q 1 . . . . ϵ , ϵ a q k ϵ , ϵ a r ϵ , ϵ a w i a w i + 1 r , s , q 1qirwi.

Se un PDA (non deterministico) è nello stato (e l'input viene letto fino a ) e esiste un ciclo (dove transizione significa che nulla dopo viene letto dall'input, nulla viene estratto o letto dallo stack e l'alfabeto viene inserito nello stack) quindi prima di leggere l'alfabeto di input successivo ci sarà PDA infinito negli statirwirϵ,ϵasϵ,ϵaq1....ϵ,ϵaqkϵ,ϵarϵ,ϵawiawi+1r,s,q1,...qk perché a differenza dell'NFA, sebbene gli stati siano limitati, i contenuti dello stack possono essere diversi (possibilità infinite), se non sbaglio.

Come per NFA e PDA, il potere del non determinismo deriva dalle transizioni di . Quindi suppongo che la macchina di Turing non deterministica ottenga anche il suo non determinismo dalle transizioni di come NFA e PDA (più come il PDA). So che una macchina di Turing deterministica può simulare una non deterministica (conosco la prova che utilizza la ricerca pane per primo). Ma ora sono dubbioso su come sia possibile. Perché se un ciclo del tipo nel PDA sopra, esiste nel diagramma di stato della macchina di Turing non deterministica, allora prima di leggere il simbolo successivoϵ w i + 1ϵϵwi+1la macchina di Turing deterministica anche quando si simula una configurazione in qualche ramo della macchina di Turing non deterministica (mentre bfs) dovrebbe tenere traccia della macchina di Turing infinita (di nuovo gli stati sono finiti ma i simboli sul nastro hanno infinite possibilità).
Quindi, come si definisce esattamente il non determinismo nel caso delle macchine di Turing? Sto fraintendendo qualcosa di banale? Le macchine di Turing non deterministiche usano transizioni ?ϵ


Mi dispiace per i miei dubbi banali. Se qualcosa non è corretto, posso aggiornare la mia domanda.


2
per quanto riguarda la domanda del titolo, non c'è molta differenza nelle definizioni formali. per quanto riguarda il potere emergente, sì, ha implicazioni molto diverse in ciascun modello di macchina. per quanto riguarda il resto della domanda, è difficile analizzarlo. :(
vzn,


@YuvalFilmus sì, l'ho fatto. La definizione di funzione di transizione include un gruppo di potenza che ho capito. Ma la cosa sulle transizioni nelle macchine di Turing non è ancora chiara per me. epsilon
sashas,

@vzn L'ho pensato così. Mi dispiace davvero. Sono cattivo a sollevare i miei dubbi. Ma posso migliorare se dai suggerimenti.
sashas,

Risposte:


8

Il non determinismo è lo stesso concetto in tutti i contesti: alla macchina sono consentite diverse opzioni per procedere in un dato punto. Tuttavia, la semantica è un po 'diversa poiché DFA / NFA e PDA definiscono sempre le funzioni totali , mentre le macchine di Turing (deterministiche o non deterministiche) in generale definiscono funzioni parziali .

Una funzione parziale è definita solo su una parte del dominio. Se non è definito su allora scriviamo . (Quindi è davvero una funzione totale, ma c'è un elemento speciale nell'intervallo che indica che l'uscita non è definita.) Una macchina di Turing deterministica definisce una funzione parziale come segue: se ferma su allora è il contenuto del nastro quando ferma su ; e altrimenti, .x f ( x ) = f M M x M ( x ) M x M ( x ) = fxf(x)=fMMxM(x)MxM(x)=

Un decisore deterministico della macchina di Turing ha due tipi di stati di arresto, accettazione e rifiuto, e definisce una funzione parziale come segue: se ferma su in uno stato di accettazione, allora ; se si ferma in uno stato di rifiuto, allora ; se non si ferma, allora . Se si ferma sempre, diciamo che accetta la lingua .x M ( x ) = 1 M ( x ) = 0 M ( x ) = M L = { x : M ( x ) = 1 }MxM(x)=1M(x)=0M(x)=ML={x:M(x)=1}

Una macchina di Turing non deterministica (che è sempre un decisore) è autorizzata a "ramificarsi" (hanno diverse opzioni possibili in un dato momento) e ha la seguente semantica:

  • x MM(x)=1 se sull'ingresso , la macchina ferma su tutti i rami, fermandosi in uno stato di accettazione per almeno un ramo.xM
  • x MM(x)=0 se sull'ingresso , la macchina ferma su tutti i rami, fermandosi sempre in uno stato di rifiuto.xM
  • x MM(x)= se sull'input esiste un ramo su cui non si ferma.xM

Data questa definizione, si spera chiaramente come simulare una macchina di Turing non deterministica usando un determinante di macchina di Turing deterministica: si provano tutti i rami, controllando se qualcuno di essi porta a uno stato di arresto accettabile. Dopo che tutti i rami si sono fermati, puoi decidere se andare in uno stato di accettazione o in uno di rifiuto. Se la macchina di Turing non deterministica non si ferma su un ramo, allora anche quella deterministica.


Che dire di -moves? Causano problemi in quanto l'automa corrispondente potrebbe non arrestarsi mai. Per gli automi finiti (NFA e PDA) ignoriamo silenziosamente i calcoli senza interruzioni. La nostra ragione per farlo è che i linguaggi risultanti sono sempre calcolabili, anche se l'algoritmo ingenuo per simularli in modo deterministico (simulando tutti i percorsi di calcolo) non funziona del tutto. Questo non è così difficile per gli NFA, che possono essere convertiti in DFA. Tuttavia, i PDA deterministici sono strettamente più deboli dei PDA non deterministici. Tuttavia, puoi mostrare che ogni PDA è equivalente a uno senza -transitions (anche se la prova potrebbe passare attraverso grammatiche senza contesto).ϵϵϵ

Puoi simulare -moves nelle macchine di Turing, ma devi fare attenzione che non ci siano loop che causano calcoli senza interruzioni. In alcuni casi, tuttavia, possiamo usare lo stesso trucco di cui sopra. Ad esempio, supponiamo che la tua macchina di Turing sia limitata nello spazio: conosciamo un limite superiore dello spazio che utilizza (a seconda della lunghezza dell'input). In tal caso, ogni calcolo senza interruzione ciclica necessariamente (poiché la macchina di Turing ha molti stati finiti, incluso il contenuto del nastro), e quindi se "ignoriamo" i calcoli senza interruzione come sopra, il modello risultante di calcolo è ancora calcolabile. Più in generale, questo funziona fintanto che ci viene garantito che ogni ciclo di calcolo non si ferma. (Questo è il caso degli NFA ma non dei PDA.)ϵ


rb,casrbbcaϵacϵ

@sasha Execution "si divide" ogni volta che esiste più di un'opzione per procedere.
Yuval Filmus,

ϵ

1
ϵ

1
AaB1B2BnAaAB1BnϵAa
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.