✖

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:

L∗={a1∘a2∘⋯∘an|ai∈L,n∈N},

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:

A1=⟨Q1,Σ1,δ1,q0,F1⟩

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:

δ(q,a)={δ1(q,a)seq∈Q1∧q∉F1δ1(q,a)seq∈F1∧a≠ϵδ1(q,a)∪{q0}seq∈F1∧a=ϵ{q0}seq=qs∧a=ϵ∅seq=qs∧a≠ϵ

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