Propriedades e limites das regulares

Fecho, algoritmos de decisão, equivalência, minimização e provas pelo lema da repetição.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

O DFA do sufixo abab guarda três resumos possíveis. Mesmo que acrescentes estados, a memória continua finita. Para comparar contagens sem limite, como em anbna^nb^n, precisaremos de mostrar por que nenhum número finito de estados chega.

Primeiro usamos DFA completos para combinar condições e reduzir memória redundante; depois, o lema da repetição fornece uma condição necessária à regularidade.

Propriedades de fecho

Uma classe é fechada para uma operação quando aplicar essa operação a linguagens da classe dá sempre outra linguagem da mesma classe.

Para DFA completos A,BA,B sobre o mesmo alfabeto, o produto tem estados (p,q)(p,q), início (p0,q0)(p_0,q_0) e

δ((p,q),a)=(δA(p,a),δB(q,a)).\delta((p,q),a)=(\delta_A(p,a),\delta_B(q,a)).

Após ler ww, cada componente é o estado que a respetiva máquina atingiria sozinha. A escolha dos finais determina a operação:

LinguagemQuando (p,q)(p,q) é final
L(A)∩L(B)L(A)\cap L(B)p∈FAp\in F_A e q∈FBq\in F_B
L(A)∪L(B)L(A)\cup L(B)p∈FAp\in F_A ou q∈FBq\in F_B
L(A)∖L(B)L(A)\setminus L(B)p∈FAp\in F_A e q∉FBq\notin F_B
Diferença simétricaExatamente uma componente é final

Toda a linguagem finita é regular: cada palavra tem uma expressão, e uma união finita reúne todas. Para a linguagem vazia, usa ∅\emptyset.

O complemento de uma regular resulta de trocar finais e não finais num DFA completo. Para concatenação e estrela, usa as construções por transições vazias ou as operações correspondentes em expressões regulares.

Para o reverso LR={wR∣w∈L}L^R=\{w^R\mid w\in L\}, inverte todas as arestas do autómato. O antigo início é o único final. Acrescenta um início novo com transições ε\varepsilon para todos os antigos finais. Os percursos invertidos leem precisamente as palavras ao contrário.

As operações seguintes mudam um DFA existente em vez de combinar dois.

Quociente e derivada

Fixa uma letra aa. O quociente à direita L/a={w∣wa∈L}L/a=\{w\mid wa\in L\} é regular. Mantém o DFA de LL, mas torna final todo o estado qq com δ(q,a)∈F\delta(q,a)\in F. Agora aceita ww exatamente quando ler mais um aa levaria a um final.

A derivada à esquerda a\L={w∣aw∈L}a\backslash L=\{w\mid aw\in L\} também é regular. Mantém os finais e muda o início para δ(q0,a)\delta(q_0,a). Já leste o primeiro aa antes de começar a simular ww.

Intercalar palavras

A última construção deste grupo alterna letras de duas palavras em vez de as concatenar. Intercalar xx e yy conserva a ordem dos símbolos de cada palavra, mas pode alternar a sua origem. Por exemplo, intercalar aa e bcbc dá {abc,bac,bca}\{abc,bac,bca\}.

Se L1,L2L_1,L_2 são regulares, a linguagem de todas essas intercalações também é regular. Num NFA com estados (p,q)(p,q), cada letra pode atualizar a primeira componente ou a segunda, mantendo a outra. Cada ramo escolhe a que palavra pertence a letra; os finais exigem ambas as componentes finais. Isto difere do produto para interseção, onde a mesma letra atualiza as duas componentes.

Perguntas decidíveis

A linguagem pode ser infinita, mas a sua representação tem um grafo finito. Isso permite responder a várias perguntas com algoritmos que terminam.

