Linguagens e Máquinas http://www.di.ufpe.br/~if114/ WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE http://www.di.ufpe.br/~wrdo/

Slides:



Advertisements
Apresentações semelhantes
Decidibilidade e Indecidibilidade
Advertisements

Linguagens Livre-de-contexto
FAPE - Curso de Ciência da Computação
FAPE - Curso de Ciência da Computação
Variantes de Máquina de Turing
Linguagem Fabrício Dias
Teoria da Computação MÁQUINA DE TURING (Continuação) Fabrício Dias
I - Noções dum compilador
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
Prof. Yandre Maldonado e Gomes da Costa
TEORIA DA COMPUTAÇÃO Parte III  Máquina de Turing
Teoria da Computação FIC– Ciência da Computação
Análise Léxica (Parte 2)
3 AUTÓMATOS FINITOS.
Ling. Formais e Autômatos Autômatos finitos
Equivalência de Autômatos
Teoria da Computação Sandra de Amo
Complexidade de Linguagens Influência do Modelo de Computação
Linguagens Livres de Contexto
Strings, Linguagens, Autômatos
Linguagens Livre de Contexto
esquerda p/ direita,read only
autômatos finitos com transições e
Identificando Linguagens Não Regulares
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Alfabetos, Palavras e Linguagens
Exercícios Linguagens Formais.
Informática Teórica Engenharia da Computação
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
Computabilidade e Linguagens Formais
Lema do Bombeamento Linguagens Livres de Contexto
Aspectos Formais da Computação CCO 410
Erick Vagner Cabral Igor Lucena Vitor Baptista
Informática Teórica Engenharia da Computação
SIPSER – Capítulo 3: A tese de Church-Turing
Ling. Formais e Autômatos AFN-ε
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
Circuitos Lógicos e Álgebra de Boole
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.
Máquinas de Turing.
Linguagens Formais e Compiladores
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
MÁQUINAS DE TURING Acadêmicos: Karen Juliani Tosta Tomaz RA – 47566
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.
Colégio da Imaculada Colégio da Imaculada Curso Técnico em Informática
COMPILADORES 03 Prof. Marcos.
Informática Teórica Engenharia da Computação
Informática Teórica Engenharia da Computação. REDUTIBILIDADE Uma redução é uma maneira de converter um problema em outro Uma redução é uma maneira de.
Transcrição da apresentação:

Linguagens e Máquinas http://www.di.ufpe.br/~if114/ WILSON ROSA DE OLIVEIRA DEPARTAMENTO DE INFORMÁTICA UFPE http://www.di.ufpe.br/~wrdo/

Ementa Bibliografia Introdução Autômatos Finitos Expressões Regulares Gramáticas Regulares Equivalência entre os modelos Propriedades de Linguagens Regulares Gramáticas Livre de Contexto Autômatos a Pilha Máquina de Turing Autômatos “Linear - Bounded” Linguagens Sensíveis ao Contexto A Hierarquia de Chomsky Introduction to Automata Therory, Languages and Computation John E. Hopcroft, Jeffrey D. Ulman. Notas de Teoria da Computação: Benedito M. Acioly e Benjamin R.C. Bedregal. Disponível Eletronicamente em http:/www.di.ufpe.br/~if114

Motivação O objetivo do curso é entender os fundamentos da computação. O que significa uma função ser computável Existem funções não - computáveis Como a capacidade computacional depende das estruturas de programação

Conceitos Estado Transição Não - Determinismo Redução

Modelos de Computação Autômato Finito, Expressões Regulares Autômato a Pilha Autômatos Lineares Limitados Máquinas de Turing Hierarquia de Chomsky Linguagens e Gramáticas Regulares Linguagens e Gramáticas Livre de Contexto Linguagens e Gramáticas Sensível ao Contexto Linguagens e Gramáticas sem Restrição

Definições Preliminares Símbolo - letras e dígitos Alfabeto - Conjunto finito de símbolos Ex: å = { 0,1,2,…,9} å = {a,b,c,…,z} å = {0,1 } cadeia (string) (sobre å): qualquer seqüência finita de elementos de å. Ex.: å = { a,b } aabab, bb, abab Notação: x, y, z.

