Trovare la lingua generata da una grammatica senza contesto


11

Questa è una domanda dal libro del Drago (chiedo scusa per errori di traduzione, non ho la versione inglese a portata di mano):

Quale lingua viene generata da questa grammatica?

SaSbSbSaSϵ

Non so cosa dovrei fare qui. La definizione nel libro sulle lingue dice questo (e questo è praticamente nel capitolo):

una lingua è l'insieme di tutte le parole che possono essere prodotte da qualsiasi albero di analisi.

Quindi, se voglio ricavare "qualsiasi" albero di analisi da questa grammatica, posso ricorsivamente continuare a costruirlo, usando solo le prime due regole. Ho cercato un po 'e ho avuto l'impressione che ogni regola dovesse essere usata una volta, ma non ne sono sicuro. Sarebbe molto utile se qualcuno fosse in grado di fornire alcuni suggerimenti per risolvere questo tipo di problemi.


1
Suggerimento: usa l'espressione regolare
Bartosz Przybylski del

Per suggerimenti vedere le risposte di seguito. In risposta alla tua domanda: no, non è necessario utilizzare ogni regola almeno una volta. Inizia con il simbolo di inizio (o assioma) e applica le regole di riscrittura fino a quando non ti rimangono solo simboli di terminale (qui in minuscolo).
Hendrik Jan,

supponendo che la stringa vuota non sia un simbolo terminale, per la mia comprensione non è possibile che siano rimasti solo i simboli terminali, o sono frainteso qualcosa?
dan


@ Dan. La stringa vuota svanisce, quindi puoi finire solo con terminali: . Per esempio. SaSbSaaSbbSaabbSaabbbSaaabbba
Hendrik Jan

Risposte:


6

Suggerimento: Cosa si può dire circa il numero di s e s nelle parole prodotte?ab

Sarebbe molto utile se qualcuno fosse in grado di fornire alcuni suggerimenti per risolvere questo tipo di problemi.

Non esiste una ricetta unica per tutti qui. In generale non è possibile stabilire se due CFG producano la stessa lingua o due CFL siano la stessa lingua. Un metodo utile sta cercando di notare le proprietà che rimangono invarianti durante le produzioni.


5

Suggerimento: costruisci alcune parole generate da questa grammatica. Vedi uno schema? Puoi descrivere alcune proprietà di tutte le parole generate dalla grammatica, semplicemente guardando le regole? Una volta che hai una (corretta) ipotesi sulla lingua generata dalla grammatica, non sarà troppo difficile dimostrarlo.

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.