Push Down Automatons "indovina" - cosa significa?


14

Mi rendo conto che gli automi pushdown non deterministici possono essere un miglioramento rispetto a quelli deterministici in quanto possono "scegliere" tra diversi stati e ci sono alcune lingue senza contesto che non possono essere accettate da un pushdown deterministico.

Tuttavia, non capisco come esattamente "scelgano". Per i palindormi, ad esempio, ogni fonte che ho trovato dice che l'automa "indovina" il centro della parola. Cosa significa?

Posso pensare a diversi significati possibili:

  1. Entra in uno stato in modo casuale e quindi potrebbe non accettare una parola, che in realtà è nella lingua

  2. Va in qualche modo "in ogni modo possibile", quindi se il primo è sbagliato verifica se uno degli altri potrebbe essere giusto

  3. Esiste un meccanismo di cui non sono a conoscenza, che sceglie il centro della parola e non è quindi casuale, ma l'automa trova sempre il centro giusto.

Questo è solo un esempio; quello che voglio sapere è come funziona per qualsiasi automa che ha diversi stati seguenti per uno stesso stato prima di esso.


Correlata: la nostra domanda di riferimento spiega la differenza tra algoritmi randomizzati e non deterministici.
Raffaello

Risposte:


8

Molto semplicemente, il meccanismo è magico. L'idea del non determinismo è che sa semplicemente quale strada dovrebbe prendere per accettare la parola, e va così. Se ci sono più modi, ne va uno.

Il non determinismo non può essere implementato come tale nell'hardware reale. Lo simuliamo utilizzando tecniche come il backtracking. Ma è principalmente un dispositivo teorico, che può essere utilizzato per semplificare la presentazione di determinati concetti.

Per il palindromo, puoi pensarci in due modi. O c'è un potere magico che consente alla tua macchina di dire "questo è il centro della parola, il tempo di passare dalla spinta allo scoppiettio", o dopo aver letto ogni lettera, dice "Ho intenzione di biforcare un nuovo processo che questa lettera è il centro della parola e vedere se trova che è un palindromo. Poi, in questo altro thread, continuerò a provare, supponendo che questo non sia il centro della parola ".

Un altro modo di pensarlo è il parallelismo infinito. Quindi un modello equivalente sarebbe che, invece di scegliere un nuovo percorso, tenta contemporaneamente entrambi i percorsi, ramificando nuovi "processi", riuscendo se ce ne sono in uno stato finale dopo aver letto l'intera parola. Ancora una volta, questo non può essere creato utilizzando hardware reale, ma può essere modellato con non determinismo.

La cosa interessante del non determinismo è che per gli automi finiti e le macchine di Turing, non aumenta affatto il loro potere computazionale, ma solo la loro efficienza.


5

La differenza principale (secondo me) tra un automa deterministico e un automa non deterministico è che per un automa deterministico una determinata parola di input ha un solo percorso attraverso la macchina. In un automa non deterministico una determinata parola di input può avere più percorsi attraverso la macchina (perché in alcuni punti potrebbe esserci una scelta).

Alla luce di ciò, anche la condizione per l'accettazione di una parola di input deve essere modificata per adattarsi al fatto che una parola può indurre diversi percorsi attraverso la macchina. La definizione abituale di accettazione per un automa non deterministico è la seguente: Affinché una parola sia accettata dall'automa, deve esserci almeno un percorso di accettazione indotto da quella parola.

Questo porta quindi all'idea di un "indovinare" automa se una parola viene accettata da un automa non deterministico, allora tendiamo a pensare all'automa come a fare automaticamente le scelte giuste in modo che (uno dei) i percorsi accettanti viene seguito quando tale parola viene presentata come input.

Ciò che questo significa per i palindromi è che il pda avrà essenzialmente due modalità: una modalità di spinta in cui spinge le lettere correnti in pila e una modalità di scoppio in cui fa saltare quelle lettere e le confronta con l'input. Questa macchina avrà una transizione vuota dallo stato di spinta allo stato di scoppio che sarà in grado di seguire in qualsiasi punto della parola. Tuttavia, la macchina svuota il suo stack e si sposta in uno stato di accettazione se ha letto un palindromo e ha seguito la transizione vuota al centro del palindromo. Dato che richiediamo solo l'esistenza di un percorso accettante, possiamo dire che l'automa "indovina" dove si trova il centro della parola.


5

L'idea del non determinismo è abbastanza semplice: l'automa potrebbe avere diversi passi successivi in ​​determinate situazioni. L'automa accetta se esiste una sequenza di passaggi (che potrebbero essercene diverse!) Che porta dalla configurazione iniziale a una accettante, rifiuta solo se non esiste tale sequenza.

Ciò significa che "decide" quale passo compiere in quelle ambigue situazioni. Un modo per parlarne è dire che seleziona sempre magicamente il passo successivo "giusto" (o uno, se ci sono diversi passi "giusti"). Un altro modo di vederlo è che in tali situazioni il calcolo dell'automa si divide in più copie, ognuna seguendo un percorso.

In pratica, questo può essere implementato eseguendo il backtracking, posizionando una qualche forma di tag nei punti in cui è stata presa la decisione, e torna indietro e prova la prossima alternativa se il percorso corrente non funziona. Questo è di solito gestito dalla ricorsione. O integrare le informazioni che l'automa ha "legalmente" con informazioni extra (questo è quello che fai quando mostri come un automa non deterministico lavora alla lavagna, guardando avanti e cercando di capire quale dei passaggi porta al successo).


