Se


9

Sono bloccato nel risolvere il prossimo esercizio:

Sostieni che se è privo di contesto e è regolare, allora (ovvero il quoziente giusto ) è privo di contesto.R L / R = { w x RLRL/R={wxRs.twxL}

So che ci dovrebbe esistere un PDA che accetta ed un DFA che accetta . Sto ora cercando di combinare questi automi in un PDA che accetta il giusto quoziente. Se posso costruirlo, ho dimostrato che è privo di contesto. Ma sono bloccato a costruire questo PDA.R L / RLRL/R

Questo è quanto lontano l'ho fatto:

Nel PDA combinato gli stati sono un prodotto cartesiano degli stati degli automi separati. E i bordi sono i bordi del DFA, ma solo quelli per i quali in futuro è possibile raggiungere uno stato finale del PDA originale di L. Ma non so come scriverlo formalmente.


Benvenuto! Dove sei esattamente bloccato, qual è il tuo approccio?
Raffaello

1
Suggerimento: pensa a come utilizzare al meglio il non determinismo.
Artem Kaznatcheev,

Nel PDA combinato gli stati sono un prodotto cartesiano degli stati degli automi separati. E i bordi sono i bordi del DFA, ma solo quelli per i quali in futuro è possibile raggiungere uno stato finale del PDA originale di L. Ma non so come risolverlo formalmente.
Dommicentl,

3
Ho copiato il tuo commento nella domanda. È un posto migliore per questo.
Dave Clarke,

Risposte:


8

Ecco un suggerimento.

È necessario che la macchina accetti inizialmente parte di una parola da , consumando il nastro mentre procede. Quindi, senza consumare nulla, è necessario trovare una parola da R che spingerà la macchina in uno stato finale. La parola scelta da R svolge il ruolo della parola di input per la seconda metà del calcolo.LRR

Chiaramente, il non determinismo avrà un ruolo, così come il prodotto tra le due macchine. Il trucco nella formalizzazione di ciò sta adattando il prodotto per far fronte al fatto che l'input proviene da non dall'input.R


6

Non sono sicuro di cosa ti occupi del prodotto cartesiano; questo simula entrambi gli automi in parallelo, che ti darà l'intersezione. Ma vuoi che identifichi tutte le parole in che hanno un suffisso da R ! A livello intuitivo, cioè.LR

Supponiamo che il nostro input sia . Ovviamente, non possiamo controllare tutte le possibili continuazioni (per l'appartenenza a R ) ma solo un numero finito di esse. Il commento di Artem è molto utile qui; indoviniamo quale sarà il suffisso x ed eseguiamo entrambi gli automi su di esso.wΣ*Rx

Sia e A R il PDA per L e NFA per R , rispettivamente. Costruire un automa A come segue. Su input w Σ * , simulare A L . Dopo w è consumato, passa a un incrocio modificato A L , R di A L e A R , mantenendo lo stato da A L . Ora, decidere per ogni transizione in modo non deterministico quale simbolo è il prossimo nell'input virtuale. Accetta wALARLRAwΣALwAL,RALARALwse e solo se entrambi i componenti raggiungere uno stato finale simultaneamente, cioè se w è una continuazione x in modo che w x L e x R .AL,RwxwxLxR

Puoi anche usare grammatiche formali. Vedi come puoi derivare in due grammatiche in parallelo? In generale, non è chiaro come adattare modo da ottenere una maniglia sui suffissi; usando la forma normale di Chomsky aiuta.GL

Assumere sia e G R sono riportati nella Chomsky forma normale. Modificare G L in modo tale che il non terminale più a destra sia distinguibile e rendere il suo simbolo iniziale il nuovo simbolo iniziale. Introdurre per le distinte versioni dei non terminali nuove regole che portano a una grammatica che deriva in G L e G R in parallelo (i non terminali sono coppie di non terminali); se entrambe le grammatiche concordano su un simbolo terminale, eliminare il non terminale composito. In questo modo, un suffisso in G L viene eliminato se e solo se può essere derivato in G L e in G R , rimaneGLGRGLGLGRGLGLGR .wL/R


Nota che anche ciò che si trova nelle aree dello spoiler non è né rigoroso né formale. Per favore fatemi sapere se avete bisogno di maggiori dettagli (dopo averlo provato da soli).
Raffaello

6

Consiglio di usare la risposta di Raffaello, che è molto più facile da capire, ma qui è una alternativa, usando le proprietà di chiusura invece degli automi:

Lascia che sia una lingua. Vogliamo leggere una parola w , ma chiediamo a L se w x sia nella lingua. Quindi vogliamo creare un nuovo linguaggio da L che abbia x "cancellato". Possiamo farlo usando un omomorfismo, ma potrebbe rimuovere le lettere da w . Soluzione: dividere l'alfabeto in due e utilizzare lettere diverse per w e x .LAwLwxLxwwx

Più formalmente:

1) Crea di parole da L , con ogni lettera taggata da 0 o 1. 2) Intersecala con un linguaggio normale ( A × 0 ) ( R × 1 ) . Ciò impone che tutti 0 di 1 vengono sempre prima di, e la seconda parte viene da R . Il significato preciso di × è lasciato al lettore. 3) Sostituisci ( a , 0 ) a eL(A×{0,1})L
(A×0)(R×1)R×
(a,0)a . Proprietà di chiusura utilizzate: immagine omomorfa, preimmagini, intersezione con linguaggi regolari. Vantaggio: questa dimostrazione funziona per altre famiglie (ad esempio, sostituire senza contesto con normale).(a,1)ε



1
Per quello che vale, la costruzione degli automi si ridimensiona anche ad altre classi: in nessun momento usiamo effettivamente che sia un PDA. AL
Raffaello

Buon punto.
sdcvvc,

1
Tecnicamente una tale classe (dove funziona questa dimostrazione) è chiamata cono o trio completo .
Hendrik Jan
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.