Post on 13-Jan-2016
description
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!