330 likes | 422 Views
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. Conversão AFN → AFD. Já sabemos que todo AFN tem um AFD equivalente mas como encontrá-lo? Para esse problema temos um algoritmo. Conversão AFN → AFD.
E N D
Informática Teórica Conversão AFN para AFDExpressões RegularesAlgoritmos OR em ERConversão de ER para AFN Conversão de AFD para ER
Conversão AFN → AFD • Já sabemos que todo AFN tem um AFD equivalente mas como encontrá-lo? • Para esse problema temos um algoritmo.
Conversão AFN → AFD • Algoritmo • 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 → AFD • Exemplo AFN AFD ε 1 2 1,2 0 0 0,1 0 Estado inicial que é 1 e tem transição ε para 2 3 1 1,2,3
Conversão AFN → AFD • Exemplo AFN AFD 0,1 Ø ε 1 2 1,2 0 1,2,3 0 0,1 0 1 3 1
Conversão AFN -> AFD • Exemplo AFN AFD 1,2,3 ε 1 2 1,2 0 1,2,3 0 0 0,1 0 1 3 1 0,1 Ø
Conversão AFN → AFD • Exemplo AFN AFD 2,3 ε 1 2 1,2 0 1,2,3 0 0 0,1 0 1 1 3 1 0,1 Ø
Conversão AFN → AFD • Exemplo AFN AFD 1,2 ε 1 2 1,2 0 1,2,3 0 0 0,1 0 1 1 0 3 1 0,1 Ø 2,3
Conversão AFN → AFD • Exemplo AFN AFD 2,3 ε 1 2 1,2 0 1,2,3 0 0 0,1 0 1 1 0 3 1 0,1 Ø 2,3 1 Não há mais estado sem transição definida
Conversão AFN → AFD • Exemplo AFN AFD ε 1 2 1,2 0 1,2,3 0 0 0,1 0 1 1 0 3 1 0,1 Ø 2,3 1 Onde houver estado de aceitação, no caso 2, também será estado de aceitação
Expressão Regular • Definição • É uma forma de definir uma Linguagem Regular como uma expressão. • Definição Indutiva • Base • ε, Ø e os elementos do alfabeto • Indução: Sejam A e B ERs • A∪B também é ER. • A∘B ou AB, também é. • A* também é ER
Expressão Regular • Teoremas • Toda ER gera uma LR. • Toda LR tem uma ER que a reconhece univocamente. • Toda ER tem um AFN equivalente
Operações Regulares • União • A união de duas ERs, representada por A∪B • Concatenação • A concatenação de duas ERs, representada por A∘B ou AB • Estrela • A estrela de uma ER, representada por A*
Conversão LR → ER • Semelhante a conversão LR -> AFD só que tem que pensar na ER não mais no AFD, não há algoritmo. • Exemplos • L = {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 ∪0000 • L={w| w tem um único 0} • ER = 1*01*
Exercícios LR → ER • L = {0, 11, 000} • L = {w| começa e termina com a letras diferentes} • L = {w| termina com 101 e tem 010 como subcadeia} • L = {w| w não tem a subcadeia 01}
Conversão ER → AFN • Caso ER = Ø • Caso ER = ε • Seja ER = a, onde a é um elemento de ∑ • União, Concatenação e Estrela • Iguais aos algoritmos de AFN
Conversão ER → AFN • Exemplos • Ø∪ε • 1+0*
Exemplos ER → AFN • 0(011)*∪1 • 0+∪(01)+ • ∑*000∑* • (((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 → ER • Algoritmo • 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 FinitoNã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 → ER • Algoritmo • Elimine os estados do AFD um por vez segundo a regra • Faça isso até eliminar todos os estados do AFD • Ao fim disso tudo, só temos uma transição com a ER do AFD inicial.
Conversão AFD → ER • Exemplo ε 1 0 2 0 ε ε S a 1 1 0 ε 0,1 3 4 1
Conversão AFD → ER • Exemplo ε 1 0 2 0 ε ε S a 1 1 0 ε 0,1 3 4 1 Cortar um estado vazio não causa alterações no autômato
Conversão AFD → ER • Exemplo ε 1 0 2 0 ε ε S 11* a 1 0 ε 11*0 4 1 Neste estado passa informação de 2 → 1 e de 2 → a
Conversão AFD → ER • Exemplo ε 1 0 2 0 ε ε S 11*∪ ε 11* a 11*0 União
Conversão AFD → ER • Exemplo 00*11*0 ε 1 0 2 0 ε S 00*(11*∪ ε) 11*∪ ε a 11*0 Neste estado passa informação de 1 → 1e de 1 → a
Conversão AFD → ER • Exemplo 00*11*0 ε 1 (00*(11*∪ ε)) ∪ ε ε S 00*(11*∪ ε) a União
Conversão AFD → ER • Exemplo 00*11*0 1 (00*(11*∪ ε)) ∪ ε ε S (00*11*0)*((00*(11*∪ ε)) ∪ ε) a Neste estado passa informação de S → a
Conversão AFD → ER • Exemplo S (00*11*0)*((00*(11*∪ ε)) ∪ ε) a Está pronta a Expressão Regular
ExemploLR → AFD → ER → AFN → AFD • L = {w ∈ ∑ | w tem um número ímpar de 1’s}
Informática Teórica Obrigado!