autômatos finitos com transições e

Slides:



Advertisements
Apresentações semelhantes
FAPE - Curso de Ciência da Computação
Advertisements

FAPE - Curso de Ciência da Computação
Variantes de Máquina de Turing
Linguagem Fabrício Dias
Teoria da Computação VERIFICAÇÃO DE EQUIVALÊNCIA FORTE DE PROGRAMAS
I - Noções dum compilador
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Máquina de.
Prof. Yandre Maldonado e Gomes da Costa
Linguagens Formais e Autômatos
Teoria da Computação FIC– Ciência da Computação
Análise Léxica (Parte 2)
TEORIA DOS AUTÓMATOS FINITOS E DAS SUAS LINGUAGENS
3 AUTÓMATOS FINITOS.
Ling. Formais e Autômatos Autômatos finitos
Equivalência de Autômatos
Máquinas de Turing Teoria da Computação.
Teoria da Computação Sandra de Amo
Complexidade de Linguagens Influência do Modelo de Computação
Lema do Bombeamento – Gramáticas Livres do Contexto
Teorema da Recursão Teoria da Computação
Pós-graduação em Ciência da Computação – UFU
Resolução.
Linguagens Livres de Contexto
Strings, Linguagens, Autômatos
Linguagens Livre de Contexto
esquerda p/ direita,read only
Linguagens e Máquinas WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE
Análise Dada uma cadeia de terminais w, queremos saber se wL(G) ou não. Se for o caso, poderemos querer achar uma derivação de w. Um algoritmo que pode.
Uma variação do Lema do Bombeamento
Identificando Linguagens Não Regulares
Alfabetos, Palavras e Linguagens
Exercícios Linguagens Formais.
DEDUÇÃO NO CÁLCULO PROPOSICIONAL
G R U P O S - III.
Lema do Bombeamento Linguagens Livres de Contexto
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação
Compiladores, Aula Nº 5 João M. P. Cardoso
Lema do Bombeamento Linguagens Livres de Contexto
Informática Teórica Engenharia da Computação
Ling. Formais e Autômatos AFN-ε
Teoria da Computação Aula 1 Prof. Fabiano Sabha.
Expressões Regulares e Gramáticas
Autómatos de Pilha. UM NOVO MODELO PARA OS AUTÓMATOS FINITOS As linguagens regulares são aceites por autómatos finitos. E as linguagens não regulares?
Inteligência Artificial
Teoria da Computação WILSON ROSA DE OLIVEIRA
Universidade Federal de Campina Grande – UFCG Centro de Engenharia Elétrica e Informática – CEEI Departamento de Sistemas e Computação – DSC Teoria da.
LFA: Unidade 03 – Parte B Engenharia/Ciência da Computação
Estado Final Único para NFAs e DFAs
Redução.
Prof. André Luis Roland Tancredo Engenheiro da Computação e Pesquisador em Desenvolvimento Tecnológico para Semicondutores pelo CNPq Especialista em Microeletrônica.
Linguagens Formais - aula 02
Computabilidade e Linguagens Formais
INE Fundamentos de Matemática Discreta para a Computação
Computabilidade e Linguagens Formais
Engenharia/Ciência da Computação
tópicostópicos itens 01. Terminologia 02. Operações básicas 03. Representação de linguagens 04. Formalização de gramáticas 05. Processo de derivação 06.
Aula 6 1 Análise Lexical Compiladores, Aula Nº 6 João M. P. Cardoso.
Operações com conjuntos Informações importantes. Igualdade de conjuntos Dois conjuntos A e B são considerados iguais quando tem a mesma quantidade de.
COMPILADORES 03 Prof. Marcos.
Informática Teórica Engenharia da Computação
Transcrição da apresentação:

autômatos finitos com transições e o autômato vai do estado p para o estado q sem ler um símbolo de entrada. p q

EXEMPLO 1 e e b e b e b Estando no estado s e recebendo o símbolo b: ler b e ir para p ir para t e então ler b e ir para q ir para t, ir para u e então ler b e ir para r. O conjunto aceito pelo autômato acima é {b, bb, bbb}. s t u q r p

EXEMPLO 2 e e a a a a a a a a q2 q3 q4 q1 q5 q8 q7 q9 q6

