Entendo que gramáticas sem contexto podem ser usadas para representar linguagens sem contexto. Pode ter ambiguidades. Também temos formas normais, como a forma normal de Chomsky e Greibach . Eu não conseguia entender a necessidade disso.
Por que eles são importantes na teoria das línguas? Todos os livros que me referi relatam essas formas normais, mas não dizem nada sobre sua importância.
Respostas:
Existem pelo menos dois usos relevantes.
Simplicidade de provas
Existem muitas provas em torno de gramáticas sem contexto, incluindo redutibilidade e equivalência para automatizar. Essas são as mais simples, mais restrito é o conjunto de gramáticas com as quais você precisa lidar. Portanto, formas normais podem ser úteis lá.
Como um exemplo concreto, forma normal Greibach é utilizado para mostrar (construtivamente), que existe um PDA livre--transition para cada CFL (que não contém ε ).ε ε
Habilita a análise
Embora os PDAs possam ser usados para analisar palavras com qualquer gramática, isso geralmente é inconveniente. Formulários normais podem nos dar mais estrutura para trabalhar, resultando em algoritmos de análise mais fáceis.
Como um exemplo concreto, o algoritmo CYK usa a forma normal de Chomsky. A forma normal de Greibach, por outro lado, permite a análise de descida recursiva; mesmo que o retorno seja necessário, a complexidade do espaço é linear.
fonte
A forma normal de Chomsky permite que um algoritmo de tempo polinomial decida se uma sequência pode ser gerada por uma gramática. O algoritmo é bem liso se você conhece programação dinâmica ...
Se o comprimento da sua entrada ( ) for n , você terá um 2d array ( A ) de dim n x n .I n A n n
Eu sei que os índices parecem bem loucos. Mas basicamente aqui está o que está acontecendo.
sub
fonte
fonte