Con epsilon spinge
Per la versione con spinte sulle transizioni epsilon, la prova indecidibilità dell'universalità degli automi pushdown può essere adattata a questa nuova impostazione, quindi perdiamo almeno le seguenti proprietà: chiusura sotto integrazione, determinabilità, decidibilità di universalità e inclusione.
Schema di prova: prendi una Turing Machine , vogliamo costruire un VPA A con epsilon-push in modo che sia universale se e solo se M non ha accettazione della corsa.MA
Progettiamo tale che una parola non sia accettata se e solo è della forma:A
dove
#C0&C0$(C0¯¯¯¯¯¯)R#C1&C1$(C1¯¯¯¯¯¯)R#C2&C2$(C2¯¯¯¯¯¯)R…#Cn&Cn$(Cn¯¯¯¯¯¯)R
- Ogni codifica una configurazione valida di MCiM
- è iniziale, C n sta accettandoC0Cn
- è il contrario di una parola uuRu
- è una copia diuutilizzando lettere popu¯¯¯u
- sono simboli di separazione speciali non presenti nell'alfabeto di M#,&,$M
- è sempre una transizione valida di MCi→Ci+1M
Il VPA è costretto a fare pop su fattori della forma C R i . A può indovinare in modo non deterministico una violazione di entrambe le proprietà e verificarla. La chiave è che può premere C i o non fare nulla, il che consente di verificare tutte le condizioni (indovinare effettivamente le loro violazioni). In particolare, può indovinare che la prima (o la seconda) occorrenza di C i non corrisponde ( ¯ C i ) R , ignorando l'altro componente. Può anche indovinare che C i → C i + 1ACRiACiCi(Ci¯¯¯¯¯)RCi→Ci+1non è una transizione valida, spingendo entrambe le occorrenze di , quindi saltandone una, non premere C i + 1 e confrontare ( ¯ C i + 1 ) R con il contenuto dello stack. Per altri C j che non fanno parte del indovinare, un componente viene spinto e ( ¯ C j ) R viene estratto.CiCi+1(Ci+1¯¯¯¯¯¯¯¯¯¯)RCj(Cj¯¯¯¯¯¯)R
Spingendo le parole
Per quanto riguarda le varianti in cui vengono spinte le parole, sembra che la prova di determinabilità nel documento originale sui VPA possa essere adattata a questa impostazione. È sufficiente adattare la costruzione in modo che i simboli dello stack siano della forma cui u ∈ A ∗ è un prefisso di una parola che può essere spinto in base alla funzione di transizione. Quando si fa scoppiare una lettera a , ( S , R , v a ) viene trasformato in ( S ′ , R ′ , v )(S,R,u)u∈A∗a(S,R,va)(S′,R′,v), dove e R ′ vengono aggiornati normalmente per riflettere lo stato di costruzione corrente del powerset. Tuttavia, questa volta abbiamo a priori un automa deterministico di pushdown che non è visibilmente pushdown. Almeno questo significa che l'equivalenza e l'universalità sono decidibili.S′R′