Ambiguità in linguaggi regolari e senza contesto


11

Comprendo che le seguenti affermazioni sono vere:

  1. Due derivazioni distinte di una stringa in un determinato CFG possono talvolta attribuire lo stesso albero di analisi alla stringa.
  2. Quando ci sono derivazioni di una stringa in un dato CFG che attribuiscono diversi alberi di analisi, il CFG è ambiguo.
  3. Alcuni linguaggi senza contesto generati da CFG ambigui sono generati anche da CFG non ambigui.
  4. Alcune lingue sono tali che gli unici CFG in grado di generarli (e ce ne sono alcuni) sono ambigui.

Q1. Capisco anche che sia indecidibile se un CFG arbitrario sia ambiguo, nel senso del precedente punto 3. O è piuttosto indeciso se un linguaggio senza contesto sia ambiguo, nel senso del punto 4? O sono entrambi indecidibili?

Q2. Quale dei punti 1-4 diventa falso quando sostituiamo "senza contesto" con "normale"? Le grammatiche e le lingue regolari sono sempre inequivocabili?


Le lingue di cui al punto 4 sono "intrinsecamente ambigue". Per Q1, penso che sia indecidibile se il GRAMMAR sia ambiguo. Pertanto, sia 3 che 4 sono indecidibili.
Lamine,

Giusto, le lingue del punto 4 sono chiamate "intrinsecamente ambigue".
dubiousjim,

4
Q1: entrambi indecidibili. Q2: 1 non è possibile, poiché al massimo appare un non terminale in qualsiasi forma sentenziale, quindi ogni derivazione è sia all'estrema sinistra sia all'estrema destra; 2 è ancora vero; 3 è ancora vero se si rimuove il bit `` anche ''; 4 non è più vero, ad esempio determinando la tua grammatica ne otterrai una inequivocabile.
Sylvain,

1
@Sylvain che ha fatto una risposta?
Yuval Filmus,

@Sylvain, grazie, e sì, rispondi. Posso confermare di aver capito? Ri 2: Quindi esiste una grammatica regolare che può generare la stessa stringa con diversi alberi di analisi? (Da allora ho trovato un riferimento a "NFA ambigui", ma non sono sicuro che stia usando "ambig" nel senso che sono). Con 3 e 4, penso che tu stia dicendo che alcune lingue regolari possono essere generate da grammatiche regolari ambigue, ma saranno sempre generate anche da una grammatica regolare senza ambiguità?
dubiousjim,

Risposte:


19

A proposito di Q1: Sia il problema dell'ambiguità (dato un CFG, sia esso ambiguo) sia il problema intrinseco dell'ambiguità (dato un CFG, se il suo linguaggio è intrinsecamente ambiguo, cioè se qualsiasi CFG equivalente è ambiguo) sono indecidibili. Ecco i riferimenti originali:


