Intersezione di contesto libero con lingue regolari


16

Si dice che l'intersezione di una lingua senza contesto L con una lingua normale M è sempre libera dal contesto. Ho capito la prova della costruzione del prodotto incrociato, ma non riesco ancora a capire perché sia ​​privo di contesto ma non regolare.

Il linguaggio generato da tale intersezione ha stringhe accettate sia da un PDA che da un DFA. Dal momento che è accettato da un DFA, non dovrebbe essere una lingua normale? Inoltre, se l'intersezione è regolare, implica anche un contesto libero, poiché anche tutte le lingue normali sono libere dal contesto.

Qualcuno può spiegarmi perché la lingua ottenuta da un tale incrocio non è regolare?


12
Considera. * Come la lingua normale e la sua intersezione con una lingua libera dal contesto.
AProgrammer

1
Sarebbe il filo del contesto libero. Ma quelle stringhe sono anche generate dal linguaggio normale, quindi sarebbe un linguaggio senza contesto che è anche regolare.
sanjeev mk,

8
La lingua potrebbe essere regolare. Ma di solito non lo è. Pensa ancora al controesempio fornito da AProgrammer. Probabilmente dovrebbe essere la risposta. Ogni lingua libera dal contesto è un sottoinsieme di una lingua normale. È vero che l'intersezione delle lingue CF e REG sarà accettata da DFA di REG, ma è importante anche ciò che viene rifiutato.
Karolis Juodelė,


1
@DW Rilevante, ma qualcuno l'ha proposto come un duplicato e non è così. Questa domanda è: perché l'intersezione non è sempre regolare; l'altro chiede perché l'intersezione non è sempre non regolare. La configurazione specifica di questa domanda (parlando di stringhe che sono accettate sia da un DFA che da un PDA, quindi sono accettate da un DFA, quindi la lingua è regolare, giusto?) Significa che le risposte all'altra domanda non ' rispondo davvero bene a questo.
David Richerby,

Risposte:


20

Se è privo di contesto, esiste un PDA P che lo accetta. Se M è regolare, esiste un DFA F che lo accetta. Il linguaggio intersezione consiste delle parole riconosciute da P e F .LPMFPF

Qualsiasi parola che è sotto l'incrocio è accettato da , ma non tutte le parole che sono accettati da F sono nell'intersezione: solo quelli che sono accettati anche da P .FFP

La prova del prodotto incrociato consiste nel costruire un automa che contiene la meccanica di entrambi P e F e che accetta solo parole per le quali entrambe le parti accettano. L'automa cross-prodotto è un PDA (e quindi il linguaggio riconosciuto è context-free) - intuitivamente, perché il prodotto croce con un n DFA -State consiste nel prendere n copie di P e aggiungendo ( q , un , [ q ] ) frecce tra gli stati corrispondenti in P in cui DFA ha aPFPFnnP(q,a,[q])Pafrecce. Il risultato non è un automa finito in generale (nemmeno uno non deterministico) perché la parte si basa sulla pila e questa dipendenza non scompare in PF in generale.PPF

Un esempio banale è che è regolare e se L è privo di contesto ma non regolare allora L A = L è privo di contesto ma non regolare.ALLA=L


2
+1 Ho quasi pubblicato una risposta equivalente alla tua ultima frase. Francamente, il resto della risposta sembra superfluo. :)
Patrick87,

non ha ottenuto "l'aggiunta di frecce (q, a, [q]) tra stati corrispondenti in P in cui il DFA ha una freccia". Impossibile visualizzare come sarà il prodotto PDA.
anir
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.