Quanto sono potenti i CFG che consentono un numero infinito di regole?


9

Di recente mi chiedevo cosa sarebbe successo se avessimo permesso alle grammatiche senza contesto di avere un numero infinito di regole. Chiaramente, se permettessimo arbitrari insiemi di regole così infiniti, ogni lingua sopra un certo alfabeto potrebbe essere descritta da un CFG con . E se limitassimo a tali insiemi di regole che possono essere create da grammatiche libere dal contesto?LΣG=({S},Σ,R,S)R={SwwL}R

A tale scopo, dato un insieme di non terminali e terminali , vediamo le regole non come elementi di , ma come stringhe sull'alfabeto . Ora la mia domanda è, se definiamo una regola infinita CFG come una tupla doveNΣN×(NΣ)R(N,Σ)=NΣ{}G=(N,Σ,R,S)

  • N è un insieme finito di non terminali
  • Σ è un alfabeto finito
  • R è un insieme di regole della forma con , tale che esiste un CFG sopra conAwANw(NΣ)GR(N,Σ)R=L(G)
  • SN è il non terminale iniziale

e definiamo per tali CFG a regola infinita proprio come avviene per i CFG, qual è la relazione tra la classe di linguaggi generata da CFG a regola infinita (chiamiamo quella classe ), la classe di linguaggi senza contesto e la classe ?L(G)irCFCFRE

Ovviamente, abbiamo , ma è equivalente a una di queste classi (o qualche altra classe)?CFirCFREirCF


Risposte:


7

Supponiamo di prendere la metagrammatica e di fattorizzarla con prefissi a due simboli. In altre parole, per ogni costrutto , la derivata sinistra di sulla stringa da . Che produrrà un (finito) insieme di (finito) metagrammars, ognuno produce tutte le produzioni (eventualmente infinite) per qualche .GANGAGAAN

Ora, costruisci la grammatica , le cui regole sono l'unione di tutte le regole nelle grammatiche (con i non terminali rinominati per evitare collisioni), insieme ad per ogni , dove è l'inizio non terminale per . I non terminali per includono e tutti i non terminali per ciascun ; l'inizio non-terminale è l'inizio non terminale di , ed i morsetti per sono proprio i terminali per . Affermo (senza prove) cheGGAASGAGASGAGAGNGAGGGGè una grammatica finita per la stessa lingua, poiché il processo di derivazione non è influenzato dall'origine delle regole; è solo una sostituzione di stringa rispetto a un alfabeto.

Se lo schema di prova sopra è valido, e sono uguali.CFirCF

Come ho accennato in un commento, ci sono esempi più interessanti di grammatiche a due livelli, tra cui le grammatiche di Van Wijngaarden e i vari tentativi che sono stati fatti per creare formalismi più gestibili senza perdere tutto il potere aggiuntivo.

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.