tamanho de uma Cadeia x é o número de símbolos em x. Notação: | x | Ex: | aabab | = 5 | abab | = 4 Cadeia Vazia : e ou λ | λ | = 0 a n Significa uma cadeia de a ‘s de tamanho n. Ex.: a5 = aaaaa a1 = a a0 = λ

Concatenação de x com y é gerar uma cadeia xy colocando x junto de y. obs.: xy ¹yx Ex: x = aa y = bb xy = aabb yx = bbaa

Propriedades da Concatenação Monóide Associatividade (xy) z = x (yz) Identidade da Cadeia Vazia λ x = x λ = x |xy| = | x| + | y| aman = am+n  m,n  0

OPERAÇÕES SOBRE CADEIAS å * é o conjunto de todas as cadeias sobre o alfabeto å . Ex.: {a,b}* = {e,a,b,aa,ab,ba,bb,…} { a }* = {λ,a,aa,aaa,aaaa,…} = { a n | n ³ 0}. f é o conjunto vazio. f * = {λ} por definição.

Diferença entre cadeias e conjuntos. {a,b} = {b,a}, mas ab ¹ ba {a,a,b} = {a,b}, mas aab ¹ ab f ® conjunto com nenhum elemento; vazio. {λ} ® conjunto com 1 elemento, a cadeia vazia. λ ® cadeia vazia, que não é conjunto.

ESTADO O Estado de um sistema é uma descrição do sistema; uma fotografia da realidade congelada no tempo. Um estado dá todas as informações relevantes necessárias para determinar como o sistema pode evoluir a partir daquele ponto.

TRANSIÇÕES São mudanças de Estados: Expontâneas Em resposta a uma entrada externa Instantâneas Exemplos de sistemas de transições de estado: Circuitos Eletrônicos Relógios Digitais Elevadores O jogo da vida

Sistemas de Transições de Estados Finitos: Consiste de somente vários estados finitos e transições sobre estes estados. Modelado através de Autômatos Finitos

AUTÔMATOS FINITOS autômato finito determinístico : M = (Q, å, d, s0, F), onde: Q é um conjunto finito; os elementos de Q são chamados os estados; å é um conjunto finito; o alfabeto de entrada; d : Q x å à Q é a função de transição. Se M estar no estado Q e vê a entrada a, o autômato vai para o estado d (q,a); s0 Î Q é o estado inicial; F Í Q; os elementos de F são os estados finais ou estados de aceitação.

EXEMPLO 1 M = (Q, å, d, q0, F) Q = {q0, q1, q2, q3 } å ={ a, b} d(q0,a) = q1 d(q1,a) = q2 d(q2,a) = d (q3,a) = q3 d(q,b) = q ; q Î { q0, q1, q2, q3 } F = { q3 }

TABELA DE TRANSIÇÃO Estados Entradas a b Õq0 q1 q0 q1 q2 q1 q2 q3 q2 q3 F q3 q3

DIAGRAMA DE TRANSIÇÃO b b b a, b a a a q0 q1 q2 q3

x Î L(M) x = baaba d(q0,b) = q0 d(q0,a) = q1 d(q1,a) = q2 q3 Î F Þ X Î L(M) d(q2,b) = q2 d(q2,a) = q3

x Ï L(M) x = bbaba d(q0,b) = q0 d(q0,a) = q1 q2 Ï F Þ X Ï L(M)

EXEMPLO 1 M estará no estado q0 ao ver nenhum a M estará no estado q1 ao ver um a M estará no estado q2 ao ver dois a’s M estará no estado q3 ao ver três ou mais a’s.

FUNÇÃO DE TRANSIÇÃO GENERALIZADA d* : Q x å* ® Q d*(q, Î) = q (1) d*(q, xa) =d (d*(q,x), a) (2) d* Mapeia um estado q e uma cadeia x em um novo estado d*(q, x). d* É uma versão de múltiplos passos de d .

observações Eq.1 é a base da indução e diz que sem ler um símbolo de entrada o autômato não pode mudar de estado. Eq. 2 é o passo da indução e diz como encontrar o estado depois de ler uma cadeia não-vazia xa . encontre o estado, p = d*(q, x), depois de ler x e compute o estado d(p, a). d* e d são iguais em cadeias de tamanho 1. d*(q,a)= d*(q, Îa) a = Îa = d(d*(q,Î), a) por 2, x= Î = d(q,a) por 1.

