Propriedades das linguagens livres de contexto
- Aqui, pretendemos descobrir:
- Como determinar se uma linguagem é livre de contexto?
- A classe das linguagens livres de contexto é fechada para:
- União?
- Intersecção?
- Concatenação?
- Complemento?
- Como verificar se uma linguagem livre de contexto é finita, infinita ou vazia?
- O que temos certeza é que não temos um algoritmo capaz de analizar duas linguagens livres do contexto quaisquer e decidir se são iguais ou diferentes.
Como determinar se uma linguagem é livre de contexto?
Para mostrar que uma linguagem é livre de contexto, é suficiente que se crie um autômato de pilha ou uma gramática livre de contexto para expressá-la.
Para demontrar que uma linguagem não é livre do contexto, utilizamos o lema do bombeamento para lingagens livres de contexto, de forma análoga às linguagens regulares.
O lema do bombeamento para linguagens livres de contexto define que, se é uma linguagem livre de contexto, então:
- existe uma constante , tal que:
- para qualquer palavra , onde , pode ser definida com , onde:
- para todo , temos que
Assim como no caso das linguagens regulares, a prova é por contradição.
Exemplo 1
Assumimos que é uma LLC, e que existe , logo .
Pelo lema do bombeamento, e , logo, sabemos que só pode conter:
- apenas
- apenas
- apenas
- uma combinação de e
- uma combinação de e
É impossível conter , e , porque não é grande o suficiente para isso (uma vez que ).
Agora, bombeamos “para baixo”, fazendo com que , e a palavra resultante não pode mais conter o mesmo número de , e , porque a palavra só pode conter, no máximo, dois dos símbolos, e portanto o resultado não fará parte de .
Exemplo 2
Para essa demonstração vamos partir do mesmo princípio do exemplo anterior e assumir que , e assim como antes, não pode conter o mesmo número de , e , logo, se contém:
- nenhum
- bombeando com , o número de não muda, mas o número de e reduz, e portanto ;
- nenhum , mas contém
- bombeando com , o número de será maior que o número de , e portanto ;
- nenhum , mas contém
- bombeando com , o número de não muda, mas o número de reduz, e portanto ;
- nenhum
- bombeando com , o número de ou será maior que o número de , e portanto .
Como conseguimos uma contradição para todos os casos, a linguagem não é livre de contexto.
Exemplo 3
Para demonstrar esse caso, precisamos ter cuidado na escolha da palavra para analisar, pois se escolhermos , poderímos dividir a palavra como:
E conseguiríamos bombear .
Mas se escolhermos a palava , podemos demonstrar que essa palavra não pode ser bombeada.
- Se contem os primeiros , ao bombearmos com teremos mais zeros na primeira metade, logo ;
- Obtemos o mesmo resultado escolhendo apenas um dos símbolos em qualquer ponto da palavra.
- Se escolhermos uma combinação de e em qualquer metade da palavra e bombearmos com , obteremos mais elementos nessa metade do que na outra metade palavra, logo ;
- Só nos resta escolhermos uma posição no meio da palvra, e se bombearmos com , obteremos , e claramente, e , logo .
Logo, não é uma LLC.
Fechamento de operações nas LLC
União
As LLC são fechadas para a união.
Dado um autômato de pilha que reconhece e um autômato de pilha que reconhece , basta criar um automato de pilha não determinístico que reconhece e , e decide por um ou outro caminho sem consumir a entrada () e sem modificar a pilha. O autômoto reconhecerá .
Concatenação
As LLC são fechadas para a concatenação.
Dada uma gramática e uma gramática , podemos criar uma gramática como
Claramente, é uma linguagem livre de contexto e formada pela concatenação de uma palavra de e uma palavra de .
Intersecção
As linguagens livres de contexto não são fechadas para a intersecção.
Sejam e , ambas linguagens são livres de contexto (Desafio: você consegue demonstrar isso?), pela intersecção das duas linguagens, podemos obter
Como sabemos que não é uma linguagem livre de contexto, demonstramos que a intersecção não é fechada para as LLC pro contra-exemplo.
Complemento
Como a intersecção pode ser representada em termos da união e do complemento, e considerando que a intersecção não é fechada para as linguagens livres de contexto, não se pode afirmar que o complemento de uma linguagem livre de contexto é livre de contexto.
Recursos para esta aula
Recursos online