05 · Autômatos Finitos Não Determinísticos (AFND)

Resumo em 30 segundos

No AFND, para um estado e um símbolo, pode haver zero, um ou vários próximos estados: . Pense em várias cópias do autômato rodando em paralelo, uma para cada escolha possível. A palavra é aceita se pelo menos uma cópia termina em estado final. O não determinismo deixa os autômatos mais fáceis de projetar, mas não mais poderosos: todo AFND tem um AFD equivalente (aula 06).

Anterior: 04 - Autômatos Finitos Determinísticos · Voltar ao mapa · Próxima: 06 - Equivalência AFD e AFND


Slides 3 e 4: a diferença está na função de transição

AFDAFND
Assinatura
Ao ler um símbolovai para um único estadovai para um conjunto de estados (pode ser vazio)

é o conjunto das partes de (todos os subconjuntos). Se , existem subconjuntos possíveis como destino.

Slide 5: definição formal

, igual ao AFD exceto por . finito e não vazio, finito, , .

Slides 6 a 8: representações

  • Interpretação física (slide 6): um AFND é como um AFD com várias unidades de controle, todas lendo o mesmo símbolo da fita ao mesmo tempo, cada uma em um estado.
  • Diagrama (slide 7): de um mesmo estado, podem sair várias setas com o mesmo rótulo (ou nenhuma).
  • Tabela (slide 8): cada célula guarda um conjunto de estados. → marca o inicial, * os finais.

Slide 9: exemplo

Tab
→ q0{q0, q1}{q0, q2}
q1{q3}∅
q2∅{q3}
* q3{q3}{q3}

(No slide as células vazias aparecem como traço; aqui uso .)

Leitura intuitiva: fica “esperando” em laço. Em algum momento o autômato “aposta” que começou um aa (vai para ) ou um bb (vai para ). Se a aposta der certo, chega em e fica lá.

L(M) = palavras que contêm aa ou bb. Conferido por programa até tamanho 10. O slide não diz qual é a linguagem; essa é a interpretação.

Slide 10: processando abbaba

O slide desenha a árvore de todas as escolhas. Um jeito mais compacto de fazer na prova é acompanhar o conjunto de estados ativos:

PassoLidoEstados ativosComo
0{q0}inicial
1a{q0, q1}
2b{q0, q2}
3b{q0, q2, q3}
4a{q0, q1, q3}
5b{q0, q2, q3}
6a{q0, q1, q3}

Conjunto final contém : aceita. Bate com o slide (os ramos terminam em e em ). E bate com a intuição: abbaba contém bb.

Esse método de "conjunto de estados ativos" é a conversão AFND→AFD

Cada linha da tabela acima é um estado do AFD equivalente. A aula 06 só formaliza isso.

Slide 11: extensão de domínio

A função estendida recebe um conjunto de estados e uma palavra: .

Em palavras: aplique com o primeiro símbolo a cada estado ativo, junte tudo (união) e continue com o resto da palavra.

Aceitação: é aceita se (pelo menos um estado final no conjunto que sobra).

Detalhe no slide 11

O slide escreve , mas o conjunto de partida se chama . O índice correto é . A origem do deslize fica clara no Menezes (Def. 2.6, p. 41): lá a fórmula é , com o conjunto chamado dos dois lados. O slide renomeou o conjunto para em um lugar e esqueceu no outro. Repare também que aqui a recursão consome o primeiro símbolo (), enquanto no AFD (aula 04) ela consome o último (). As duas formas são equivalentes.

Slide 12: fatos e mitos

  • Não determinismo é uma generalização importante: aparece em modelos de concorrência, teoria da computação e linguagens formais.
  • Facilita, mas não aumenta o poder de reconhecimento de uma classe de autômatos.
  • Qualquer AFND pode ser simulado por um AFD.

"Não determinístico" não é "aleatório"

O AFND não sorteia caminhos. A definição considera todos os caminhos ao mesmo tempo, e aceita se algum funciona. É uma forma de especificar, não de executar. Para executar num computador real, ou você simula o conjunto de estados (como na tabela acima) ou converte para AFD.

Complemento: o custo escondido

A equivalência tem um preço: um AFND com estados pode precisar de até estados no AFD. O exercício “-ésimo símbolo a partir do fim é b” (abaixo) é o exemplo clássico: o AFND tem estados e o menor AFD equivalente tem . Resultado padrão da teoria; não está nos slides.