L(M) = { x Î å* | d* (s0, x) Î F} ACEITAÇÃO DE CADEIAS uma cadeia x é aceita por M se d*(s0, x) Î F e rejeitada por M se d*(s0, x) Ï F conjunto ou linguagem aceita por M L(M) = { x Î å* | d* (s0, x) Î F} A Í å* é REGULAR se A = L(M) para algum autômato finito M. {x Î {a,b)* | x contém pelo menos três a’s} é um conjunto REGULAR.

EXEMPLO 2 M = (Q, å, d, q0, F) Q = {q0, q1, q2, q3 å = {0, 1} d (q0 ,1) = q1 0 1 d (q1 ,1) = q0 d* (q0, 11) = q0 q0F q2 q1 d (q0 ,0) = q2 d* (q0, 110) = q2 q1 q3 q0 d (q2 ,1) = q3 d* (q0, 1101) = q3 q2 q0 q3 d (q3, 0) = q1 d* (q0, 11010)=q1 q3 q1 q2 d (q1 ,1) = q0 d* (q0, 110101)=q0 q0 Î F Þ x Î L(M)

EXEMPLO 2 L(M) é o conjunto de cadeias com um número par de zeros e um número par de uns. 1 q1 q0 1 1 q2 q3 1

EXEMPLO 3 Considere o conjunto {xaaay | x,y Î {a,b}*} a b q0 q1 q0 baabaaab Î L(M) q1 q2 q0 babbabab Ï L(M) q2 q3 q0 q3 F q3 q3

EXEMPLO 3 Usar os estados para contar o número de a’s consecutivos que vimos. Se você não viu 3 a’s consecutivos e você vê um b, volte para o começo. Uma vez visto 3 a’s consecutivos permaneça no estado de aceitação. b a, b a a a q0 q1 q2 q3 b b

EXEMPLO 4 Considere o conjunto {x Î {o,1}* | x representa um múltiplo de 3 em binário}. zeros na frente são permitidos  representa o número zero binário decimal 0 0 11 3 110 6 1001 9 1100 12 1111 15 10010 18

EXEMPLO 4 q0 q1 q2 1

Propriedades das Linguagens Regulares Para A, B Í å* temos as seguintes definições: A È B = { x | x Î A ou x Î B} A Ç B = { x | x Î A e x Î B} ~A = { x Î å* | x Ï A} Mostraremos que para A e B regulares: A È B, A Ç B e ~A também são regulares.

A Construção do Produto Assuma que A e B são regulares, logo existem autômatos M1 = (Q1, å, d1, s1, F1) M2 = (Q2, å, d2, s2, F2) com L(M1) = A e L(M2) = B Para mostrar que A Ç B é regular, vamos construir o autômato M3 tal que L(M3) = A Ç B .

Intuitivamente ... M3 terá os estados de M1 e M2 codificado de alguma maneira no seus estados. Para uma entrada x Î å*, M3 simulará M1 e M2 simultaneamente em x, aceitando x se somente se ambos M1 e M2 aceitarem.

Intuitivamente ... M3 terá os estados de M1 e M2 codificado de alguma maneira no seus estados. Para uma entrada x Î å*, M3 simulará M1 e M2 simultaneamente em x, aceitando x se somente se ambos M1 e M2 aceitarem.

Formalmente ... Seja M3 = (Q3 , å,d3, s3, F3 ) onde Q3 = Q1 x Q2 = { (p,q) | p Î Q1 e q Î Q2 } F3 = F1 x F2 = { (p,q) | pÎF1 e qÎF2} s3 = (s1,s2) d3 : Q3 x å ® Q3 a função transição definida por: d3 ( (p,q), a) = (d1(p,a), d2(q,a)) d3* ((p,q)), e ) = (p,q) d3* ((p,q)), xa) = d3 (d3*((p,q),x),a)

