Un automa a spinta con due pile equivale a una macchina turing?


41

In questa risposta è menzionato

Una lingua normale può essere riconosciuta da un automa finito. Un linguaggio privo di contesto richiede uno stack e un linguaggio sensibile al contesto richiede due stack (il che equivale a dire che richiede una macchina Turing completa) .

Volevo sapere per quanto riguarda la verità della parte in grassetto sopra. È vero o no? Qual è un buon modo per raggiungere una risposta a questo?


Ci sono due affermazioni nel testo in grassetto, ma il titolo della domanda suggerisce che sei interessato solo a uno di essi.
Tyson Williams,

@TysonWilliams: sì, quindi?
Lazer,

Questo è confusionario. Non so per quale sottoinsieme delle due affermazioni desideri giustificare.
Tyson Williams,

Per quello in grassetto , come indicato nella domanda.
Lazer,

2
@Lazer: il testo in grassetto contiene due istruzioni ("CSL richiede due pile", "due pile equivalgono a TM"). Dato che CSL è un sottoinsieme proprio di RE, solo uno può essere vero.
Raffaello

Risposte:


38

Due bit a questa risposta;

Innanzitutto, la classe di linguaggi riconosciuta da Turing Machines non è sensibile al contesto , è enumerabile in modo ricorsivo (sensibile al contesto è la classe di linguaggi che si ottiene dagli automi rilegati lineari ).

La seconda parte, supponendo che adattiamo la domanda, è che sì, un PDA a due stack è potente quanto una TM. È leggermente più semplice supporre che stiamo usando il modello di TM che ha un nastro infinito in una sola direzione (sebbene entrambe le direzioni non siano molto più difficili ed equivalenti).

Per vedere l'equivalenza, basta pensare al primo stack come al contenuto del nastro a sinistra della posizione corrente e al secondo come al contenuto a destra. Inizi così:

  • Spingere i normali segnalini "fondo pila" su entrambe le pile.
  • Spingi l'input nello stack di sinistra (usa il non determinismo per "indovinare" la fine dell'input).
  • Sposta tutto nello stack giusto (per mantenere le cose nell'ordine corretto).

Ora puoi ignorare l'input e fare tutto sul contenuto degli stack (che simula il nastro). Fai pop per leggere e spingi per scrivere (in modo da poter cambiare il "nastro" spingendo qualcosa di diverso da quello che leggi). Quindi possiamo simulare la TM spuntando dalla pila destra e spingendo a sinistra per spostarti a destra, e viceversa per spostarti a sinistra. Se colpiamo il fondo della pila a sinistra ci comportiamo di conseguenza (fermiamo e respingiamo o restiamo dove tu, a seconda del modello), se colpiamo la parte inferiore della pila a destra, spingiamo semplicemente un simbolo vuoto a sinistra.

Per una prova formale completa, vedere una risposta a un'altra domanda .

La relazione dall'altra parte dovrebbe essere ancora più ovvia, vale a dire che possiamo simulare un PDA a due stack con una TM.

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.