A proposito di Q2: una grammatica regolare è una grammatica senza contesto "lineare unilaterale", dove al massimo un non-terminale appare in qualsiasi parte destra della regola e dove quel non-terminale è all'ultimo (in grammatiche lineari a destra ) o al primo (in grammatiche lineari a sinistra ) posizione. Tali grammatiche sono facilmente tradotte in automi a stati finiti equivalenti (approssimativamente considerando ogni stato non terminale come uno stato), che sono inequivocabili se la grammatica regolare non è ambigua. La classe di grammatiche regolari non ambigue e automi non ambigui è stata studiata in particolare da Stearns and Hunt (1985) , che dimostrano di godere di algoritmi trattabili per il problema dell'inclusione.

  1. Informazioni sulla relazione tra derivazioni (cioè sequenze di applicazioni di regole dove è una regola della grammatica) e alberi di derivazione (ovvero dove un nodo contrassegnato con è il genitore di una sequenza di nodi , dove è una regola): in un CFG generale, possono esserci derivazioni diverse, che visitano lo stesso albero di derivazione in modi diversi.βAγβαγAαAX1,,XmAX1Xm

    Queste diverse derivazioni si verificano perché si può scegliere tra applicare una regola grammaticale in due posti diversi in una forma sentenziale: in una forma sentenziale con almeno due non terminali e , si può applicare first e ottenere , oppure prima e ottenere , ma l'applicazione dell'altra regola porterà alla stessa . Imposizione all'estrema sinistra (sempre derivante dall'estrema sinistra non terminale in qualsiasi forma sentenziale) o all'estrema destraγAηBθABAαγαηBθBβγAηβθγαηβθ le derivazioni impongono un ordine fisso per la visita di alberi di derivazione e quindi esiste una singola derivazione per un determinato albero di derivazione.

    In una grammatica lineare senza contesto, non esiste una scelta del genere, poiché esiste al massimo un non terminale in qualsiasi forma sentenziale e esiste una singola derivazione per un determinato albero di derivazione, che è sia all'estrema sinistra che all'estrema destra.

  2. Avere due alberi di analisi diversi con la stessa resa (sequenza di foglie) è la definizione di è ambigua, non cambia quando si considerano grammatiche regolari. In alternativa, si possono anche chiedere due diverse derivazioni all'estrema sinistra. Si noti che una derivazione in una grammatica unilaterale corrisponde a una corsa di accettazione nel suo automa a stati finiti associato, che è chiamato ambiguo esattamente allo stesso modo: quando esistono due diverse piste di accettazione per un dato input .www

  3. e 4. Se prendi la vista degli automi a stati finiti, è sufficiente determinare il tuo automa ambiguo per ottenere un automa inequivocabile per la stessa lingua: ci sarà una singola corsa per una determinata parola. Questo automa deterministico equivale a una grammatica regolare non ambigua. 

    Per rispondere al tuo commento: esistono grammatiche regolari ambigue, ad esempio ha due derivazioni più a sinistra per : e . Una grammatica non ambigua equivalente è .a S A a S B a S aSAB,Aa,BaaSAaSBaSa

Informazioni sulla relazione con Q1: è determinabile se una grammatica regolare è ambigua (il problema dell'ambiguità intrinseca non è molto impegnativo nelle grammatiche regolari, poiché la risposta è invariabilmente "no" senza nemmeno guardare la grammatica di input). Questo può essere verificato in usando una costruzione quadrata sul suo automa associato: costruisci il prodotto dell'automa con se stesso, e vedi se un certo stato con è accessibile e accessibile. Il riferimento più antico che conosco per questa idea è un articolo di Even (1965) .( q , q ) q q O(|G|2)(q,q)qq


1

GΣ

Non ho capito bene che tipo di lingue parli in 4. Ogni linguaggio CF ha una grammatica ambigua.

Q2. Tutto è decidibile se hai un accordo con una grammatica regolare. Devi solo costruire un DFA minimo e usarlo puoi costruire una grammatica non ambigua. Se hai un accordo con un linguaggio regolare definito dalla grammatica CF, la risposta è no - vedi Q1.


Grazie, buon chiarimento riguardo al secondo trimestre. Le domande su una lingua normale possono essere decidibili se la lingua è specificata da una grammatica regolare; ma questo non significa ancora che siano decidibili se la lingua è specificata da un CFG --- questo è quello che stai dicendo, giusto? Quindi sappiamo che è il caso che le domande sull'ambiguità e così via che sono indecidibili per i CFG arbitrari sono anche indecidibili se limitate a quei CFG che capita di generare lingue regolari?
dubiousjim,

Non può essere, ma sono sempre decidibili. Intendo quando hai un accordo con una lingua descritta da una grammatica regolare - la sottoclasse di CFG, ogni domanda che ti piace è decidibile. Ma alcuni CFG non regolari possono produrre un linguaggio regolare ed è indecidibile anche verificare se CFG produce un linguaggio regolare.
Alexander Rubtsov,

2
@ alexandr-rubtsov "Quando hai a che fare con una lingua descritta da una grammatica regolare, ogni domanda che ti piace è decisa". Sembra un'affermazione troppo ottimista ...
J.-E.

Grazie, intendevo "può essere" nella sua funzione retorica, non nel senso di "chi lo sa?"
dubiousjim,

@ J.-E.Pin sì, avrei dovuto essere più delicato e dire qualcosa come «tutte le domande naturali come l'ambiguità».
Alexander Rubtsov,

0

Dipende dal fatto che tu sostituisca "senza contesto" con "normale" solo davanti a "lingua / e" o anche davanti a "grammatica / e".

Tutte le lingue regolari sono generate da grammatiche regolari , e in particolare da grammatiche regolari non ambigue, ad esempio LL (1) grammatiche regolari a destra, che sono tutte inequivocabili.

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.