Slide 13: exercícios

Todos os AFNDs abaixo foram conferidos por programa contra a descrição da linguagem.


Aprofundamento com os livros

Páginas das edições da sua pasta: Menezes 3ª edição (2000) e Ramos, José Neto e Vega (Bookman).

O exemplo do slide 9 é do Menezes

O AFND do slide 9 (contém aa ou bb) é o Exemplo 5 do Menezes (p. 41 e 42). O livro explica os três caminhos possíveis:

  1. o laço em , que só varre a entrada;
  2. o caminho , que confirma um aa;
  3. o caminho , que confirma um bb.

E compara com um AFD para a mesma linguagem (Exemplo 1, p. 34 e 35), que precisa “lembrar” qual foi o símbolo anterior: = “o anterior foi a”, = “o anterior foi b”. Em 08 - Tópicos Complementares dos Livros eu mostro que, se você converter o AFND do slide para AFD e depois minimizar, chega exatamente nesse AFD do livro.

O exercício do slide 13 sobre aa/bb e sufixo cccc também é do Menezes (exercício 2.3a, p. 80).

Como o Menezes descreve o não determinismo (p. 39 e 40)

Ao ler um símbolo, é como se a unidade de controle se multiplicasse, uma cópia para cada alternativa, e cada cópia seguisse sozinha, sem compartilhar nada com as outras. A palavra é aceita se existe um caminho que termina em estado final; é rejeitada se todos os caminhos rejeitam (p. 41).

Impasse, backtracking e threads (Ramos, p. 156 a 159)

O Ramos aponta duas novidades do AFND em relação ao AFD:

  • Impasse: como , pode não existir transição e aquele caminho simplesmente morre.
  • Escolha: quando há mais de um próximo estado, é preciso escolher.
ExecutaAceita seRejeita se
AFDuma única sequência de movimentospara em configuração finalpara em configuração não final
AFNDvárias sequências possíveisalguma para em configuração finalnenhuma consegue chegar a uma configuração final

(Resumo da Tabela 3.2 do Ramos, p. 157.)

Na prática, numa máquina sequencial, simula-se o AFND com busca exaustiva e backtracking: tenta um caminho, se der impasse volta e tenta outro (p. 159). O Ramos mostra isso passo a passo com a palavra abbccc num AFND para (Exemplo 3.12, p. 157 e 158). Em arquiteturas paralelas, cada processador pode seguir um caminho.

Backtracking ou conjunto de estados?

O método da tabela acima (acompanhar o conjunto de estados ativos) evita o backtracking: você processa todos os caminhos ao mesmo tempo, em uma passada só. É por isso que ele leva direto à construção de subconjuntos da aula 06.

Quando o AFND é bem mais simples

O Ramos compara (Exemplo 3.13, p. 158) um AFD e um AFND para “contém a subcadeia abcd”. O AFND é só uma linha de estados com laços no começo e no fim; o AFD precisa de setas de “volta” para cada caso em que o casamento falha no meio. Com o exemplo do Menezes para “termina em aaa” acontece o mesmo:

(Menezes, Exemplo 6, p. 42. A conversão para AFD está na aula 06.)

Transições vazias: o próximo passo

Os dois livros vão além dos slides e permitem transições que não leem nada, chamadas movimentos vazios ou transições em vazio (). Exemplo do Menezes (Exemplo 8, p. 46) para “todo a vem antes de todo b” ():

O autômato pode, a qualquer momento, “pular” de para sem ler. Conferi por programa que ele aceita exatamente . Transições vazias também não aumentam o poder: todo AF com vira um AFND sem (Menezes Teorema 2.11, p. 48; Ramos Teoremas 3.4 e 3.5, p. 169 a 176). Detalhes em 08 - Tópicos Complementares dos Livros.

Exercícios extras do Menezes (2.3, p. 80)

Para aprofundar nos livros

Onde ler (páginas das edições da sua pasta)

  • Menezes (3ª ed.): 2.3 Autômato Finito Não-Determinístico, p. 39 a 44; 2.4 Autômato Finito com Movimentos Vazios, p. 44 a 50; exercícios 2.3, 2.10 e 2.11, p. 80 e 81.
  • Ramos, José Neto e Vega: 3.3 Autômatos Finitos, parte não determinística, p. 156 a 167; transições em vazio, p. 167 a 192.

Relacionadas: 06 - Equivalência AFD e AFND · Glossário · Flashcards