Dimostrare che DPDA è chiuso a complemento per costruzione


8

Ho cercato per parecchio tempo di trovare una costruzione in modo da poter dimostrare formalmente che un PDA deterministico è chiuso sotto integrazione. Tuttavia, capita che ogni idea che ho abbia qualcosa che alla fine non si adatta. Potresti darmi una mano?

Il problema principale si verifica con le mosse ε . Un PDA potrebbe terminare la lettura del suo input in uno stato non finale (rifiuto) ma può comunque passare a uno stato finale (accettazione) attraverso un movimento ε e finire per accettare la stringa. Ciò significa che l'aggiunta di uno stato morto e il completamento degli stati non funziona. Ho già risolto il problema delle possibili infinite sequenze di mosse ε , quindi questa non è una parte principale della mia domanda.

EDIT: A quanto ho capito, se il DPDA raggiunge la fine dell'input e si trova in uno stato accettante e si sposta in uno stato di rifiuto attraverso una mossa ε, lo accetterebbe comunque (poiché ha raggiunto uno stato finale senza il simbolo di input lasciato a leggere).

Per favore fatemi sapere se posso essere più chiaro.


Immagino che tu sia interessato alla proprietà di chiusura di DCFL contro la complementazione? La tua frase "dimostra formalmente che un PDA deterministico è chiuso sotto integrazione" non ha molto senso per me altrimenti.
Raffaello

Risposte:


3

Non ho avuto il tempo di scrivere questo prima, ma ho trovato una risposta. Ecco cosa ho fatto:

Sia il originale . Costruiremo un nuovo , lo chiameremo ( sta per modificato).OPDAPDAMM

Per trovare il complemento di , possiamo considerare gli stati finali come stati non finali e viceversa. È la stessa procedura utilizzata per gli automatismi finiti. Tuttavia, c'è una sottigliezza. Il problema principale è che nel PDA originale l'ingresso può portare a uno stato che non è uno stato finale ma potrebbe eseguire un e arrivare ad uno stato accettante . Lanciare gli stati come menzionato sopra, farebbe terminare in con l'input che sarebbe uno stato finale (facendo accettare a l'accettazione dell'input) anche se in seguito eseguirà un inOOwSϵmoveSMSwMϵmoveS, uno stato non accettante. Pertanto, sia che accetteranno . Qualcosa di simile accade se era uno stato finale e uno stato non finale raggiungibile da attraverso una .OMwSSSϵmove

Per ovviare a questo problema, dobbiamo assicurarci che tutti i movimenti avvengano prima di leggere il simbolo successivo. Cioè, entreremo in uno stato di lettura solo quando viene seguito un percorso di -moves e raggiungiamo uno stato che non ha -move disponibile. Chiamiamo questi ultimi stati come stati di lettura , poiché hanno bisogno di un vero simbolo per eseguire una nuova transizione.ϵϵϵ

Definisci gli stati di come tuple nella forma dove ( è l'insieme di stati del originale ) e .M<q,n>qQQPDAn{1,2,3,4}

  • Se in , lascia in se .δ(q,ϵ,X)=<q,α>Oδ(<q,3>,ϵ,X)=<<q,2>,α>MqFO

  • Se in , lascia in se .δ(q,ϵ,X)=<q,α>Oδ(<q,3>,ϵ,X)=<<q,3>,α>MqFO

  • Se in , lascia in .δ(q,ϵ,X)=<q,α>Oδ(<q,2>,ϵ,X)=<<q,2>,α>M

  • Se è in , inδ(q,ϵ,X)undefinedOδ(<q,2>,ϵ,X)=<<q,1>,X>M

  • Se è in , inδ(q,ϵ,X)undefinedOδ(<q,3>,ϵ,X)=<<q,4>,X>M

In quelle definizioni, lasciamo che gli stati della forma e consumino -moves imitando -moves di fino a quando non ce ne sono più. Quindi, esegui un -move in uno stato di lettura. Ora per gli stati di lettura,<q,2><q,3>ϵϵOϵ

  • Se in , lascia in .δ(q,a,X)=<q,α>Oδ(<q,1>,a,X)=δ(<q,4>,a,X)=<<q,3>,α>M

Effettuando questa definizione, consumiamo un simbolo dell'input e passiamo a uno stato della forma per iniziare una nuova serie di -moves.<q,3>ϵ

Infine, fai in modo che gli stati della forma accettino gli stati di se . Inoltre, assicurarsi lo stato iniziale di se è lo stato iniziale di .<q,4>MqFO<q0,3>Mq0O


Quello che abbiamo fatto è il seguente:

Crea 4 "piani" di stati (il secondo elemento della tupla negli stati di determina in quale piano siamo). Piano 3 imita Consente di spostare di eventualmente raggiungere uno stato di accettazione di . In tal caso, passiamo al secondo piano; altrimenti, rimaniamo al piano 3. Quando non ci sono più -moves da seguire di , definiamo -moves di per raggiungere uno stato di lettura. I piani 1 e 4 corrispondono agli stati di lettura. Se eravamo al piano 3, andiamo al piano 4. Se fossimo al piano 2, raggiungiamo il piano 1. Solo gli stati (gli stati che si trovano al piano 4) accettano gli stati diMϵOqOϵOϵM<q,4>M , purché non è uno stato accettante .qO

Per favore fatemi sapere se ho fatto un refuso a scrivere questo. Avrei potuto facilmente confondermi. Inoltre, il mio inglese non è molto buono, quindi sentiti libero di modificare e riformulare le cose meglio.


1

C'è una dimostrazione per costruzione nell'Introduzione alla teoria della computazione di Sipser (la 3 edizione ha una sezione sui DCFL) che identifica gli stati di lettura dell'automa suddividendo qualsiasi stato che legge e si apre contemporaneamente. Solo questi stati di lettura possono essere stati finali e per ottenere il complemento DPDA si inverte l'accettazione del comportamento solo all'interno dell'insieme degli stati di lettura.rd


-2

Puoi presumere che l'automa sia libero da -transitions senza perdita di generalità.ε

Questo può essere mostrato usando la costruzione standard da CFG a PDA applicata a una forma normale di Greibach . In Silent Transitions in Automata with Storage , G. Zetzsche ha recentemente presentato una costruzione direttamente sugli automi.

Potenziale avvertimento: suppongo che detta costruzione standard produca un DPDA se lo applichiamo ad una grammatica adatta, cioè "deterministica" e che questa idoneità sopravvive alla trasformazione nella forma normale di Greibach.


2
Ci dispiace, ma il presupposto non regge. . {anbmcnm,n1}{anbmdmm,n1}
Hendrik Jan

@HendrikJan Non capisco in che modo la tua lingua confuta la mia ipotesi.
Raffaello

È privo di contesto deterministico, ma necessita di transizioni . Intuitivamente, è necessario impilare sia che lasciare che la lettera o decida quale utilizzare. Durante la lettura di dobbiamo far apparire tutte le . εnmcdcb
Hendrik Jan

1
È l'esempio che conosco che mostra che DPDA "in tempo reale" non è una forma normale. (Per una prova, devi iniziare una nuova domanda :)) La bella caratteristica è che hai solo bisogno di transizioni che popano anche lo stack, evitando infiniti calcoli. ε
Hendrik Jan

3
Raffaele, penso che @HendrikJan abbia ragione. Ciò non contraddice l' eliminazione di per i PDA, poiché l'applicazione di quest'ultimo a un DPDA introduce il non determinismo. ε
Georg Zetzsche,
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.