Esistono varianti di automi pushdown visibilmente che consentono di spingere le parole nello stack?


16

Mi chiedo, ci sono documenti o ricerche che trattano di automi pushdown visibilmente, ma che permettono alle parole, piuttosto che alle singole lettere, di essere inserite nella pila.

In alternativa, una costruzione che consentiva di spingere i simboli ϵtransizioni ϵ potrebbe raggiungere lo stesso obiettivo.

Ovviamente, tali variazioni possono essere formate, ma mi chiedo se rovini le proprietà di chiusura e decidibilità che rendono interessanti i VPA.

Sto osservando una costruzione in cui usi la pila come contatore, incrementandola di costanti in base ai simboli iniziali letti, quindi conto alla rovescia in base ad altri simboli letti.

Per chi non lo sapesse, gli automi pushdown sono visibilmente quelli in cui l'alfabeto può essere diviso in simboli push, simboli scoppiettanti e simboli che non influiscono affatto sulla pila. La scelta di spingere contro il popping è interamente determinata dal simbolo corrente letto. Sono chiusi sotto intersezione, unione, concatenazione, stella e complemento, dando loro una ricchezza di proprietà decidibili. Vedi questo documento per di più.


2
sembra la domanda ovvia è se tali automi sono equivalenti agli automi pushdown standard con le "parole" convertite in sequenze di stati? afaik, sì? in caso contrario, sarebbe utile un esempio illustrativo di un caso in cui fallisce.
vzn

2
@vzn Non possono essere equivalenti. Quei PDA visibilmente sembrano essere più deboli. L'ultima volta che ho controllato, i CFL non erano chiusi sotto l'intersezione.
Kai,

Quindi, VPDAs sono chiusi sotto intersezione, e sono noti per essere correttamente tra e D C F L . Tuttavia, non ho idea se la mia variante sia chiusa sotto l'intersezione, quindi potrebbe essere equivalente. Ne dubito, ma non sono sicuro. REGDCFL
jmite,

Questo documento dx.doi.org/10.1145/1516512.1516518 fornisce una caratterizzazione grammaticale dei VPDA e una costruzione per la conversione tra grammatiche e VPDA. Forse la grammatica può essere usata per simulare spingendo parole intere?
Evgenij Thorstensen,

Perché spingere una parola su un simbolo equivale a consentire spinte su transizioni eps?
domotorp,

Risposte:


3

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
  1. Ogni codifica una configurazione valida di MCiM
  2. è iniziale, C n sta accettandoC0Cn
  3. è il contrario di una parola uuRu
  4. è una copia diuutilizzando lettere popu¯u
  5. sono simboli di separazione speciali non presenti nell'alfabeto di M#,&,$M
  6. è sempre una transizione valida di MCiCi+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 iC i + 1ACiRACiCi(Ci¯)RCiCi+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)uAa(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.SR

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.