Lema: Para todo x Î å*, d3* ((p,q)), x) = (d*1(p,x), d*2((q, x)) Prova: Por indução em |x| Base: Para |x| = 0, i.e., x = e d*3 ((p,q)),e) = (p,q) = (d*1(p,e), d*2 ((q,e)) . Passo: Assumindo que o lema é válido para xÎå*, mostraremos que é válido para xa, onde a Î å. d*3 ((p,q)), xa) = d3 (d3* ((p,q), x), a) Def. de d3* = d3 ( (d1*(p, x), d2* (q, x) ), a) hipótese da ind. = (d1 (d1* (p, x), a), d2* (d2 (q, x) a) Def. de d3 = (d1* (p, xa), d2* (q, xa) ) Def. de d1* e d2* q.e.d.

Teorema. L(M3) = L(M1) Ç L(M2) Prova: Para todo x Î å*, x Î L(M3) Û d3* (s3, x) Î F3 definição de aceita Û d3* ((s1,s2),x) Î F1 x F2 definição de s3 e F3 Û (d1* (s1,x),d2*(s2,x)) Î F1 x F2 lema Û d1*(s1,x)ÎF1, e d2*(s2,x)ÎF2 definição do x Û x Î L(M1) e x Î L(M2) def. de aceita. Û x Î L(M1) Ç x Î L(M2) def. de interesse q.e.d.

Para mostrar que ~A é Regular: Tome o autômato aceitando A e torne os estados finais com os não-finais. O autômato resultante aceita exatamente o que o autômato original rejeita, logo o conjunto ~A A È B = ~ ( ~A  ~B)

AUTÔMATO FINITO NÃO-DETERMINÍSTICO O próximo estado não é necessariamente unicamente determinado pelo estado atual e pelo símbolo de entrada. Podemos ter zero, uma ou mais transições de estado com o mesmo símbolo de entrada.

A = { x Î {0, 1}* | o quinto símbolo da direita para esquerda é 1} Exemplo 1: A = { x Î {0, 1}* | o quinto símbolo da direita para esquerda é 1} 0,1 11010010 Î A 11000010 Ï A Não - determinístico: - q1 tem duas transições com o símbolo 1. - q6 não tem transições. 0,1 0,1 0,1 1 0,1 q1 q2 q3 q6 q4 q5

Exemplo 2 q0 tem duas transições com 0 e duas com 1 q1 não tem transição com 0 q3 não tem transição com 1 0,1 0,1 q3 q4 q0 1 q1 1 q2 0,1

Exemplo 2 (cont.) Uma seqüência de entrada a1a2 …an é aceita por um autômato finito não determinístico se existe uma seqüência de transições, correspondendo a seqüência de entrada, que leva do estado inicial algum dos estados finais. 01001 é aceita por este autômato pois a seqüência de transições é q0 q0 q0 q3 q4 q4 aceita todos as cadeais com dois 1’s ou dois 0’s consecutivos.

Obs.: Autômatos determinísticos são um caso especial de autômatos não determinísticos. q0 q0 q0 q0 q0 q0 q3 q1 q3 q3 q1 q4 q4 1 1 1 1

Definição: Um autômato finito não - determinístico (AFND) é uma 5 - upla (Q,å,d,q0,F) onde Q, å, q0, e F tem o mesmo significado que para autômato finitos determinísticos (AFD) e d é um mapeamento de Q x å ® 2Q. d (q, a) é o conjunto de todos os estados p tal que existe uma transição (com o símbolo a) de q para p.

A função d do autômato anterior é dada abaixo. Entrada Estado 0 1 q0 {q0,q3} {q0, q1} q1 f {q2 } q2 {q2 } {q2 } q3 {q4 } f q4 {q4 } {q4 }

d* : Q x å* ® 2Q 1) d*(q,e) = {q} 2) d*(q,wa) = { p | para algum rÎd*(q,w), pÎd (r, a)} Começando em q e lendo a cadeia w seguida do símbolo a nós podemos estar no estado p sss um estado possível de se estar após ler w é r e de r podemos ir para p lendo a.

X = 01001 d (q0 , 0) = {q0, q3 } d (q0, 01) = d (d (q0, 0), 1) = d ( {q0, q3}, 1) = d (q0 ,1) È d (q3,1) = { q0, q1} d (q0, 010) = { q0, q3 } d (q0, 0100) = {q0, q3, q4 } d (q0, 01001) = {q0, q1, q4 }