PerguntaProcedimento
w∈Lw\in L?Simula a máquina, mantendo um estado no DFA ou um conjunto no NFA.
L=∅L=\emptyset?Procura um final alcançável a partir do início.
L=Σ∗L=\Sigma^*?Complementa o DFA completo e testa se o resultado é vazio.
LL é infinita?Num DFA, procura um ciclo alcançável do início e do qual se alcance um final.
L1⊆L2L_1\subseteq L_2?Testa se L1∖L2L_1\setminus L_2 é vazia.

Um ciclo que nunca chega a um final não produz palavras aceites. Num ε-NFA, um ciclo só de arestas vazias não basta para produzir comprimentos ilimitados. Determinizar antes evita essa distinção.

Num DFA com nn estados, se uma palavra aceite tem comprimento pelo menos nn, o seu percurso repete um estado. O ciclo repetido pode ser percorrido mais vezes, produzindo infinitas palavras. Inversamente, uma linguagem infinita tem comprimentos sem limite, porque há apenas finitas palavras de cada comprimento.

Teste de equivalência

Para comparar AA e BB, procura no produto um estado alcançável em que exatamente uma componente seja final. Se não existir, nenhuma palavra distingue as máquinas, logo L(A)=L(B)L(A)=L(B).

Se existir, guarda o percurso desde o início: os rótulos formam uma palavra testemunha. Uma pesquisa em largura encontra uma das palavras distinguidoras mais curtas.

Por exemplo, o DFA para palavras que contêm abab e o DFA para palavras que terminam em abab não são equivalentes. A palavra abaaba é aceite pelo primeiro e rejeitada pelo segundo. Comparar exemplos só prova a diferença quando encontra uma testemunha; não prova equivalência.

Minimização por preenchimento de tabela

Dois estados p,qp,q são equivalentes se todas as continuações ww dão a mesma resposta:

∀w∈Σ∗,δ^(p,w)∈F  ⟺  δ^(q,w)∈F.\forall w\in\Sigma^*,\quad \widehat\delta(p,w)\in F\iff\widehat\delta(q,w)\in F.

Remove primeiro os estados inacessíveis. Depois faz uma tabela dos pares de estados distintos:

  1. Marca todo o par final/não final. A palavra ε\varepsilon distingue esse par.
  2. Marca (p,q)(p,q) se alguma letra aa leva a um par já marcado.
  3. Repete até nenhuma marca nova surgir.
  4. Junta os estados dos pares não marcados em classes. Cada classe torna-se um estado do DFA mínimo.

Se ww distingue os destinos de p,qp,q por aa, então awaw distingue p,qp,q. É por isso que as marcas propagam para trás. Os pares que continuam sem marca não têm qualquer continuação distinguidora.

Exemplo completo

Considera este DFA sobre {a,b}\{a,b\}, com início OO e finais C,DC,D:

Estadoaabb
OOAAOO
AABBCC
BBAADD
CCAAOO
DDBBOO

Todos são alcançáveis, por ε,a,aa,ab,aab\varepsilon,a,aa,ab,aab. Na base marca os seis pares entre {O,A,B}\{O,A,B\} e {C,D}\{C,D\}.

Rondas da tabela e palavras distinguidoras

A ronda 0 marca os seis pares final/não final: (O,C)(O,C), (O,D)(O,D), (A,C)(A,C), (A,D)(A,D), (B,C)(B,C), (B,D)(B,D). A palavra ε\varepsilon distingue cada um, porque só um dos estados é final.

Na ronda 1, o par (O,A)(O,A) marca-se porque por bb vai a (O,C)(O,C), já marcado; a palavra distinguidora é bb. O par (O,B)(O,B) marca-se porque por bb vai a (O,D)(O,D); a palavra é também bb. Os pares (A,B)(A,B) e (C,D)(C,D) não se marcam: por aa, (A,B)(A,B) vai a (B,A)(B,A), o mesmo par; por bb vai a (C,D)(C,D). Por aa, (C,D)(C,D) vai a (A,B)(A,B); por bb vai a (O,O)(O,O), um par de estados iguais.

