06 · Equivalência entre AFD e AFND
Resumo em 30 segundos
Teorema: se um AFND aceita , existe um AFD que aceita . A prova é construtiva (construção de subconjuntos): cada estado do AFD é um conjunto de estados do AFND, o conjunto dos estados “ativos” naquele momento. A transição do AFD é a união das transições do AFND. Estados finais do AFD são os conjuntos que contêm algum final do AFND.
Anterior: 05 - Autômatos Finitos Não Determinísticos · Voltar ao mapa · Próxima: 07 - Equivalência AF e GR
Slide 3: o teorema
Se é aceita por um AFND, então existe um AFD que aceita .
Consequência: o AFND não é mais poderoso que o AFD. É uma representação mais livre, mais fácil de escrever, com o mesmo poder. A volta é trivial: todo AFD já é um AFND (cada conjunto de destinos tem um elemento só).
Slides 4 e 5: a construção
Dado o AFND , define-se o AFD :
| Componente do AFD | Definição |
|---|---|
| subconjuntos de ; o estado representa o conjunto | |
| sse | |
| inicial | , o conjunto só com o inicial do AFND |
| subconjuntos que contêm pelo menos um estado de |
Detalhe no slide 4
O slide escreve . Como é determinístico, o correto é . Cada estado de já é um conjunto de estados do AFND, então o destino é um único elemento de , não um conjunto deles.
Slide 6: a prova, em português
Por indução no tamanho da palavra , mostra-se:
Ou seja, o estado do AFD depois de ler é exatamente o conjunto de estados em que o AFND pode estar depois de ler .
- Base (, ): o AFD está em e o AFND em . Iguais por definição.
- Hipótese: vale para palavras de tamanho .
- Passo (, tamanho ): pela hipótese, depois de os dois estão em "". Lendo , o AFND vai para e o AFD, por definição de , vai para o mesmo conjunto.
Daí: o AFD aceita ⟺ o conjunto final contém um estado de ⟺ o AFND aceita .
Slide 7: o algoritmo
flowchart TD A["Comece com o estado [i]"] --> B{Há estado do AFD<br/>ainda não analisado?} B -- não --> Z[Fim: marque como finais<br/>os que contêm algum estado de F] B -- sim --> C[Pegue um estado S = conjunto] C --> D["Para cada símbolo a:<br/>destino = união de T(q,a) para q em S"] D --> E{Destino já existe<br/>na tabela?} E -- sim --> B E -- não --> F[Crie o novo estado<br/>e coloque na fila] --> B
Dica de prova: só crie os subconjuntos que aparecem a partir de . Não precisa listar os subconjuntos; os inalcançáveis podem ser ignorados.
Slides 8 a 10: exemplo resolvido
AFND:
| T | 0 | 1 |
|---|---|---|
| → q0 | {q1} | {q2} |
| q1 | {q0, q1} | {q0} |
| * q2 | {q0} | {q2} |
Passo a passo:
- : com 0 vai para ; com 1 vai para . Dois estados novos.
- : com 0, , estado novo ; com 1, .
- : com 0, ; com 1, .
- : com 0, ; com 1, , novo.
- : com 0, ; com 1, .
- Nenhum estado novo: fim.
AFD resultante (idêntico ao do slide 10, conferido por programa):
| T | 0 | 1 |
|---|---|---|
| → [q0] | [q1] | [q2] |
| [q1] | [q0q1] | [q0] |
| * [q2] | [q0] | [q2] |
| [q0q1] | [q0q1] | [q0q2] |
| * [q0q2] | [q0q1] | [q2] |
Finais: e , os que contêm . Conferi também que o AFD e o AFND aceitam exatamente as mesmas palavras até tamanho 10.
Slide 11: exercícios
Exercício 1: AFND com alfabeto {a, b, c}
T a b c → q0 {q0, q1} {q1} {q2} q1 {q0} {q0, q2} {q0} * q2 {q1} {q0, q1} {q2} AFD equivalente (6 estados alcançáveis):
T a b c → [q0] [q0q1] [q1] [q2] [q0q1] [q0q1] [q0q1q2] [q0q2] [q1] [q0] [q0q2] [q0] * [q2] [q1] [q0q1] [q2] * [q0q1q2] [q0q1] [q0q1q2] [q0q2] * [q0q2] [q0q1] [q0q1] [q2] Exemplo de conta: com b .
Conferido por programa: mesma linguagem do AFND até tamanho 7.
Exercício 2: AFND do diagrama com p0 a p3
Lendo o diagrama ampliado: , ; com laço em 1, , ; com laço em 0, , ; final e sem saídas.
T 0 1 → p0 {p1} {p2} p1 {p3} {p0, p1} p2 {p1, p2} {p3} * p3 ∅ ∅ AFD equivalente (11 estados alcançáveis, mais o estado vazio ∅):
T 0 1 → [p0] [p1] [p2] [p1] [p3] [p0p1] [p2] [p1p2] [p3] * [p3] ∅ ∅ [p0p1] [p1p3] [p0p1p2] [p1p2] [p1p2p3] [p0p1p3] * [p1p3] [p3] [p0p1] [p0p1p2] [p1p2p3] [p0p1p2p3] * [p1p2p3] [p1p2p3] [p0p1p3] * [p0p1p3] [p1p3] [p0p1p2] * [p0p1p2p3] [p1p2p3] [p0p1p2p3] O conjunto vazio ∅ funciona como estado poço (não final, laço em 0 e 1). O diagrama omite ele para não poluir. Na prova, inclua ∅ se o professor exigir função de transição total.
Conferido por programa: mesma linguagem do AFND até tamanho 10. Como o diagrama do slide é pequeno, confira a direção da seta entre p1 e p2 no seu PDF; eu li como .
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 teorema no Menezes (Teorema 2.7, p. 43)
É a mesma construção dos slides, com dois detalhes que o livro deixa explícitos:
- Os estados do AFD são combinações sem repetição dos estados do AFND, e a ordem não importa: e são o mesmo estado.
- A volta (todo AFD é um AFND) “decorre trivialmente das definições”, porque um AFD é um AFND em que todo conjunto de destinos tem um elemento só.
A prova é por indução no tamanho da palavra, igual à do slide 6: o estado do AFD depois de ler é exatamente o conjunto de estados em que o AFND pode estar.
Exemplo do livro: “termina em aaa” (Menezes, Exemplos 6 e 7, p. 42 a 44)
O AFND tem 4 estados (veja o diagrama na aula 05). Aplicando a construção a partir de (conferi por programa):
| T | a | b |
|---|---|---|
| → | ||
| * |
De 16 subconjuntos possíveis, só 4 são alcançáveis. O livro chama esses estados de : cada um conta quantos a seguidos acabaram de aparecer. Ler b sempre volta para o começo.
O algoritmo do Ramos é um pouco diferente (Algoritmo 3.4, p. 160 a 162)
Em vez de começar do estado inicial e só criar os conjuntos alcançáveis (como nos slides e no Menezes), o Ramos parte da tabela inteira do AFND e vai trocando cada transição não determinística por um estado novo que junta os destinos, copiando para ele as transições dos estados que o compõem. Repete até não sobrar não determinismo. Consequências que ele destaca:
- podem sobrar estados inacessíveis no final (no Exemplo 3.15, p. 162, o estado original fica inacessível), que depois podem ser removidos;
- o número de estados do AFD fica limitado por (todas as combinações não vazias), e o Exemplo 3.17 (p. 164) mostra um caso em que as combinações aparecem.
Os dois métodos chegam a autômatos equivalentes. O dos slides costuma dar menos trabalho na prova porque nunca cria estado inalcançável.
O caminho contrário é trivial
O Ramos mostra (Exemplo 3.18, p. 166) que dá para transformar qualquer AFD num AFND equivalente só acrescentando um estado “morto” alcançável por um símbolo que já tinha transição. A linguagem não muda. Ou seja, a equivalência é mesmo nos dois sentidos.
Depois da conversão, minimize
A construção de subconjuntos costuma gerar estados equivalentes (que se comportam igual para qualquer palavra). No AFND do slide 9 da aula 05, por exemplo, a conversão gera 5 estados, mas dois deles podem ser fundidos. O algoritmo de minimização do Menezes está explicado, com esse exemplo, em 08 - Tópicos Complementares dos Livros. Já os dois exercícios desta aula e o exemplo dos slides 8 a 10 não diminuem: conferi por programa que os AFDs obtidos já são mínimos.
Para aprofundar nos livros
Onde ler (páginas das edições da sua pasta)
- Menezes (3ª ed.): Teorema 2.7 e Exemplo 7, p. 43 e 44; 2.8 Minimização, p. 66 a 72; exercícios 2.8 e 2.25a, p. 81 e 84.
- Ramos, José Neto e Vega: Teorema 3.3 e Algoritmo 3.4, p. 160 a 167; 3.7 Minimização de Autômatos Finitos, p. 216 a 230.
Relacionadas: 05 - Autômatos Finitos Não Determinísticos · 07 - Equivalência AF e GR · Glossário · Flashcards