Fecho de uma linguagem regular
Temos uma linguagem regular L. Vamos demonstrar que o fecho da linguagem L é de novo uma linguagem regular.
O que é o fecho de uma linguagem
O fecho da linguagem L é denotado por L∗. O fecho contém todas as palavras que podem ser formadas pela concatenação de uma quantidade finita de palavras da linguagem L. Podemos definir o fecho como:
em que ∘ representa a operação de concatenação. O fecho contém também a palavra vazia, isto é, ϵ.
Procedimento formal
Vamos proceder de forma muito parecida com o caso da concatenação de linguagens. Só que, em vez de ligar dois autômatos diferentes, ligamos um único autômato — dos estados finais do autômato levamos transições ε até o estado inicial do autômato. No entanto, o fecho deve conter também a palavra vazia. Como providenciar isso? Podemos transformar o estado inicial em um estado final. Aí o autômato aceitaria a palavra vazia, mas poderia aceitar também alguma outra palavra indesejada. Por isso, em vez disso, criamos um novo estado inicial e desse novo estado inicial levamos uma transição ε até o estado inicial original.
Temos uma linguagem regular L1 e um autômato que aceita essa linguagem:
Construímos o autômato não determinístico A = ⟨Q, Σ, δ, qs, F⟩, para o qual vale:
- Q = Q1 ∪ {qs}
- Σ= Σ1
- F = F1 ∪ {qs}
Definimos a função de transição δ assim:
Exemplo
Considere este autômato A1, que aceita as palavras 00 ou 11:
O fecho da linguagem L(A1) é, assim, a linguagem de todas as palavras compostas de pares 00 e 11, por exemplo 0000, 110011, 11110000 etc. Construiríamos o autômato que aceitaria esse fecho criando um novo estado inicial qs com uma transição ε para o ex-estado inicial q0 e acrescentando transições ε dos estados q3 e q4 para o estado q0:
Podemos verificar que esse autômato de fato aceita as palavras 0000, 110011, 11110000, mas não aceita, por exemplo, a palavra 1010.
Fontes
Capítulos: Fechamento das linguagens regulares, União de linguagens regulares, Interseção de linguagens regulares, Diferença de linguagens regulares, Complemento de uma linguagem regular, Concatenação de linguagens regulares, Fecho de uma linguagem regular