Na ronda 2 não surge nenhuma marca nova, por isso o algoritmo para. As classes são [O][O], [AB][AB] e [CD][CD]. A palavra ε\varepsilon distingue [CD][CD] das outras; a palavra bb distingue [O][O] de [AB][AB], pois [O][O] por bb fica fora do final e [AB][AB] por bb chega ao final.

A tabela abaixo regista a primeira ronda que distingue cada par. O ponto significa que nunca se marcou o par.

OOAABBCC
AA1
BB1·
CC000
DD000·

Só (A,B)(A,B) e (C,D)(C,D) ficam sem marca. Fundindo-os, o início é [O][O] e o único final é [CD][CD]:

Classeaabb
[O][O][AB][AB][O][O]
[AB][AB][AB][AB][CD][CD]
[CD][CD][AB][AB][O][O]

Reconheces o DFA para o sufixo abab. Ele é mínimo: ε\varepsilon distingue o final dos outros dois, e bb distingue [O][O] de [AB][AB]. Um DFA mínimo completo é único a menos dos nomes dos estados.

O lema da repetição

Se LL é regular, existe um inteiro p≥1p\ge1 tal que toda a palavra s∈Ls\in L com ∣s∣≥p|s|\ge p admite uma decomposição s=xyzs=xyz com:

∣y∣≥1,∣xy∣≤p,∀i≥0, xyiz∈L.|y|\ge1,\qquad |xy|\le p,\qquad \forall i\ge0,\ xy^iz\in L.

Um DFA com pp estados percorre p+1p+1 posições, incluindo a inicial, ao ler os primeiros pp símbolos. Algum estado repete. xx chega a esse estado, yy dá uma volta ao ciclo e zz segue até à aceitação. Repetir ou retirar o ciclo não muda o destino.

O ciclo da figura devolve a máquina ao mesmo estado. Por isso o sufixo zz continua a aceitar depois de zero, uma ou várias voltas.

O lema dá uma condição necessária, não um método para provar regularidade. Uma linguagem que satisfaz a condição não fica, só por isso, provada regular.

Provar que não é regular

Mostrar que um corte falha não prova nada. Em L={(00)n∣n≥0}L=\{(00)^n\mid n\ge0\}, fixa um inteiro p≥2p\ge2 dado pelo lema e escolhe s=02ps=0^{2p}. O corte x=εx=\varepsilon, y=0y=0, z=02p−1z=0^{2p-1} cumpre ∣y∣≥1|y|\ge1 e ∣xy∣≤p|xy|\le p, mas com i=0i=0 dá xz=02p−1∉Lxz=0^{2p-1}\notin L. Mas outro corte válido da mesma palavra, y=00y=00, bombeia dentro da linguagem para todo i≥0i\ge0. O lema só é contrariado quando todos os cortes válidos falham, e é por isso que a prova de 0n1n0^n1^n abaixo analisa a forma geral y=0ky=0^k em vez de um corte concreto.

Exibir um corte que funciona numa palavra também não prova regularidade. O lema exige que toda a palavra suficientemente comprida de LL admita algum corte válido que bombeie dentro de LL; uma palavra isolada com um corte feliz não chega.

Para L={0n1n∣n≥0}L=\{0^n1^n\mid n\ge0\}:

  1. Supõe que LL é regular e seja pp o valor dado pelo lema.
  2. Escolhe s=0p1p∈Ls=0^p1^p\in L, com comprimento pelo menos pp.
  3. Considera qualquer decomposição válida s=xyzs=xyz. Como ∣xy∣≤p|xy|\le p e y≠εy\ne\varepsilon, temos y=0ky=0^k com 1≤k≤p1\le k\le p.
  4. Escolhe i=0i=0. Obténs xz=0p−k1p∉Lxz=0^{p-k}1^p\notin L.

Isto contradiz a exigência de permanecer em LL para todo ii. Não escolhes a posição do corte; o argumento cobre todos os cortes permitidos.

Quando o problema é o comprimento

Para K={an2∣n≥0}K=\{a^{n^2}\mid n\ge0\}, escolhe s=ap2s=a^{p^2}. Em qualquer decomposição, 1≤∣y∣=k≤p1\le|y|=k\le p. Bombeando com i=2i=2, o comprimento é p2+kp^2+k, e

