Quão poderosos são os CFGs que permitem um número infinito de regras?

9

Eu estava pensando recentemente o que aconteceria se permitíssemos que as gramáticas sem contexto tivessem um número infinito de regras. Claramente, se permitirmos arbitrários conjuntos infinitos de regras, todo idioma sobre algum alfabeto poderia ser descrito por um CFG com . Mas e se restringirmos a esses conjuntos de regras que podem ser criadas por gramáticas livres de contexto?LΣG=({S},Σ,R,S)R={SwwL}R

Para esse propósito, dado um conjunto de não terminais e terminais , vamos ver as regras não como elementos de , mas como cadeias de caracteres sobre o alfabeto . Agora, minha pergunta é: se definirmos uma regra infinita CFG como uma tupla em queNΣN×(NΣ)R(N,Σ)=NΣ{}G=(N,Σ,R,S)

  • N é um conjunto finito de não-terminais
  • Σ é um alfabeto finito
  • R é um conjunto de regras no formato com , modo que exista algum CFG sobre comAwANw(NΣ)GR(N,Σ)R=L(G)
  • SN é o não-terminal inicial

e definimos para CFGs de regras infinitas, assim como é feito para CFGs, qual é a relação entre a classe de idiomas gerada por CFGs de regras infinitas (vamos chamar de classe ), a classe de linguagens livres de contexto e a classe ?L(G)irCFCFRE

Obviamente, temos , mas o é equivalente a uma dessas classes (ou alguma outra classe)?CFirCFREirCF

vauge
fonte

Respostas:

7

Suponha que tomemos o metagrama e o fatoremos com prefixos de dois símbolos. Em outras palavras, para cada constrói , a derivada esquerda de sobre a string . Isso irá produzir um (finito) conjunto de (finitos) metagrammars, cada uma produzindo todas as produções (possivelmente infinito) para alguns .GANGAGAAN

Agora, construa a gramática , cujas regras são a união de todas as regras nas gramáticas (com terminais não renomeados para evitar colisões), juntamente com para cada , onde é o terminal não terminal para . Os não terminais para incluem e todos os não terminais para cada ; o início não-terminal é o início não-terminal de , e os terminais de são, precisamente, os terminais de . Afirmo (sem prova) queGGAASGAGASGAGAGNGAGGGGé uma gramática finita para o mesmo idioma, pois o processo de derivação não é afetado pela origem das regras; é apenas uma substituição de string sobre um alfabeto.

Se o esquema de prova acima for válido, e são os mesmos.CFirCF

Como aludi em um comentário, existem exemplos mais interessantes de gramáticas de dois níveis, incluindo gramáticas de Van Wijngaarden e as várias tentativas feitas para criar formalismos mais gerenciáveis, sem perder todo o poder adicional.

rici
fonte