340 likes | 465 Views
Ling. Formais e Autômatos AFN- ε. Tópicos. Autômatos finitos. AF com ε -transições. AF com ε -transições. Definição O autômato finito com ε -transições permite transições sobre ε , a string vazia
E N D
Tópicos Autômatos finitos AF com ε-transições
AF com ε-transições • Definição • O autômato finito com ε-transições permite transições sobre ε, a string vazia • O AFN-ε tem permissão para fazer uma transição espontaneamente, sem receber um símbolo de entrada • Conveniência de programação q0 q1 ε
AF com ε-transições • Definição • Um autômato finito com ε-transições consiste em: • Um conjunto finito de estados: Q • Um conjunto finito de símbolos de entrada: Σ • Uma função de transição que toma como argumentos um estado em Q e um elemento de Σ U {ε}: δ • Um estado inicial (que está em Q) • Um conjunto de estados finais F (F é um subconjunto de Q)
AF com ε-transições • Notação: A = (Q, Σ, δ, q0, F)
Exemplo 1 • Construir um AFN que reconheça as palavras-chave web e ebay Como ele poderia ser construído?
Exemplo 1 • Construir um AFN que reconheça as palavras-chave web e ebay • 1.º passo: Construímos uma seqüência completa de estados para cada palavra-chave, como se fosse a única palavra que o autômato precisasse reconhecer
Exemplo 1 • Construir um AFN que reconheça as palavras-chave web e ebay • O AFN abaixo reconhece a palavra-chave web q0 q1 q2 q3 w e b
Exemplo 1 • Construir um AFN que reconheça as palavras-chave web e ebay • O AFN abaixo reconhece a palavra-chave ebay q4 q5 q6 q7 q8 e b a y
Exemplo 1 • Construir um AFN que reconheça as palavras-chave web e ebay • 2.º passo: Adicionamos um novo estado inicial com ε-transições para os estados iniciais dos autômatos anteriores, que correspondem a cada uma das palavras-chave!
Exemplo 1 • Construir um AFN que reconheça as palavras-chave web e ebay q0 q1 q2 q3 w e b ε Início ε q4 q5 q6 q7 q8 e b a y Acabamos de construir um AFN com ε-transições!
Exemplo 2 L = { w | qualquer símbolo a antecede qualquer símbolo b } Como seria o AFN-ε que aceita essa linguagem?
Exemplo 2 L = { w | qualquer símbolo a antecede qualquer símbolo b } q0 q1 ε b a
ε-fechamento de um estado • Definição informal • Usamos o ε-fechamento em um estado q seguindo todas as transições saindo de q rotuladas por ε. Porém, quando chegamos a outros estados seguindo ε, acompanhamos as transições ε que saem desses estados, e assim por diante, encontrando eventualmente todo estado que pode ser alcançado a partir de q ao longo de qualquer caminho cujos arcos são todos rotulados por ε.
ε-fechamento de um estado • Definição formal • O estado q está em ECLOSE(q). Se o estado p está em ECLOSE(q), e existe uma transição do estado p para o estado r rotulada por ε, então r está em ECLOSE(q). Mais precisamente, se δ é a função de transição do AFN-ε envolvido, e p está em ECLOSE(q), então ECLOSE(q) também contém todos os estados em δ(p, ε).
ε-fechamento de um estado • ECLOSE(1) = { ? } 2 3 6 ε ε ε 1 b ε 4 5 7 ε a
ε-fechamento de um estado • ECLOSE(1) = { 1, 2, 3, 4, 6 } 2 3 6 ε ε ε 1 b ε 4 5 7 ε a
AF com ε-transições • Considerações • Dado qualquer AFN-εE, podemos encontrar um AFD D que aceita a mesma linguagem que E. • Para eliminar as ε-transições, aplica-se uma construção muito parecida com a construção de conjuntos, pois os estados de D são subconjuntos dos estados de E. • A única diferença é que devemos incorporar as ε-transições de E, o que fazemos por meio do mecanismo do ε-fechamento (ECLOSE).
Tópicos Expressões regulares Introdução Operadores
Linguagens regulares • De acordo com a Hierarquia de Chomsky, as linguagens regulares constituem a classe de linguagens mais simples, sendo possível desenvolver algoritmos de reconhecimento, de geração ou de conversão entre formalismos de pouca complexidade, de grande eficácia e de fácil implementação. • Entretanto, as linguagens regulares possuem fortes limitações de expressividade.
Linguagens regulares Um autômato finito reconhece uma linguagem regular!
Expressões regulares • Toda linguagem regular pode ser descrita por uma expressão regular • Uma expressão regular é definida a partir de conjuntos (linguagens) básicos e operações de concatenação e de união
Expressões regulares • Ø é uma expressão regular e denota o conjunto { } • Ε é uma expressão regular e denota o conjunto {ε} • Para cada aЄΣ, a é uma expressão regular e denota o conjunto { a } • Se r e s são expressões regulares denotando os conjuntos R e S, então (r+s), (rs) e (r*) são expressões regulares e denotam os conjuntos RUS, RS e R*, respectivamente
Expressões regulares • Alfabeto: Σ = { 0, 1 } • 00 é expressão regular se 0 é expressão regular • L(0) L(0) = { 0 } { 0 } = { 0 } • 0+1 é expressão regular se 0 é expressão regular e 1 é expressão regular • L(0) U L(1) = { 0 } U { 1 } = { 0, 1 } = Σ • 0* é expressão regular se 0 é expressão regular • L(0)* = { 0 }* = { ε, 0, 00, 000, 0000, ... }
Expressões regulares • Precedência: • * , + • 0+1* • L(0) U L(1)* = { 0 } U L(1)* = { 0 } U { 1 }* = { 0 } U { ε, 1, 11, ...}= = { 0, ε, 1, 11, ... } • Abreviamos rr* por r+ • 00*11*22* = 0+1+2+
Exemplo 1 • Considerando o alfabeto Σ={ 0, 1 } E1 = (0+1)* 00 (0+1)* O que E1 representa?
Exemplo 1 • Considerando o alfabeto Σ={ 0, 1 } E1 = (0+1)* 00 (0+1)* = L(E1) = L((0+1)*) . L(0) . L(0) . L((0+1)*) = {0, 1}* . {00} . {0, 1}* Uma string que tenha, pelo menos, 2 zeros consecutivos!
Exemplo 2 • Considerando o alfabeto Σ={ 0, 1 } E2 = ((0+1) (0+1))* O que E2 representa?
Exemplo 2 • Considerando o alfabeto Σ={ 0, 1 } E2 = ((0+1) (0+1))* = L(E2) = L((0+1) (0+1))* = (L(0+1) . L(0+1))* = = ({0,1} {0,1})* = {ε, 00, 01, 10, 11}* Cadeias que tenham comprimento par! (ou ε)
Expressões regulares AF Determinístico AF Não Determinístico Expressões Regulares
Expressões regulares • Simplificações • Associação • Distribuição • Equivalência de fecho
Expressões regulares • Seja r uma expressão regular. Então existe um AF não determinístico com ε-transições que aceita r.
Sérgio Donizetti Zorzo zorzo@dc.ufscar.br Paulo R. M. Cereda paulo_cereda@dc.ufscar.br Universidade Federal de São Carlos