Non penso che il backtracking sia una buona idea. Il tuo albero potrebbe non essere finito. Sono consapevole che viene utilizzato in alcune implementazioni del non determinismo, come Prolog, e penso che lo fosse anche nei primi lavori di Robert Floyd. Ma doveva essere supervisionato da programmatore e non lo prenderei in considerazione per la teoria degli automi. In realtà, anche Prolog ha altre implementazioni per giustificare il problema.
babou,

@babou, è un modo per farlo in pratica. Non sto dicendo che sia la soluzione
vonbrand il

2

"Indovinare" è direttamente correlato alla nostra interpretazione esistenziale del non determinismo

In poche parole: l' idea che un automa non deterministico possa indovinare (o essere aiutato da un oracolo) è direttamente correlata alla nostra interpretazione esistenziale del non determinismo. È possibile un'altra interpretazione (forse altre) in cui "indovinare" non avrebbe senso.

Il non determinismo è strano. Abbiamo un modo di interpretarlo nella teoria degli automi, ma non è a priori ovvio come dovremmo farlo.

Può sembrare sorprendente, ma il non determinismo è una situazione molto comune. Quando si deve dimostrare un teorema, dati gli assiomi di alcune teorie matematiche, il processo è naturalmente non deterministico. Questo è il motivo per cui spesso non sappiamo cosa fare per risolvere un problema, ad esempio per trovare le soluzioni di un'equazione di terzo grado o dimostrare un teorema.

Esistono molti modi per combinare ciò che è già noto con le regole di inferenza per ottenere nuovi risultati. E la situazione è generalmente la stessa se proviamo a ricostruire una prova a ritroso dal risultato.

Quando tentiamo di risolvere un simile problema, proviamo a " indovinare " un percorso in un sistema di transizione.

In realtà, non indoviniamo, ma costruiamo nella nostra mente una struttura che organizza e / o semplifica il labirinto di possibilità in modo da poter vedere il nostro percorso attraverso di esso. In alcuni casi, la domanda segue uno schema identificato per il quale abbiamo un modo standard di (a volte? Di solito? Sempre?) Trovare una soluzione e lo chiamiamo algoritmo.

Una tecnica (di solito costosa) che possiamo usare è semplicemente esplorare completamente il labirinto: seguire tutti i percorsi, eseguendo prima l'ampiezza per evitare di essere catturati in un sottografo infinito. Questo è praticamente ciò che viene fatto combinando tutti i possibili calcoli di un automa non deterministico. Questo calcolo a coda di rondine derivato è esso stesso deterministico.

Questo calcolo a coda di rondine DC imita tutti i possibili calcoli dell'automa originale UN, ma non ci dice come dovrebbe essere interpretato. Può solo dirci se A potrebbe fermarsi, con l'accettazione o il rifiuto, e forse che si fermerà sempre. Ma non può, non più diUN stesso, dicci questo UN non si ferma mai o non si ferma mai con l'accettazione.

In realtà, potrebbero esserci diversi modi di interpretare un calcolo non deterministico . Dopo tutto sono coerenti, ma non l'uno con l'altro.

Nel caso di un riconoscimento di lingua R, come un NPDA, che non può arrestarsi o arrestarsi con accettazione o rifiuto, si dice che il riconoscitore accetti un inputwse c'è un calcolo che si ferma e accetta . Ciò è coerente con la nostra visione del processo di dimostrazione non deterministica che viene considerato efficace se può identificare un albero di prova per dimostrare il teorema.

L'idea di indovinare per il riconoscitore è solo un'immagine presa dal nostro modo di "indovinare" come trovare quell'albero della prova. Ma la grande differenza è che i nostri cervelli non sono PDA. Sono dispositivi molto più complessi con la capacità di esplorare e mappare approssimativamente strutture di transizione in modo che possiamo trovare la strada attraverso di esse, che a volte percepiamo come ipotesi.

Questa interpretazione del calcolo non deterministico è ciò che definirei accettazione esistenziale , in riferimento al fatto che richiede solo l'esistenza di un singolo calcolo accettante. Corrisponde a all'arresto esistenziale che ho introdotto in un'altra risposta .

Tuttavia, si potrebbe anche interpretare il non determinismo in modo universale come: si dice che un riconoscitore accetta (universalmente) un input "w" se tutti i possibili calcoli si fermano e accettano l'input. Questa accettazione universale corrisponde al concetto di arresto universale introdotto nella stessa risposta.

L'accettazione universale e l'interruzione universale sembrano condurre a una comprensione autoconsistente del non determinismo. Quindi si potrebbe fare un lavoro teorico con quella definizione. Ma non è coerente con la nostra pratica abituale in molte situazioni non deterministiche che dimostrano un teorema o nella situazione della vita quotidiana. Quando affrontiamo un problema, vogliamo solo un modo per risolverlo, e quindi non ci importa se altri modi hanno successo o meno (beh, questo è un po 'troppo semplificato).

Se dobbiamo riconoscere un palindromo, possiamo indovinare misurando la lunghezza e cercando il centro. Il PDA non può. Ma, poiché siamo interessati solo all'esistenza di una soluzione, possiamo sempre far finta che possa ... se ciò lo aiuterà. Oppure possiamo considerare che ha oracoli forniti da macchine più intelligenti (noi?) Per aiutarlo. Oppure potresti persino chiamarlo magia, e pensare che lo sia (dopotutto, il quantificatore esistenziale è una specie di bacchetta magica). Se può aiutare, lo farà. Se non si accetta il calcolo, nessun aiuto sarà di alcuna utilità.

Nota che questa idea di indovinare non avrebbe senso nell'interpretazione universale dell'accettazione.

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.