✖

Diferença de linguagens regulares

Considere duas linguagens regulares L1, L2. Vamos demonstrar que a diferença delas, L = L1 ∖ L2, também é uma linguagem regular.

Ideia

Na verdade, não há muito o que demonstrar. Para a diferença de dois conjuntos vale a seguinte relação:

L1∖L2=L1∩L2′,

em que L2′ é o complemento da linguagem L2. Pelos capítulos sobre a interseção de linguagens regulares e sobre o complemento de uma linguagem regular, sabemos que as linguagens regulares são fechadas sob essas duas operações. Isso significa que conseguimos construir um autômato que aceita a interseção de linguagens e o complemento de uma linguagem. Podemos, assim, usar esses autômatos para construir um autômato que aceitará a linguagem L1 ∩ L2′, que é, ao mesmo tempo, a linguagem L1 ∖ L2.

Exemplo

Considere este autômato A1, que aceita todas as palavras que contêm um número par de uns:

e o autômato A2, que aceita as palavras que contêm um número ímpar de zeros:

Construímos um autômato que aceitará a diferença dessas linguagens. Precisamos, então, de um autômato A2′, que será o complemento do autômato A2. Basta trocar os estados finais e não finais:

Agora só falta construir o autômato A, que aceitará a interseção das linguagens L(A1) e L(A2′):

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