p2<p2+k≤p2+p<(p+1)2.p^2<p^2+k\le p^2+p<(p+1)^2.

Não há quadrado perfeito entre quadrados consecutivos. Logo, a palavra bombeada sai de KK.

Usar fecho numa prova negativa

Se H={0i1j∣i≠j}H=\{0^i1^j\mid i\ne j\} fosse regular, então 0∗1∗∖H0^*1^*\setminus H seria regular por diferença. Mas essa diferença é {0n1n∣n≥0}\{0^n1^n\mid n\ge0\}, que acabámos de provar não regular. Logo, HH não é regular.

Uma expressão regular, uma construção de autómato ou uma propriedade de fecho podem provar regularidade. O lema da repetição, uma redução por fecho ou palavras distinguidoras podem provar impossibilidade. Escolhe o argumento de acordo com a conclusão que queres.

Exercícios

A prova de não regularidade adapta o exercício 3a da folha prática 6; o quociente adapta a operação do exercício 4 com outro conjunto. As tabelas de minimização são próprias.

Um corte que falha

Seja L={(00)n∣n≥0}L=\{(00)^n\mid n\ge0\}, seja p≥2p\ge2 um inteiro e seja s=02ps=0^{2p}. O corte x=εx=\varepsilon, y=0y=0, z=02p−1z=0^{2p-1} cumpre ∣y∣≥1|y|\ge1 e ∣xy∣≤p|xy|\le p, mas com i=0i=0 dá 02p−1∉L0^{2p-1}\notin L. Isto prova que LL não é regular?

A tua resposta

Pista

Pergunta se existe algum corte válido que bombeie dentro de LL.

Solução

Não. O corte x=εx=\varepsilon, y=00y=00, z=02p−2z=0^{2p-2} é válido quando p≥2p\ge2 e bombeia dentro de LL para todo i≥0i\ge0. O lema só exige que exista um corte que funcione; um corte que falha não o contradiz. Para provar não regularidade é preciso mostrar que todos os cortes válidos falham.

  • Não; outro corte da mesma palavra bombeia sempre dentro da linguagem.. O lema exige um corte que funcione, não que todos funcionem.
  • Sim; qualquer corte válido que saia da linguagem refuta a regularidade.. Basta um corte funcionar para cumprir o lema; um que falha não prova nada.
  • Sim, desde que a palavra escolhida pertença à linguagem.. A palavra pertence, mas a conclusão exige cobrir todos os cortes.

Erros frequentes

Não confundas “existe um corte que funciona” com “todos os cortes funcionam”. A direção da quantificação é o que distingue provar de refutar com o lema.

Voltar à explicação
Fundir memória redundante

Um DFA tem início A, finais C e D, e tabela: A: a→B,b→Ca\to B,b\to C; B: a→A,b→Da\to A,b\to D; C: a→B,b→Ca\to B,b\to C; D: a→A,b→Da\to A,b\to D. Quantos estados tem o DFA mínimo completo?

Pista

Marca primeiro os pares entre finais e não finais.

Mais uma pista

A e B têm o mesmo comportamento por classes; o mesmo vale para C e D.

Solução

Restam duas classes, {A,B}\{A,B\} e {C,D}\{C,D\}. Uma letra a leva sempre à primeira e uma letra b à segunda. Elas são distintas por ε\varepsilon, pois só a segunda é final. O mínimo tem 2 estados.

Erros frequentes

Não fundas finais com não finais. Todos os quatro estados são alcançáveis: por ε,a,b,ab\varepsilon,a,b,ab.

Voltar à explicação
Provar uma linguagem não regular

Prova que L={0n12n∣n≥1}L=\{0^n1^{2n}\mid n\ge1\} não é regular.

Pista

O limite sobre xy obriga y a ficar no primeiro bloco.

Mais uma pista

