Informática Teórica Conversão AFN para AFD Expressões Regulares Algoritmos OR em ER Conversão de ER para AFN Conversão de AFD para ER
Jan 13, 2016
Informática TeóricaConversão AFN para AFD
Expressões RegularesAlgoritmos OR em ER
Conversão de ER para AFN Conversão de AFD para ER
Conversão AFN → AFDJá sabemos que todo AFN tem um AFD
equivalente mas como encontrá-lo?Para esse problema temos um algoritmo.
Conversão AFN → AFDAlgoritmo
Cria-se o estado inicial do AFD com o estado inicial do AFN e os estados atingidos por transições ε.
Compute para os estados criados as saídas para cada estado que faz parte dele para todas as entradas do alfabeto através da função de transição e das transições ε, una os estados resultantes e crie um novo estado. Faça isso até que não se crie mais estados novos, ou seja, o AFD está completo.
Os estados finais do AFD é todo estado que possui pelo menos um estado de aceitação do AFN.
Conversão AFN → AFDExemplo
AFN AFD1
ε
02
3
0,11
0
1,2
Estado inicial que é 1 e tem
transição ε para 2
Computando δ({1,2},0)
0
1 3
2 1,2
1,2,3
0
1,2,3
Conversão AFN → AFDExemplo
AFN AFD1
ε
02
3
0,11
0
1,2
Computando δ({1,2},1)
1
1 Ø
2 Ø
Ø
0
1
0,1
01,2,3
Conversão AFN -> AFDExemplo
AFN AFD1
ε
02
3
0,11
0
1,2
Computando δ({1,2,3},0)
0
1 3
2 1,2
3 Ø
1,2,30
1
0,1
Ø
1
01,2,3
Conversão AFN → AFDExemplo
AFN AFD1
ε
02
3
0,11
0
1,2
Computando δ({1,2,3},1)
1
1 Ø
2 Ø
3 2,3
2,30
1
0,1
Ø
2,3
1
01,2,3
Conversão AFN → AFDExemplo
AFN AFD1
ε
02
3
0,11
0
1,2
Computando δ({2,3},0)
0
2 1,2
3 Ø
0
1
0,1
Ø
1,2
0
2,3
1
01,2,3
Conversão AFN → AFDExemplo
AFN AFD1
ε
02
3
0,11
0
1,2
Computando δ({2,3},1)
1
2 Ø
3 2,3
0
1
0,1
Ø
0
2,3
1
Não há mais estado sem transição definida
2,3
1
01,2,3
Conversão AFN → AFDExemplo
AFN AFD1
ε
02
3
0,11
0
1,2
0
1
0,1
Ø
0
1
Onde houver estado de aceitação, no caso 2, também será estado de aceitação
Exercícios AFN → AFD1.
2.
Expressão RegularDefinição
É uma forma de definir uma Linguagem Regular como uma expressão.
Definição IndutivaBase
ε, Ø e os elementos do alfabetoIndução: Sejam A e B ERs
A∪B também é ER. A∘B ou AB, também é. A* também é ER
Expressão RegularTeoremas
Toda ER gera uma LR.Toda LR tem uma ER que a reconhece
univocamente.Toda ER tem um AFN equivalente
Operações RegularesUnião
A união de duas ERs, representada por A∪BConcatenação
A concatenação de duas ERs, representada por A∘B ou AB
EstrelaA estrela de uma ER, representada por A*
Conversão LR → ERSemelhante a conversão LR -> AFD só que
tem que pensar na ER não mais no AFD, não há algoritmo.
ExemplosL = {w| w tem tamanho par}
ER= (∑ ∑)*L = {w| w só tem 0 antes de 1}
ER = 0+1*, o + significa um ou mais 0+ = 00*.L = {0, 11, 0000}
ER = 0 ∪11 ∪0000L={w| w tem um único 0}
ER = 1*01*
Exercícios LR → ER1. L = {0, 11, 000}2. L = {w| começa e termina com a letras
diferentes}3. L = {w| termina com 101 e tem 010 como
subcadeia}4. L = {w| w não tem a subcadeia 01}
Conversão ER → AFNCaso ER = Ø
Caso ER = ε
Seja ER = a, onde a é um elemento de ∑
União, Concatenação e EstrelaIguais aos algoritmos de AFN
Conversão ER → AFNExemplos
Ø∪ε
1+0*
Exemplos ER → AFN1. 0(011)*∪1
2. 0+∪(01)+
3. ∑*000∑*4. (((00)*11)∪01)*
Conversão AFD → ER Sabemos que uma LR pode ser representada
por AFD, AFN e ER que são equivalentes entre si.
Já podemos converter ER → AFN → AFD, só falta converter AFD → ER, para esse processo temos algoritmo.
Conversão AFD → ERAlgoritmo
Crie um novo estado inicial e uma transição ε para o estado inicial do AFD
Crie um novo estado de aceitação e crie transições ε dos estados de aceitação do AFD para este novo estado e tire as antigas aceitações, agora temos um Autômato Finito Não-Determinístico Generalizado (AFNG). Um AFNG possui ER nas transições não só uma
letra.Elimine os estados do AFD um por vez até que
só fique a ER do novo estado inicial até o novo estado de aceitação.
Conversão AFD → ERAlgoritmo
Elimine os estados do AFD um por vez segundo a regra
Faça isso até eliminar todos os estados do AFDAo fim disso tudo, só temos uma transição com
a ER do AFD inicial.
Conversão AFD → ERExemplo
4
1
02
0
10
1
0,1
3 1
Sa
ε ε
ε
ε
Conversão AFD → ERExemplo
1
02
0
10
1
0,1
3 1
Sa
ε ε
ε
ε
Cortar um estado vazio não causa alterações no autômato
4
Conversão AFD → ERExemplo
1
02
0
10
1
Sa
ε ε
ε
ε
4
Neste estado passa informação de 2 → 1 e de 2 → a
11*0
11*
Conversão AFD → ERExemplo
0210
Sa
ε ε
ε
11*0
11*
11*∪ ε
União
Conversão AFD → ERExemplo
0210
Sa
ε
ε
11*0
11*∪ ε
Neste estado passa informação de 1 → 1 e de 1 → a
00*(11*∪ ε)
00*11*0
Conversão AFD → ERExemplo
1
Sa
ε
ε
00*(11*∪ ε)
00*11*0
União
(00*(11*∪ ε)) ∪ ε
Conversão AFD → ERExemplo
1
Sa
ε
00*11*0
(00*(11*∪ ε)) ∪ ε
Neste estado passa informação de S → a
(00*11*0)*((00*(11*∪ ε)) ∪ ε)
Conversão AFD → ERExemplo
Sa
Está pronta a Expressão Regular
(00*11*0)*((00*(11*∪ ε)) ∪ ε)
Exemplos AFD → ER1. 2.
ExemploLR → AFD → ER → AFN → AFD1. L = {w ∈ ∑ | w tem um número ímpar de
1’s}
Informática TeóricaObrigado!