Verificar se uma linguagem é regular é fundamental, pois, em caso positivo, será possível solucionar determinado problema de forma simples e com tempo de execução ótimo. Existem algumas maneiras de verificar se uma linguagem é regular. Um exemplo é por meio do uso de AFDs. Por outro lado, há a possibilidade de verificar se dada linguagem é não regular. Para isso, uma das formas mais utilizadas é o lema do bombeamento. Com base Σ = {a, b}, analise as linguagens a seguir e marque a opção referente a uma linguagem não regular.
Questão
Verificar se uma linguagem é regular é fundamental, pois, em caso positivo, será possível solucionar determinado problema de forma simples e com tempo de execução ótimo.
Existem algumas maneiras de verificar se uma linguagem é regular. Um exemplo é por meio do uso de AFDs. Por outro lado, há a possibilidade de verificar se dada linguagem é não regular. Para isso, uma das formas mais utilizadas é o lema do bombeamento.
Com base Σ = {a, b}, analise as linguagens a seguir e marque a opção referente a uma linguagem não regular.
Alternativas
a) L1 = {w | w inicia com b e termina com a}.
b) L2 = {w | w possui um número de par de a e b}.
c) L3 = {w | w possui aa ou bb como subcadeia}.
d) L4 = {w | w possui aaa como sufixo}.
e) L5 = {w | w possui um número de a's igual ao número de b's} .
Explicação
Queremos identificar uma linguagem não regular (Σ = {a,b}).
Ideia-chave: linguagens que exigem “contagem e comparação exata” entre quantidades de símbolos (como ter o mesmo número de ’s e ’s) tipicamente não são regulares, pois um AFD tem memória finita e não consegue armazenar uma diferença arbitrariamente grande entre contagens.
Analisando as opções:
a) inicia com e termina com
- Regular: basta um AFD que verifica o primeiro símbolo () e mantém informação sobre o último símbolo lido para aceitar se terminar em .
b) possui número par de e número par de
- Regular: AFD com 4 estados representando as paridades (par/ímpar) de e de (produto cartesiano de duas máquinas de paridade).
c) possui ou como subcadeia}$
- Regular: AFD que “lembra” o último símbolo e aceita ao ver repetição ( ou ).
d) possui como sufixo}$
- Regular: AFD com estados que acompanham quantos ’s consecutivos no final foram vistos (0,1,2,3), aceitando quando termina exatamente com 3 ’s.
e)
- Não regular: exige comparar duas contagens potencialmente arbitrárias.
- Esboço via lema do bombeamento: escolha a palavra (com o comprimento de bombeamento). Para qualquer decomposição com e , o trecho fica só em ’s. Ao bombear (), obtemos mais ’s que ’s, logo , contradizendo o lema. Portanto, não é regular.
Alternativa correta: (e).