Com y=0ky=0^k, 1≤k≤p1\le k\le p, usa i=0.

Solução

Supõe L regular e seja p o comprimento do lema. Escolhe s=0p12ps=0^p1^{2p}. Para qualquer corte válido, y=0ky=0^k, 1≤k≤p1\le k\le p. Ao retirar y, fica 0p−k12p0^{p-k}1^{2p}. Para estar em L teria de haver 2(p−k)2(p-k) uns, mas continuam 2p. Se k=p, nem há um zero, violando também n≥1. Contradição.

Confere a tua resposta:

  • Supõe regular e escolhe 0 elevado a p seguido de 1 elevado a 2p.
  • Mostra que y só contém zeros e não é vazia.
  • Retira y e compara a proporção entre os blocos.

Erros frequentes

Não escolhas uma palavra fora de L. Não digas apenas que as contagens mudaram: a linguagem permite contagens diferentes, mas exige uma proporção específica.

Voltar à explicação
Conferir um quociente

Seja L={b,ab,baa}L=\{b,ab,baa\} sobre {a,b}\{a,b\}. Calcula L/aL/a e a\La\backslash L. É sempre verdade que (L/a)a=L(L/a)a=L? Justifica com este exemplo.

Pista

O quociente à direita testa wa; a derivada à esquerda testa aw.

Mais uma pista

Em LL, só baabaa termina em aa, e só abab começa em aa.

Solução

L/a={ba}L/a=\{ba\} e a\L={b}a\backslash L=\{b\}. Portanto, (L/a)a={baa}≠L(L/a)a=\{baa\}\ne L: perdem-se bb e abab, que não terminam em aa. Em geral, (L/a)a(L/a)a reúne exatamente as palavras de LL terminadas em aa, logo fica contido em LL, mas pode ser um subconjunto próprio.

Confere a tua resposta:

  • Retira a última letra a só das palavras que a têm.
  • Retira a primeira letra a só das palavras que a têm.
  • Compara o conjunto reconstruído com todas as palavras originais.

Erros frequentes

Não retires um a em qualquer posição. O lado em que se concatena o símbolo faz parte da definição.

Voltar à explicação
Rondas e palavras distinguidoras

Um DFA sobre {a,b}\{a,b\} tem início OO, finais C,DC,D e tabela:

Estadoaabb
OOAAOO
AABBCC
BBAADD
CCAAOO
DDBBOO

Mostra que todos os estados são alcançáveis. Preenche a tabela de pares distinguíveis por rondas, dá uma palavra distinguidora por cada par marcado e constrói o DFA mínimo.

Pista

Ao marcar um par pelos destinos de uma letra, acrescenta essa letra à frente da testemunha dos destinos.

Solução

Os percursos de ε,a,aa,ab,aab\varepsilon,a,aa,ab,aab chegam a O,A,B,C,DO,A,B,C,D. Na ronda 0, os seis pares final/não final são distinguidos por ε\varepsilon: (O,C),(O,D),(A,C),(A,D),(B,C),(B,D)(O,C),(O,D),(A,C),(A,D),(B,C),(B,D). Na ronda 1, (O,A)(O,A) e (O,B)(O,B) são distinguidos por bb, que leva a (O,C)(O,C) e (O,D)(O,D). Na ronda seguinte não há novas marcas.

Restam as classes [O][O], [AB][AB] e [CD][CD], com início [O][O] e único final [CD][CD]:

Classeaabb
[O][O][AB][AB][O][O]
[AB][AB][AB][AB][CD][CD]
[CD][CD][AB][AB][O][O]

Os pares (A,B)(A,B) e (C,D)(C,D) levam por cada letra a estados iguais ou a estes mesmos pares sem marca. O algoritmo não encontra continuação que os distinga. As três classes que ficam são distintas pelas testemunhas já indicadas.

Confere a tua resposta:

  • Mostrei que os cinco estados são alcançáveis.
  • Marquei seis pares por ε e dois por b.
  • Construí a tabela das três classes.
Voltar à explicação

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.