O conjunto aceito pelo autômato acima é { x Î {a O conjunto aceito pelo autômato acima é { x Î {a*} | |x| é divisível por 3 ou 5}. A maior vantagem de transições e é a conveniência. Autômato com transições e tem o mesmo poder computacional que afds e afnds

Propriedades de Linguagens Regulares Concatenação de dois conjuntos A e B A•B = AB = { xy | x Î A e y Î B} EXEMPLO. {a, ab} • {b, ba} = {ab, aba, abb, abba} Se A e B são conjuntos regulares, AB também é.

Prova Intuitiva Seja M o autômato para A e N para B. Construir um novo autômato P cujo os estados são a união dos de M e N. Todas as transições de M e N serão transições de P. O estado inicial de M será o de P. Os estados finais de N serão os de P. Finalmente, ligue os estados finais de M ao estado inicial de N com uma transição e.

EXEMPLO 4 Seja A = {aa}, B = {bb} a a b b a a e b b q2 q0 q1 q3 q4 q5

Fecho de Kleene Se A é regular então A* também é. A* = { e} È A È A2 È A3 È … = { x1x2…xn | n ³ 0 e xiÎA , 1 ó i ó n}

Prova Intuitiva Seja M o autômato para A então P para A* é como segue: Comece com todos os estados e transições de M. Adicione um novo estado q e uma transição e de q para o estado inicial de M. Faça q o estado inicial de P. Faça q o único estado final de P. Adicione transições e dos estados finais de M para o estado q.

EXEMPLO 5 Dado o autômato para A {aa}, o para A* : e a a e q q0 q1 q2

Casamento de Padrões e Expressões Regulares O que acontece quando digitamos ‘rm *’ no Unix? E ‘rm *.dvi’? Casamento de padrões é uma aplicação importante da teoria dos afds. Seja å um alfabeto finito. Um padrão é uma cadeia de símbolos de um certo formato representando um conjunto (possivelmente infinito) de cadeias sobre å*.

Casamento de Padrões Padrões: Básicos Compostos Notação: letras gregas a , b , g , … Associado a definição de padrões, temos quais cadeias x Î å* casam com os padrões definidos. Notação: L(a) é o conjunto de cadeias em å* que casam um dado padrão a. L(X) = {x Î å* | X casa com a }

Padrões Básicos e casa com a palava vazia e,L(e) = { e } a para cada símbolo a Î å, L(a) = {a} e casa com a palava vazia e,L(e) = { e } f casa com nada, L(f) = f, o cjto.vazio # casa com qualquer símbolo em å, L(#) = å @ casa qualquer cadeia em å*, L(@)=å*.

Padrões compostos São formados indutivamente usando os operadores: +, Ç, * , ~ , • Suponha que definimos os conjuntos de cadeias L(a) e L(b) casando a e b respectivamente. Então dizemos: x casa com a + b , se x casa ou com a ou com b L(a + b ) = L(a ) È L(b)

X casa com a Ç b se X casa com ambos a e b L(a Ç b ) = L(a) Ç L(b) X casa com ab se existem cadeias y e z tal que y casa com a, z casa com b e x = yz. L(ab) = L(a)•L(b) X casa ~a se X não casa com a. L(~a) = ~ L(a ) = å* \ L(a) Esta definição depende de å.

{ a | a Î å } È {e, f , #, @, +, Ç, ~, *, (, )} X casa a* se x pode ser dividido na concatenação de várias (talvez nenhuma) cadeias finitas, x=x1x2x3…xn, n ³0 tal que cada xi casa com a. L(a*) = {x1x2…x n| n³0 e xiÎL(a),1 £ i £ n} = L(a)0 È L(a)1 È L(a)2 È …= L(a)* Note que Padrões são cadeias de símbolos sobre o alfabeto: { a | a Î å } È {e, f , #, @, +, Ç, ~, *, (, )}

EXEMPLOS å* = L(@) = L(#*) Conjuntos com um único símbolo: se x Î å* , então, x por se só é um padrão e casa somente com a cadeia x, i.e , {x} = L(x) Conjuntos finitos: se x1 , … , xm Î å* , então {x1, x2 , …, xm } = L(x1 + x2 + … + xm )

cadeias contendo pelo menos 3 ocorrências de a: @ a @ a @ a @ cadeias contendo um a seguido mais tarde por um b, isto é cadeias da forma xaybz para algum x, y, z @ a @ b @ å \ { a } # Ç (~a) cadeias sem a ocorrência da letra a (# Ç (~a) ) *

Algumas Questões Importantes Quão difícil é determinar se uma dada cadeia casa um determinado padrão? (Existem algoritmos muitos eficientes, veremos alguns deles. Esta é uma questão prática. Todos os conjuntos são representados por algum padrão? (Não! Veremos, por exemplo, que o conjunto {an bn | n ³ 0} não é representado por nenhum padrão.)

Quais operadores são redundantes? e pois é equivalente a ~(#@) e a f* @ pois é equivalente a #* # se å = a1 , a2 , … , an então # é equivalente a a1 + a2 + … + an . Ç a Ç b é equivalente a ~(~a + ~ b)

Todos os padrões são equivalentes a um padrão usando somente o padrão básico a para a Î å , f e os operadores ~,+ , * e •. Padrões usando somente estes símbolos são chamados expressões regulares.

Evitando Parentesis + e . São associativas, i. e. L(a+(b+g)) = L((a+b)+g) L(a(bg)) = L((ab)g) , e podemos escrever a + b + g a b g Precedência: * • Menor +

Equivalência de Padrões, Expressões Regulares e Autômatos Finitos Teorema: Seja A Í å*. As três afirmações abaixo são equivalentes: (i) A é regular; i.e., A = L(M) para algum autômato finito M. (ii) A = L(a ) para algum padrão a (iii) A = L(a ) para alguma expressão regular a .

Prova: (iii) ® (ii) A implicação (iii) ® (ii) é trivial, uma vez que toda expressão regular é um padrão por definição.

(ii) ® (i) O coração desta prova envolve mostrar que outros conjuntos básicos (correspondendo aos padrões básicos) são regulares, e que conjuntos são fechados sobre operações de fechamento correspondendo aos operadores usados para construir padrões.

- o conjunto unitário { a } é regular, a Î å Note que: - o conjunto unitário { a } é regular, a Î å - o conjunto unitário {Î} é regular - o conjunto vazio f é regular, uma vez que cada um destes conjuntos é um conjunto aceito por algum autômato. a q0 q1 q0 q0 (1) (2)

Mostramos previamente que os conjuntos regulares são fechados sobre o conjunto de operações È, Ç, ~ , *, e, ·, i.e. , se A e B são conjuntos regulares então A È B, A Ç B, ~A = å*\ A, AB e A* são regulares. Seja a um dado padrão. Queremos mostrar que L(a) é um conjunto regular. Procedemos por indução na estrutura de a.

O padrão é de uma das seguintes formas: (i) a, para algum a Î å (vi) b+g (ii) Î (vii) bÇg (iii) f (viii) bg (iv) # (ix) ~b (v) @ (x) b*

São cinco casos base (i) - (v) corres-pondendo aos padrões atômicos e cinco casos de indução correspon-dendo aos padrões compostos. Para (i) - (iii) temos L(a) = {a} para a Î å, L(Î) = {Î} e L(f) = f estes são conjuntos regulares. Para (iv) e (v), argumentamos antes que os operadores # e @ são dundantes logo podemos desconsiderar estes casos.

Para (vi), lembre que L(b+g) = L(b)L(g) pela definição do operador + Para (vi), lembre que L(b+g) = L(b)L(g) pela definição do operador +. Pela hipótese da indução, L(b) e L(g) são regulares. Como conjuntos regulares são fechados sobre a união, L(b+g) = L(b) È L(g) é regular. Para os casos (vii) - (x) use argumen-tos similares aos usados em (vii).

convertendo autômatos em expressões regulares (I) ® (iii) Dado um subconjunto de estados T de um AFND M e estados u e v, construamos a expressão regular: aTuv representando o conjunto de todas as cadeias x tal que existe um caminho de u para v em M rotulado x (isto é , d*(u, x) = v) e todos os estados no caminho, com a possível exceção de u e v estarem em T.

As expressões são construídas por indução no tamanho de T. Base T = f Seja a1, … , ak todos os símbolos em å tal que d (u, ai) = v. afuv = a1 + … + ak se u ¹ v a1 + … + ak + Î se u = v

Indução T ¹ f Escolha um elemento qualquer q Î T aTuv = auvT-{q} + auqT-{q} (aqqT-{q} )* aqvT-{q}

Note que qualquer caminho de u para v com todos os estados intermediários em T ou : (i) nunca visita q : auvT-{q} ou (ii) visita q uma primeira vez: auqT-{q} Seguido por um número finito (≥ zero) de laços de q para q sem visitar q no meio tempo e ficando em q : (aqqT-{q} )* Seguido por um caminho de q para v deixando q pela última vez aqvT-{q}

A expressão: aQsf1 + aQsf2 + … + aQsfk representa o conjunto de cadeias aceitas por M, onde Q é o conjto de todos os estados de M, s é o estado inicial e { f1 , … , fk } é o conjunto de estados finais.

Ex: Converta o autômato em uma expressão regular equivalente . 1 q p 1 r

pp{p,q,r} = 0* + 0*1 ( + 01 + 000*1 )*000* pp{p,q,r} T={p,q,r} Remova q T- {q} pp{p,q,r} = pp{p,r} + pq {p,r}(qq{p,r})* qp{p,r} pp{p,r} = 0* pq{p,r} = 0*1 qq{p,r} =  + 01 + 000*1 qp{p,r} = 000* pp{p,q,r} = 0* + 0*1 ( + 01 + 000*1 )*000*