280 likes | 436 Views
Conversão de um NFA para um DFA com um exemplo. Compiladores, Aula Nº 7 (suplementos) João M. P. Cardoso. NFA para DFA. NFA para (0 | 1)*.(0 | 1)*. . . 1. 1. . . . . 3. 5. 11. 13. . . . . 1. 2. 7. 8. 9. 10. 15. 16. . . . . 4. 6. 12. 14. 0. 0. .
E N D
Conversão de um NFA para um DFA com um exemplo Compiladores, Aula Nº 7 (suplementos) João M. P. Cardoso
NFA para DFA • NFA para (0 | 1)*.(0 | 1)* . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0
NFA para DFA • Começar pelo estado início do NFA (estado 1) . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0
NFA para DFA • Agrupar todos os estado que possam ser alcançados do estado 1 com transições . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0
NFA para DFA • O agrupamento forma o estado início do DFA . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1,2,3,4,8
NFA para DFA • Agora determinamos as transições sobre o alfabeto que podem ocorrer deste estado . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1,2,3,4,8
NFA para DFA • Agora determinamos as transições sobre o alfabeto que podem ocorrer deste estado . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 1,2,3,4,8 0
NFA para DFA • Para cada transição vamos encontrar no NFA os estados destino a partir dos estados agrupados no DFA . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 1,2,3,4,8 0
NFA para DFA • Para a transição do “.” (ocorre do estado 8 para o 9) . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1,2,3,4,8
NFA para DFA • O estado é dado pelo agrupamento dos estados que sendo alcançáveis com . são depois alcançáveis com . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1,2,3,4,8 9,10,11,12,16
NFA para DFA • Como o estado 16 é um estado de aceitação no NFA então o estado (9, 10, 11, 12, 16) é um estado de aceitação no DFA pois inclui o estado 16 . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1,2,3,4,8 9,10,11,12,16
NFA para DFA • Para a transição do “1” (ocorre do estado 3 para o 5) . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16
NFA para DFA • O estado é dado pelo agrupamento dos estados que sendo alcançáveis com 1 são depois alcançáveis com . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16
NFA para DFA • Para a transição do “0” (ocorre do estado 4 para o 6) . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0
NFA para DFA • O estado é dado pelo agrupamento dos estados que sendo alcançáveis com 0 são depois alcançáveis com . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 6,7,2,3,4,8
NFA para DFA • Percorremos todas as transições possíveis do estado início do DFA . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 6,7,2,3,4,8
NFA para DFA • Agora vamos fazer o mesmo para os outros estados entretanto adicionados ao DFA . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 6,7,2,3,4,8
NFA para DFA • Vamos começar por exemplo pelo estado (5, 7, 2, 3, 4, 8) . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 6,7,2,3,4,8
NFA para DFA • Para a transição do “1” (ocorre do estado 3 para o 5) . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 6,7,2,3,4,8
NFA para DFA • O estado é dado pelo agrupamento dos estados que sendo alcançáveis com 1 são depois alcançáveis com . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 6,7,2,3,4,8
NFA para DFA • Para a transição do “0” (ocorre do estado 4 para o 6) . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 6,7,2,3,4,8
NFA para DFA • O estado é dado pelo agrupamento dos estados que sendo alcançáveis com 0 são depois alcançáveis com . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 0 6,7,2,3,4,8
NFA para DFA • Para a transição do “.” (ocorre do estado 8 para o 9) . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 0 6,7,2,3,4,8
NFA para DFA • O estado é dado pelo agrupamento dos estados que sendo alcançáveis com . são depois alcançáveis com . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 5,7,2,3,4,8 1 1,2,3,4,8 9,10,11,12,16 0 0 6,7,2,3,4,8
NFA para DFA • Da continuação da aplicação do algoritmo resultaria . 1 1 3 5 11 13 1 2 7 8 9 10 15 16 4 6 12 14 0 0 1 1 5,7,2,3,4,8 13,15,10,11,12,16 1 1 1 1 1,2,3,4,8 9,10,11,12,16 0 0 0 0 6,7,2,3,4,8 14,15,10,11,12,16 0 0