Cheat sheet

Condições, construções e erros a conferir em linguagens, autómatos, gramáticas e computabilidade.

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Decide primeiro o que precisas: reconhecer, converter, provar ou calcular custos. Cada linha dá a condição exata e o erro que a quebra. As ligações levam às construções completas.

Reconhecer uma palavra

ModeloCondição de aceitaçãoErro que quebra
DFAEstado final depois de consumir toda a entradaParar a meio num final
NFAExiste ramo que consome tudo até um finalExigir que todos os ramos terminem em final
ε-NFASimula com fecho-ε antes e depois de cada letra; no fim aceita se o conjunto contém um finalEsquecer o fecho inicial ou aceitar a meio
PDA finalEntrada consumida e estado em FFChegar a final com entrada restante
PDA pilha vaziaEntrada consumida e pilha vaziaEsvaziar antes de consumir tudo
TMParar num final aceita, mesmo sem consumir o resto; parar fora de final rejeitaConfundir o limite do simulador com não paragem

Só a linha TM dispensa consumo total. Uma máquina que entra logo num final aceita, mesmo sem ler o resto da fita.

Um DFA incompleto no desenho abrevia um poço para as transições omitidas; isto não vale para PDA ou TM em geral. Para determinizar, com o conjunto atual SS já fechado, δD(S,a)=E(⋃q∈SδN(q,a))\delta_D(S,a)=E(\bigcup_{q\in S}\delta_N(q,a)), com fecho-ε aplicado depois de cada letra e conjunto inicial E({q0})E(\{q_0\}). Um subconjunto é final quando intersecta FF. Para complementar, determiniza, completa e troca finais num DFA. DFA, NFA.

Descrever e converter

TarefaProcedimento mínimo
Ler expressãoPrecedência: estrela, depois concatenação, depois união; 01∗≠(01)∗01^*\ne(01)^*
ThompsonFragmentos com entrada e saída; a união escolhe por ε, a concatenação liga a saída de EE à entrada de FF e a estrela salta ou repete; só a saída final fica final
Eliminar estado kkPara estados sobreviventes i≠ki\ne k e j≠kj\ne k, Rij′=Rij+Rik(Rkk)∗RkjR'_{ij}=R_{ij}+R_{ik}(R_{kk})^*R_{kj}, sempre com os rótulos anteriores à ronda
Derivada DaD_aL(Da(E))={w∣aw∈L(E)}L(D_a(E))=\{w\mid aw\in L(E)\}; Da(EF)≡Da(E)F+Da(F)D_a(EF)\equiv D_a(E)F+D_a(F) se EE aceita ε\varepsilon, senão Da(E)FD_a(E)F
EquivalênciaConverte para DFA, constrói o produto e procura um par com exatamente uma componente final; exemplos não provam igualdade
Complementar expressãoConverte para autómato, determiniza, completa, troca finais e converte de novo; nunca basta trocar operadores

∅≠{ε}\emptyset\ne\{\varepsilon\}; L∅=∅L\emptyset=\emptyset; L{ε}=LL\{\varepsilon\}=L; ∅∗={ε}\emptyset^*=\{\varepsilon\}. A igualdade (E+F)∗=E∗+F∗(E+F)^*=E^*+F^* não vale em geral: com E=aE=a e F=bF=b, a palavra abab pertence a (E+F)∗(E+F)^* mas não a E∗+F∗E^*+F^*. Quando E=FE=F, os dois lados coincidem, por isso esse caso não serve como contraexemplo. Conversões.

Provar e decidir

PerguntaResposta, sempre num DFA completo para decisão e minimização
FinitasToda a linguagem finita é regular: une uma expressão por palavra
Fecho por produtoUnião (pelo menos uma componente final), interseção (ambas finais) e diferença de dois DFA; a construção do produto só muda o critério dos finais
Outras operações regularesComplemento por troca de finais; concatenação, estrela, reverso, quocientes e intercalação por construções próprias, não por troca de finais no produto
VazioNenhum estado final é alcançável a partir do início
InfinitoNo DFA, existe um ciclo alcançável do início do qual se alcança um final; um ciclo só de ε num NFA não chega
Inclusão L1⊆L2L_1\subseteq L_2A diferença L1∖L2L_1\setminus L_2 é vazia
MinimizarParte de um DFA completo; retira inacessíveis, marca pares final/não final, propaga marcas pelos destinos e repete até nenhuma ronda produzir marcas novas; junta os pares sem marca
Fecho CFLUnião, concatenação, estrela, reverso e interseção com uma regular; sem interseção geral, complemento ou diferença
Decidível em CFGPertença por CYK e vazio pelo teste de início gerador; sem decisor para equivalência, universalidade ou ambiguidade

