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

Fecho das regulares

As linguagens regulares são fechadas para união, interseção, diferença, complemento, concatenação, estrela, reverso e intercalação. Toda a linguagem finita é regular.

  • O produto combina dois DFA completos sobre o mesmo alfabeto. Cada estado é um par (p,q)(p,q), com pp do primeiro DFA e qq do segundo, e cada letra atualiza ambas as componentes. Os finais dependem da operação: ambas as componentes finais na interseção, pelo menos uma componente final na união, primeira final e segunda não final na diferença.
  • O complemento troca finais com não finais num DFA completo.
  • O reverso inverte as arestas; o antigo início passa a ser o único final e um início novo liga por ε aos antigos finais.
  • A intercalação usa pares (p,q)(p,q) onde cada letra avança apenas uma componente. Cada ramo escolhe a palavra de origem da letra e os finais exigem ambas as componentes finais, o que conserva a ordem interna de cada palavra.
  • O quociente L/aL/a torna final cada estado qq com δ(q,a)\delta(q,a) final. A derivada a\La\backslash L desloca o início para δ(q0,a)\delta(q_0,a).

Decisão e equivalência

PerguntaProcedimento
L=∅L=\emptyset?Verifica se nenhum estado final é alcançável a partir do início.
L=Σ∗L=\Sigma^*?Complementa o DFA completo e testa se a linguagem resultante é vazia.
LL infinita?No DFA, procura um ciclo alcançável do início do qual se alcance um estado final. Um ciclo só de ε num NFA não chega.
L1⊆L2L_1\subseteq L_2?Testa se a diferença L1∖L2L_1\setminus L_2 é vazia.
L1=L2L_1=L_2?No produto, procura um par alcançável com exatamente uma componente final.

Se esse par não existir, as linguagens são iguais. Se existir, os rótulos do percurso desde o início formam uma palavra que distingue as linguagens, e a pesquisa em largura encontra uma das mais curtas.

Minimização

Parte de um DFA completo e procede assim:

  1. Remove os estados inacessíveis a partir do início.
  2. Marca cada par com um estado final e outro não final, pois a palavra vazia ε\varepsilon já os distingue.
  3. Marca o par (p,q)(p,q) quando alguma letra aa leva a um par já marcado. Repete este passo até nenhuma ronda produzir marcas novas.
  4. Junta os pares que continuam sem marca em classes de equivalência.

A palavra ww distingue os destinos por aa exatamente quando awaw distingue as origens, o que justifica a propagação para trás. O DFA mínimo completo é único a menos dos nomes dos estados.

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|y|\ge1, ∣xy∣≤p|xy|\le p e xyiz∈Lxy^iz\in L para todo o inteiro i≥0i\ge0. Esta condição é necessária, mas não suficiente para provar regularidade.

Para refutar, supõe que LL é regular, recebe esse pp, escolhe uma palavra ss em função de pp, cobre todas as decomposições válidas e exibe um ii cuja palavra bombeada sai de LL.

  • Com L={0n1n∣n≥0}L=\{0^n1^n\mid n\ge0\} e s=0p1ps=0^p1^p, qualquer corte válido tem y=0ky=0^k com 1≤k≤p1\le k\le p; retirar yy com i=0i=0 quebra a igualdade entre os blocos.
  • Mostrar que um corte falha não chega. Em L={(00)n∣n≥0}L=\{(00)^n\mid n\ge0\}, fixa um inteiro p≥2p\ge2 e s=02ps=0^{2p}: o corte y=0y=0 sai da linguagem com i=0i=0, mas o corte válido y=00y=00 bombeia dentro de LL para todo i≥0i\ge0. Só contrarias o lema quando todos os cortes válidos falham. Da mesma forma, exibir um corte que funciona numa palavra isolada não prova que a linguagem é regular.
  • Em alternativa, usa o fecho: se {0i1j∣i≠j}\{0^i1^j\mid i\ne j\} fosse regular, então 0∗1∗0^*1^* menos essa linguagem seria 0n1n0^n1^n.

Exemplo com rondas e palavras distinguidoras.

À 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.