Lema regular: existe p≥1p\ge1 tal que toda s∈Ls\in L com ∣s∣≥p|s|\ge p admite s=xyzs=xyz com ∣xy∣≤p|xy|\le p, ∣y∣≥1|y|\ge1 e xyiz∈Lxy^iz\in L para todo i≥0i\ge0.

Lema CFL: existe p≥1p\ge1 tal que toda s∈Ls\in L com ∣s∣≥p|s|\ge p admite s=uvwxys=uvwxy com ∣vwx∣≤p|vwx|\le p, ∣vx∣≥1|vx|\ge1 e uviwxiy∈Luv^iwx^iy\in L para todo i≥0i\ge0.

Em ambos: supõe a classe, recebe pp, escolhe ss em função de pp, cobre todos os cortes válidos e exibe um ii cuja palavra bombeada sai de LL. Um corte que falha não prova nada e um corte que funciona numa palavra isolada não prova pertença. Limites, CFL.

Gramáticas e pilhas

  • Uma CFG é G=(V,Σ,P,S)G=(V,\Sigma,P,S) com SS inicial; cada produção tem a forma A→αA\to\alpha com uma variável à esquerda. A linguagem é L(G)={w∈Σ∗∣S⇒∗w}L(G)=\{w\in\Sigma^*\mid S\Rightarrow^*w\}; prova sempre as duas inclusões.
  • Tipo 3: todas lineares à direita ou todas à esquerda. Tipo 2: uma variável à esquerda. Tipo 1: regras u→vu\to v com ∣u∣≤∣v∣|u|\le|v|, admitindo S→εS\to\varepsilon só se SS não aparece em lados direitos. Classifica as regras dadas, não a menor classe da linguagem.
  • Uma gramática é ambígua quando uma palavra tem duas árvores distintas, ou seja, duas derivações mais à esquerda distintas. As ordens esquerda e direita da mesma árvore não contam.
  • No PDA, o topo fica à esquerda; a,X/αa,X/\alpha lê aa e substitui XX por α\alpha. A variável [pXq][pXq] gera as palavras que levam de pp a qq removendo XX sem mexer na pilha abaixo.
  • Para simplificar: elimina produções vazias por combinações (preserva ε\varepsilon só se pertencia à linguagem, com início novo), depois unitárias copiando produções, depois variáveis não geradoras e inacessíveis. CNF: A→BCA\to BC ou A→aA\to a, com S0→εS_0\to\varepsilon isolado e S0S_0 fora dos lados direitos.
  • CYK com palavra não vazia: preenche intervalos por comprimento crescente com todos os cortes; numa produção A→BCA\to BC, BB gera o prefixo esquerdo e CC o sufixo direito. Aceita se o início está no intervalo total. Custo O(n3)O(n^3) tempo e O(n2)O(n^2) espaço para gramática fixa. Gramáticas, pilhas.

Computabilidade e custo

  • Um reconhecedor aceita cada palavra de LL e, fora de LL, rejeita ou corre para sempre. Um decisor termina sempre com a resposta certa. Se LL e L‾\overline L são reconhecíveis, então LL é decidível por simulação alternada.
  • HALTHALT e ATMA_{TM} são reconhecíveis e indecidíveis. Uma redução A≤mBA\le_m B usa ff total computável com x∈A  ⟺  f(x)∈Bx\in A\iff f(x)\in B; para provar BB indecidível, reduz um AA já indecidível a BB.
  • P decide por TM determinística em tempo polinomial. NP tem, para cada resposta sim, um certificado de comprimento polinomial verificado em tempo polinomial por um verificador determinístico; fora de LL, nenhum certificado passa. A inclusão P⊆NPP\subseteq NP está estabelecida; a igualdade P=NPP=NP continua em aberto.
  • Um problema é NP-difícil quando todo o problema de NP se reduz a ele em tempo polinomial. É NP-completo quando é NP-difícil e pertence a NP. Para provar, descreve certificado, tamanho e verificador, depois reduz um NP-completo conhecido com as duas implicações e o custo.
  • Um inteiro N≥1N\ge1 em binário usa ⌊log⁡2N⌋+1\lfloor\log_2N\rfloor+1 bits (N=0N=0 à parte); NN iterações são exponenciais no comprimento nn. Turing, complexidade.

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