A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Teoria da Computação WILSON ROSA DE OLIVEIRA

Apresentações semelhantes


Apresentação em tema: "Teoria da Computação WILSON ROSA DE OLIVEIRA"— Transcrição da apresentação:

1 Teoria da Computação WILSON ROSA DE OLIVEIRA
Departamento de Estatística e INFORMÁTICA UFRPE

2 Objetivo Ementa Dar aos alunos noção formal de algoritmo, computabilidade e do problema de decisão, de modo a deixá-lo consciente das limitações da ciência da computação. Aparelhá-los com as ferramentas de modo a habilitá-lo a melhor enfrentar a solução de problemas com o auxílio do computador. Dar subsídios para os alunos poderem definir linguagens de programação, isto é, sua sintaxe e semântica, através do estudo das gramáticas formais. Autômatos: Finitos, a Pilha e Máquina de Turing (linearmente limitada). Linguagens Formais: Regular, Livre e Sensível ao Contexto, Estrutura de Frases. Hierarquia de Chomsky. Aplicações em compiladores. Computabilidade: modelos computacionais (funções recursivas, linguagens de programação), funções não computáveis, problema da parada, decidibilidade.

3 Bibliografia Introdução à Teoria de Autômatos, Linguagens e Computação. John E. Hopcroft, Jeffrey D. Ulman e Rajeev Motwani. Trad. da segunda edição, Editora Campus. (Livro Texto) Acióly, Benedito M.; Bedregal, Benjamín R. C.; Lyra, Aarão. Introdução à Teoria das Linguagens Formais, dos Autômatos e da Computabilidade. Edições UnP, 2002. BIRD, Richard. Programs and Machines - an introduction to the theory of computation. London: John-Wiley, 1976. BRAINERD,W. S.; LANDWEBER L. H.  Theory of Computation. New York: Wiley, 1974. DIVERIO, Tiaraju A.; MENEZES, Paulo F. Blauth. Teoria da Computação – Máquinas Universais e Computabilidade. 2a. Edição. Porto Alegre: Sagra-Luzzatto, p.

4 Bibliografia HOPCROFT, J.; ULLMAN, J.  Introduction to Automata Theory, Languages and Computation. Addison-Wesley, 1979. LEWIS, H. R.; PAPADIMITRIOU, C. H. Elementos de Teoria da Computação 2a. Edição. Bookman p. Menezes, P.F.B. LINGUAGENS FORMAIS E AUTÔMATOS. Série Livros Didáticos. Instituto de infromática da UFRGS. ( 3 Edição). ISBN MANNA, Zohar. Mathematical Theory of Computation. New York: McGraw-Hill, 1974. SERNADAS, C. Introdução à Teoria da Computação.  Lisboa: Editorial Presença, 1993.

5 Avaliação DATA DAS PROVAS: 1a. VA: 26/09/2005 (segunda);
Final: 19/12/2005 (segunda);

6 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

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

8 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

9 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.

10 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 = λ

11 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

12 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

13 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.

14 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.

15 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.

16 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

17 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

18 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.

19 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 }

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

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

22 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

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

24 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.

25 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 .

26 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.

27 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.

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

29 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

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

31 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

32 EXEMPLO 4 Considere o conjunto {x Î {0,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

33 EXEMPLO 4 q0 q1 q2 1

34 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.

35 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 .

36 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.

37 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.

38 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)

39 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.

40 Teorema. L(M3) = L(M1) Ç L(M2)
Prova: Para todo x Î å*, x Î L(M3) Û d3* (s3, x) Î F 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.

41 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)

42 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.

43 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 Î A Ï 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

44 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

45 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.

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

47 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.

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

49 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.

50 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 }

51 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

52 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

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

54 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

55 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 é.

56 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.

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

58 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}

59 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.

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

61 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 å*.

62 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 }

63 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 å*,

64 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)

65 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 å.

66 { 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 , +, Ç, ~, *, (, )}

67 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 )

68 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 } # Ç (~a) cadeias sem a ocorrência da letra a (# Ç (~a) ) *

69 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.)

70 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)

71 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.

72 Evitando Parêntesis + 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 +

73 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 .

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

75 (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.

76 - 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)

77 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.

78 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*

79 São cinco casos base (i) - (v) correspondendo aos padrões atômicos e cinco casos de indução correspondendo 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 # são redundantes logo podemos desconsiderar estes casos.

80 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 argumentos similares aos usados em (vii).

81 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.

82 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

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

84 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}

85 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.

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

87 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* qq{p,r} =  *1 qp{p,r} = 000* pp{p,q,r} = 0* + 0*1 ( *1 )*000*

88 Identificando Linguagens Não Regulares
Linguagens regulares podem ser finitas; Uma linguagem é regular sss, em processando qualquer cadeia, a informação a ser armazenada em qualquer estágio é estritamente limitada.

89 Exemplo: A linguagem L={ an bn|n0} não é regular.
Suponha que L é regular. Então existe um AFD M=(Q, {a,b},S,q0,F) que a reconhe-ce. Seja k o número de estados de M. Consideremos o funcionamento de M na entrada anbn, onde n k

90 aaaaaaaaaabbbbbbbbbb
n n q r Como nk, deve existir algum estado p tal que M está em p mais de uma vez enquanto percorrendo a parte inicial da seqüência de a’s (princípio da casa dos pombos).

91 Quebre anbn em 3 pedaços u, v, w onde v é a cadeia de a’s percorrida entre duas ocorrências de p.
aaaaaa aaaa bbbbbbbbbb q0 u p v p w r

92 Seja j=|v|>0 (j=4, no exemplo)
* (q0,u) = p * (p,v) = p * (p,w) = r  F Logo podemos remover v o que resultaria numa cadeia ser erroneamente aceita:

93 *(q0,uw) = *(*(q0,u),w) = *(p,w) = r  F aaaaaa bbbbbbbbbb q p r u w

94 Lema do Bombeamento (Pumping Lemma)
TEOREMA: Seja L uma linguagem regular. Então existe um inteiro positivo m, tal que w  L com |w| m pode ser decomposta como w= xyz com |xz|m e |y|1 tal que wi=xyiz está também em L para todo i = 0,1,2, ...

95 Prova Sejam q0, q1,…, qn os estados do AFD que reconhece L. Agora tome uma cadeia w  L tal que |w|=km=n+1. Seja q0,qi,qj, … ,qf o conjunto de estados do autômato no reconhe-cimento de w. Como esta cadeia tem no mínimo n+1 entradas, pelo menos um estado deve ser repetido, e tal repetição não deve começar após o n-ésimo movimento.

96 Portanto, a sequência deve ter a seguinte forma
q0,qi,qj, … ,qr, … ,qr, …, qf indicando que devem existir subcadeias x, y, z de w tal que *(q0,x)=qr, *(qr,y)=qr, *(qr, z)=qf com |xz|  n+1 = m e |y|1. Donde segue imediatamente que *(q0,xz)=qf, *(q0, xy2z)=qf, *(q0,xy3z)=qf q.e.d

97 Gramáticas Gramáticauma ferramenta comum e poderosa para definir linguagens. Definição: Uma gramática G é uma quádrupla G=(V, T, S, P) onde: V é um conjto finito de variáveis ou símbolos não-terminais; T é um conjunto finito de símbolos terminais; S  V é um símbolo especial chamado de símbolo inicial ou variável de início; P é um conjunto finito de produções

98 As produções são aplicadas como segue:
As regras de produção são da forma xy, onde x é um elemento de (VT)+ e y está em (VT)*. As produções são aplicadas como segue: dada uma cadeia w da forma w=uxv, dizemos que a produção é aplicável a esta cadeia e podemos usá-la para trocar x por y, obtendo assim uma nova cadeia z=uyv Isto é escrito por wz (w deriva z ou z é derivada de w ou z deriva de w).

99 Se w1w2...wn, dizemos que w1 deriva wn e escrevemos w1*wn
* indica que foi tomado um número não-especificado de etapas (inclu-indo zero) para derivar wn de w1. Logo w*w sempre se dá. Para indicar que pelo menos uma produção foi aplicada, escreve-mos w+v

100 Aplicando as regras de produção em ordens diferentes, uma gramática pode gerar muitas cadeias. O conjunto de todas tais cadeias é a linguagem definida ou gerada pela gramática.

101 Linguagem Gerada Definição: Seja G = (V, T, S, P) uma gramática. Então o conjun-to L(G) = {wT* | S*w} é a linguagem gerada por G. Se w  L (G), então a sequência Sw1w2 … wnw é uma derivação da sentença (ou palavra) w.

102 Exemplo G = <{S}, {a,b}, S, P> onde P é dado por SaSb e S
Então SaSb  aaSbb  aabb Logo podemos escrever S*aabb Uma gramática define completamen-te L(G), porém pode não ser fácil obter uma descrição explícita da linguagem a partir da gramática. Neste exemplo, no entanto, não é difícil conjecturar que L(G)={anbn|n0}

103 Gramáticas Regulares Uma gramática G = <V, T,S,P> diz-se linear à direita se todas as produções são da forma A  xB ou Ax onde A, B  V, e x  T*. e linear à esquerda se todas as produções são da forma AxB Ax

104 Uma gramática regular é uma que é ou linear à direita ou linear à esquerda.
Observe que numa gramática regular no máximo aparece uma variável no lado direito de qualquer produção. Além disso, essa variável está mais à esquerda ou mais a direita de qualquer produção.

105 Exemplos G1 = ({s},{a,b},S,P1), P1: SabS|a é linear à direita.
SabS  ababS  ababa L (G1) é a linguagem L((ab)*a) G2 = ({S,S1,S2},{a,b},S,P2), com produções SS1ab, S1S1 ab|S2, S2a é linear à esquerda. S S1abS1ababS2ababaabab L(G2) é a linguagem L(a(ab)*)

106 Cuidado! A gramática G=({S,A,B},{a,b},S,P) com produções
SA AaB| BAb não é regular!

107 Gramáticas Lineares À Direita Geram Linguagens Regulares
Construir um AFND que simula as derivações de uma gramática linear à direita. Ab…cDAb…cdE por DdE O AFND vai do estado D para o estado E quando o símbolo d for encontrado.

108 Teorema. Seja G = (V, T, S, P) uma gramática linear à direita
Teorema. Seja G = (V, T, S, P) uma gramática linear à direita. Então L(G) é uma linguagem regular. Prova. Assumir V={V0,V1,…,Vp}, com S=V0 e que temos produ-ções da forma V0v1Vi, Viv2Vj, …, ou Vnvl, …

109 Se w é uma cadeia em L(G), então por causa das formas das produções em G, a derivação deve ter a forma da equação acima. V0 v1Vi  v1v2Vj * v1v2… vk Vn  v1v2… vk ve = w

110 O autômato a ser construído repro-duzirá a derivação, consumindo cada um desses v’s.
O estado inicial do autômato será ro-tulado V0, e para cada Vi existirá um estado não final rotulado Vi. Para cada Via1a2…amVj definire-mos  tal que *(Vi,a1a2…am)=Vj Para cada Via1a2…am , *(Vi,a1a2…am)=Vf, onde Vf é um estado final. Os estados intermedi-ários não são de interesse e podem ser dados rótulos arbitrários.

111 a a am ... representa Via1a2…amVj a a am representa Via1a2…am vi vj vi vf

112 Suponha agora que w  L (G)
Suponha agora que w  L (G). No AFND existe uma aresta de V0 a Vi rotulada v1, de Vi a Vj rotulada v2, etc., tal que Vf  *(V0, w), e w é aceita por M. Inversamente, suponha que w é aceita por M. Para aceitar w o autômato tem de passar pela sequência de estados V0, Vi,…,Vf usando caminhos rotulados v1,v2,…,vl

113 V0v1Viv1v2Vj*v1v2…vkVk
Portanto, w deve ter a forma w=v1v2…vkvl e a derivação V0v1Viv1v2Vj*v1v2…vkVk  v1v2…vkvl é possível. Logo W está em L(G), e assim o teorema está provado.

114 Exemplo Construir um autômato que aceita a linguagem gerada pela gramática V0aV1 V1abV0 |b começamos do grafo de transição com vértices V0, V1 e Vf.

115 A primeira regra de produção cria uma aresta rotulada a entre V0 e V1
A primeira regra de produção cria uma aresta rotulada a entre V0 e V1. Para segunda regra, precisamos introduzir um vértice adicional tal que existe um caminho rotulado ab entre V1 e V0.

116 Finalmente, precisamos adicionar uma aresta rotulada b entre V1 e Vf
A linguagem gerada pela gramática e reconhecida pelo autômato é a linguagem regular L ((aab)*ab) b a v0 v1 vf b a v2

117 Gramáticas Lineares À Direita Para Linguagens Regulares
Começamos agora do AFD para a linguagem e invertemos a construção do teorema anterior Os estados do AFD tornam-se as variáveis da gramática, e Os símbolos que causam as transições tornam-se os terminais nas produções

118 Teorema: Se L é uma linguagem regular sobre o alfabeto , então existe uma gramática linear à direita G = (V,,S,P) tal que L = L(G).

119 Prova: Seja M = (Q,,,q0, F) um AFD que aceita L
Prova: Seja M = (Q,,,q0, F) um AFD que aceita L. Assumiremos que Q = {q0,q1,…, qn) e  = {a1, a2,…am}. Vamos construir uma gramática linear à direita G = (V, , S, P) com V = {q0, q1,…,qn} e S = q0. Para cada transição  (qi, aj) = qk de M, colocamos em P a produção qiajqk. Além disso, se qk está em F, acrescentamos a P a produção q.

120 Para M aceitar essa cadeia ele deve se movimentar via
Primeiro mostramos que G defini-da dessa maneira pode gerar toda cadeia em L. Considere w  L da forma w = aiaj…akal. Para M aceitar essa cadeia ele deve se movimentar via  (q0, ai) = qp,  (qp, aj) = qr, ...  (qs, ak) = qt,  (qt, al) = qf  F

121 q0aiqpaiajqr*aiaj…akqt  aiaj…akalqfaiaj…akal
Por construção, a gramática terá uma produção para cada um desses ’s. Portanto, podemos fazer a derivação q0aiqpaiajqr*aiaj…akqt  aiaj…akalqfaiaj…akal com a gramática G, e w  L(G).

122 Inversamente, se w  L(G), então sua derivação deve ter a forma da equação acima, mas isto implica que  (q0, ai, aj…akal) = qf, completando a prova. q.e.d.

123 Equivalência Entre Linguagens Regulares E Gramáticas Regulares
Os resultados anteriores estabele-cem a conexão entre linguagens regulares e gramáticas lineares à direita. Podemos fazer uma conexão análo-ga entre linguagens regulares e gramáticas lineares à esquerda, mostrando assim, a equivalência de gramáticas e linguagens regulares.

124 Teorema. Uma linguagem é regular se e somente se existe uma gramáti-ca regular G tal que L = L(G).

125 Álgebra de Kleene e Expressões Regulares
α  β significa que L(α)=L(β). α+(β+γ)  (α+β)+γ α+β  β+α α+  α α+α  α α(βγ)  (αβ)γ αε  εα  α α  α  

126 α(β+γ)  αβ+αγ (α+β)γ  αγ+βγ ε+αα*  ε+α*α  α* β+αγ ≤ γ  α*β ≤ γ β+γα ≤ γ  βα* ≤ γ algumas consequências úteis: (αβ)*α  α(βα)* (α*β)*α*  (α+β)* α*(βα*)*  (α+β)* (ε+α)*  α*

127 pp{p,q,r} = 0* + 0*1 ( + 01 + 000*1 )*000*
a expressão abaixo: pp{p,q,r} = 0* + 0*1 ( *1 )*000* pode ser simplificada uma vez que:  *1   + 0( + 00*)1   + 00*1 logo: pp{p,q,r} = 0* + 0*1 ( + 00*1)*000*

128 Usando o Lema do Bombeamento
Ilustaremos o uso do lema para mostrar que A={anbm|nm} não é regular. Se A é regular, sejam w=akbk e m como no lema com decompo-sição x, y e z

129 possíveis decomposições:
y seria composta só de a’s; y seria composta só de b’s; y não pode ser composta de a’s e b’s. no primeiro caso w0A; no segundo, w2A

130 C={an! | n0} não é regular!
Se C é regular, sejam w=ak! e m como no lema com decomposi-ção x, y e z e tamanhos j, n e l. Pelo lema para cada i existe p tal que |wi|=p!. Então seja i=(k+1)!+1. p! = |wi| = j+in+l = k!+(i-1)n = = k!+(k+1)!n = k!(1+n(k+1)) dividindo os extremos por k! : p(p-1)(p-2)…(k+2)(k+1)=1+n(k+1) o que é um absurdo!!

131 Um Truque algumas vezes ajuda utilizar o truque de se tomar interseção na prova de que algum conjunto não é regular. se encontrarmos L regular com A∩L não regular (conhecido) então A não é regular

132 rev A = {bman |n ≥ m} (exercício).
Exemplos D={x є {a,b}*| |x|a=|x|b} não é regular pois D∩L(a*b*)={anbn|n≥0} Se A={anbm|n ≥ m} fosse regular tam-bém o seria rev A = {bman |n ≥ m} (exercício). Trocando-se a’s por b’s obtemos A’={ambn|n ≥ m} que seria também regular. Mais aí a interseção A∩A’={anbn|n≥0} seria regular, o que é um absurdo!!

133 Exercícios 1.Construir um AFD que reconhe-ce a linguagem gerada pela gra-mática SabA; AbaB; BaA | bb 2.Construir uma gramática linear à direita para a linguagem L ( (aab* abab)*)

134 Exercícios 3. Dê expressões regulares para cada um dos seguintes subconjuntos de {a,b}*: (a) {x|x contém um número par de a’s} (b) {x|x contém um número ímpar de b’s} (c) {x|x contém um número par de a’s ou um número ímpar de b’s} (d) {x|x contém um número par de a’s e um número ímpar de b’s}

135 Exercícios 4. Dê AFD aceitando o conjunto de cadeias casando com as seguintes expressões regulares: (a) (000* + 111*)* (b) (01 +10) (01 +10) (01 +10) (c) (0 + 1 (01* 0)* 1)*

136 Exercícios 5. Mostre que os conjuntos abaixo não são regulares:
(a) {anbm | n=2m} (b) {x{a, b, c}* |x é palindrome, I.e., x=rev(x)} (c) {x{a, b,c}* | o tamanho de x é um quadrado} (d) O conjunto PAREN de cadeias de parentesis balanceada. Por exemplo, a cadeia ( ( ( ) ( ) ) ( ) ) está em PAREN mas a cadeia ) ( ( ) não está.

137 Uma variação do Lema do Bombeamento
Reformularemos o enunciado do Lema de maneira a torná-lo mais facilmente aplicado em algumas situações. A reformulação permitirá o uso de um método de prova baseado num jogo contra o diabo

138 Variação do Lema Teorema. Seja A um conjunto regular. Então a seguinte propriedade se dá sobre A: (P) Existe k≥0 tal que para quais_quer cadeias x,y,z com xyzA e |y|≥k, existem cadeias u,v,w tais que y=uvw, v≠ε, e para todo i≥0, a cadeia xuyivwzA

139 Negando (P) Teorema. Seja A um conjunto de cadeias e suponha que:
(~P) Para todo k≥0 existem cadeias x,y,z com xyzA e |y|≥k, e para todas cadeias u,v,w tais que y=uvw, v≠ε, e existe i≥0, tal que cadeia xuyivwzA. Então A não é regular.

140 Jogando contra o diabo O diabo quer mostrar que A é regular e voçê que não! Ele então pega k. Você vai escolhe xyzA e |y|≥k. Daí ele pega u,v,w tais que y=uvw, v≠ε, Você mostra o i≥0, com xuyivwzA

141 xuv0wz=xuwz=ak_mbakA
Exemplo de Uso No exercício 5 último foi pedido para mostrar que {x{a, b, c}* |x é palíndrome, i.e., x=rev(x)} não é regular. Dado k do diabo basta escolher x= ε, y=ak e z=bak. Qualquer escolha u,v,w do diabo com, digamos |v|=m>0, basta escolher i=0 e xuv0wz=xuwz=ak_mbakA

142 Minimização de Estados remover estados inalcançáveis ou colapsando estados equivalentes.
b a a,b a,b b a a a b b a b b a a b

143 Um autômato mínimo b a a b b a a,b

144 Resumindo ... dado M = (Q, å, d, s, F):
Livrar_se dos estados inalcançáveis, i.e. dos estados q tais que não existe cadeia xå * tal que d*(s,x)=q. Colapse estados equivalentes

145 Mais exemplos a a,b a,b a,b a,b a,b b a,b a a a,b a,b b a,b b a,b b a

146 Ainda mais exemplos a a a,b a,b b a,b a,b b a,b b a,b a

147 A Construção do Quociente
Como saber com segurança que dois estados podem ser colapsados como fazer o colapso formalmente? como determinar se mais colapsos podem ser feitos?

148 p=d*(s,x)F e q=d*(s,y)F
nunca colapsaremos um estado que rejeita com um que aceita: p=d*(s,x)F e q=d*(s,y)F colapsar p com q aceitar y ou rejeitar x. o colapso de p e q implica no colapso de d(p,a) com d(q,a)

149 xå*(d*(p,x)Fd*(q,x)F)
A equivalência Logo, p e q não podem ser colapsados se d*(p,x)F e d*(q,x)F Então definamos uma relação de equivalência ≈ sobre Q por: p ≈ q se, e somente se xå*(d*(p,x)Fd*(q,x)F)

150 não é difícil mostrar que de fato ≈ é uma relação de equivalência.
[p]:={q|q≈p} p≈q sss [p]=[q]

151 O Autômato Quociente Dado M, definamos M/≈ = (Q’,å, d’,s’, F’) onde:
Q’={[p] | pQ} d’([p],a)=[d(p,a)] s’=[s] F’={[p] | pF}

152 Resultados Úteis Lema 1. Se p≈q, então d(p,a)≈d(q,a). Equivalentemente, se [p]=[q] então [d(p,a)]=[d(q,a)]. Lema2. pF sss [p]F’. Lema3. d’*([p],x)=[d*(p,x)]

153 Teorema. L(M/≈)=L(M) Prova. Para x  å*,
x  L(M/≈) sss d’*(s’,x)  F’ def. de aceita sss d’*([s],x)  F’ def. de s’ sss [d*(s,x)]  F’ lema 3 sss d*(s,x)  F lema 2 sss x  L(M) def. de aceita qed

154 M/≈ não pode ser mais colapsado
Defina [p]~[q] sss xå*(d’*([p],x)F’d’*([q],x)F’)

155 xå*(d’*([p],x)F’d’*([q],x)F’)
[p]~[q] xå*(d’*([p],x)F’d’*([q],x)F’) xå*([d*(p,x)]F’[d*(q,x)]F’) lema 3 xå*(d*(p,x)Fd*(q,x)F’) lema 2  p≈q [p]=[q]

156 Algorítmo de Minimização
1. Escreva uma tabela dos pares {p,q}, inicialmente desmarcados 2. Marque {p,q} se pF e qF ou vice_versa. 3. Repita até que não poder mais: se existe um par desmarcado {p,q} tal que {d(p,a),d(q,a)} é marcado para algum aå, então marque {p,q}. 4. Quando acabar 3, p≈q sss {p,q} é desmarcado.

157 Exemplo a 1 _ ■ a,b 2 _ _ 3 _ _ _ ■ ■ 4 _ _ _ _ a,b 5 _ _ _ _ _ ■ ■ ■
2 a b a,b 3 4 1 5 1 _ 2 _ _ 3 _ _ _ 4 _ _ _ _ 5 _ _ _ _ _ ■ ■ ■ ■ ■ a,b ■ ■ a,b

158 Corretude do Algorítmo
Q={{p,q} | p,qQ} ={{p,q} | p≠q}  {{p} | pQ} logo existem ( )+n=(n2+n)/2. seja agora Δ: Q → Q Δ({p,q},a)={d(p,a),d(q,a)} e F ={{p,q} | pF, qF } X:= F repeat X’:=X; X:=X  {{p,q}|a. Δ({p,q},a)X} until X=X’ X é o conjunto dos marcados n 2

159 Corretude do Algorítmo
X = {{p,q} | x*. Δ*({p,q},x}F} = {{p,q} | x*. d*(p,x)F,d*(q,x)F } = {{p,q} |(x*.(d*(p,x)Fd*(q,x)F ))} = {{p,q} | (p≈q)

160 Linguagens Livre de Contexto
<stmt>::=<if-stmt>|<while-stmt>| <begin-stmt>|<assg-stmt> <if-stmt>::=if <bool-expr> then <stmt> else <stmt> <while-stmt>::=while <bool-expr> do <stmt> <begin-stmt>::=begin <stmt-list> end <stmt-list>::=<stmt>;<stmt-list>|<stmt> <assg_stmt>::=<var>:=<arith-expr>

161 <bool-expr>::=
<arith-expr><comp-op><arith-expr> <comp.-op>::=<|>|≤|≥|≠|=| <arith-expr>::=<var>|<const>| (<arith-expr><arith-op><arith-expr>) <arith-op>::=+ | - | *| / <const>::=0|1|2|3|4|5|6|7|8|9 <var>::=a|b|c|…|x|y|z BNF (Backus-Naur form)dando a definição formal de uma linguagem de “programação”.

162 Mais Exemplos L = {anbn|n0} é livre de contexto.
Se em L substituirmos ‘a’ por ‘(‘ e ‘b’ por ‘)’, cadeias de parênte-ses tais como ( ( ) ) e ( ( ( ) ) ) estarão em L. L descreve uma estrutura aninhada comum em linguagens de progra-mação.

163 Gramáticas Livre De Contexto
As produções numa gramática regu-lar são restritas de duas formas: o lado esquerdo deve conter uma única variável, enquanto o lado direito tem uma forma especial. Para criar uma gramática “mais poderosa”, devemos relaxar algumas dessas condições .

164 Mantemos a restrição sobre o lado esquerdo, mas permitimos qualquer coisa no lado direito.
Definição: Uma gramática G=<V,T,S,P> é livre de contexto se todas as produções em P tem a forma Ax, onde AV e x(VT)*.

165 A linguagem L é livre de contexto sss existe uma gramática livre de contexto G tal que L = L(G).
Obs: Toda linguagem regular é livre de contexto.

166 Exemplos G=<{S},{a,b},S,P>, com produ-ções SaSa; SbSb, S
Uma derivação típica nessa gramática é SaSaaaSaaaabSbaaaaabbaa Isto torna claro que L(G)={WWR|W{a, b}*}

167 G=<{S, A, B}, {a, b}, S, P>,
Mais Exemplos A gramática G=<{S, A, B}, {a, b}, S, P>, onde P é SabB; AaaBb; BbbAa; A L(G)={ab (bbaa)n bba (ba)n |n0}

168 Derivação Mais à Esquerda e Mais à Direita
G=<{A,B,S},{a,b},S,P> com produções: 1. SAB; 2. AaaA; 3. A; 4. BBb; 5. B. L(G)={a2nbm|n0, m0} S1AB2aaAB3aaB4aaBb5aab S1AB4ABb 2aaABb5aaAb 3aab

169 Definição: Uma derivação diz-se mais à esquerda se em cada etapa a variável mais a esquerda é trocada na forma sentencial. Se em cada etapa a variável mais a direita é trocada, dizemos que a derivação é mais à direita.

170 Exemplos Considere a gramática com produ-ções SaAB, AbBb, BA|
uma derivação mais à esquerda da cadeia abbbb: SaABabBbBabAbBabbBbbBabbbBabbbb uma derivação mais à direita: SaABaAabBbabAbabbBbbabbbb.

171 Árvores de Derivação Mostra derivações independente da ordem em que as produções são usadas. Uma árvore de derivação é uma árvore ordenada onde: os nodos são rotulados com os lados esquerdos das produções e o filho de cada nodo representa seus correspondentes lados direitos.

172 Exemplo Aa b A B c A a b B c

173 Definição Seja G=<V, T, S, P> uma gramática livre de contexto. Uma árvore ordenada é uma árvore de derivação para G se e somente se ela tem as seguintes propriedades: 1. A raiz tem rótulo S 2. Toda folha tem rótulo de T{} 3. Todo vértice interior tem um rótulo de V.

174 4. Se um vértice tem rótulo A  V, e seus filhos são rotulados(da es-querda para direita) a1, a2, …,an, então P deve conter uma produção da forma Aa1a2…an 5. Uma folha rotulada  o seu pai não tem nenhum filho além dàquele rótulado .

175 árvore de derivação parcial:
Uma árvore que tem as proprieda-des 3, 4 e 5 mas não necessaria-mente 1 e a propriedade 2 é trocada por: 2a.Toda folha tem rótulo em VT{}

176 cadeia gerada A cadeia de símbolos obtida lendo-se, da esquerda para à direita, omitindo qualquer  encontrado, diz-se gerada pela árvore. Exemplo: Considere a gramática G, com produções SaAB AbBb BA | 

177 Exemplo (a) S a B A b a) ( A árvore (a) é uma ár-vore de derivação par-cial para G. A cadeia abBbB, gera-da pela árvore, é uma forma sentencial de G.

178 Exemplo (b) (b) S a A b B a árvore (b) é uma árvore de derivação.
A cadeia gerada, abbbb é uma sentença de L(G). (b) S a A b B

179 Relação entre Formas Sentenciais e Árvores de Derivações
Árvores de derivação dão uma des-crição explícita e compreensível de derivações. Assim como grafo de transições para autômatos finitos, elas são úteis nos argumentos.

180 Teorema Seja G=<V, T,S, P> uma gramática livre de contexto.
Então pra todo wL(G) existe uma árvore de derivação G cuja cadeia gerada é w. Inversamente a cadeia gerada por qual-quer árvore de derivação está em G. Além disso, se tG é qualquer árvore de derivação parcial para G cuja raiz é rotulada S, então tG gera uma forma sentencial de G.

181 Prova Primeiramente, mostraremos que para toda forma sentencial de G existe uma árvore de derivação parcial. Faremos isso por indução no número de etapas da derivação.

182 Prova (cont.): base Como base, observemos que a afir-mação é verdadeira pra toda forma sentencial derivada em uma etapa. Como Su implica que existe uma produção Su, isto segue imediata-mente da definição da árvore de derivação.

183 Prova(cont.): passo Suponhamos que para toda forma sentencial derivável em n etapas, existem uma árvore de derivação parcial correspondente.

184 Prova(cont.): passo Agora qualquer w derivável em n+1 etapas deve ser tal que S*x A y, x, y  (V U T)*, A V em n etapas, e x A yx a1, a2…amy = w, ai  VT.

185 mas por hipótese de indução existe uma árvore de derivação parcial que gera x A y.
como G deve ter produção Aa1a2…am, expandindo as folhas rotuladas A, obtemos uma árvore de derivação parcial que gera w. Logo, por indução, o resultado é verdadeiro para toda forma senten-cial.

186 Usando um argumento análogo, podemos mostrar que toda árvore de derivação parcial representa alguma forma sentencial. Uma árvore de derivação é uma árvore de derivação parcial cujas folhas são terminais. Logo toda sentença em L(G) é gerada por alguma árvore de deri-vação de G e toda árvore de derivação gerada está em L(G). q.e.d

187 Árvores de derivação mostram quais produções são usadas para se obter uma sentença, mas não dá a ordem de suas aplicações. Árvores de derivações são capazes de representar qualquer derivação, refletindo o fato de que esta ordem é irrelevante, uma observação que nos permite fechar o buraco na discussão anterior.

188 Por definição, qualquer wL(G) tem uma derivação mais a esquerda e uma mais a direita.
dada uma árvore de derivação, po-demos sempre obter uma derivação mais a esquerda pensando na árvore como tendo sido construída de tal modo que a variável mais a esquerda foi sempre expandida primeiro. Todo w  L(G) tem pelo menosuma derivação mais a esquerda e uma mais a direita.

189 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 nos dizer se wL(G) é um algoritmo de pertinência o termo análise descreve o modo de achar uma sequência de produções pela qual é derivada wL(G).

190 análise óbvia se w está L(G):
construir todas as possíveis (e.g. as mais à esquerda) derivações e verificar se al-guma coincide com W. análise de pesquisa exaustiva Problemas: não é eficiente; é possível que ele nunca termine wL(G). Por cause de produções da forma AB e A

191 Ambigüidade Uma gramática livre de contexto G é ambígua se existe wL(G) com no mí-nimo duas árvores de derivação. ambiguidade  a existência de ≥2 derivações à esquerda e à direita.

192    Exemplo: A gramática com produções SaSb | SS |  é ambígua.
aabb tem duas árvores de derivação: S S S S a S b a b S b a S a b S

193 Soluções Re-escrever a gramática tal que exista somente uma análise possível; Associar regras de precedência (como feito em LP com os + e *) Esta solução está completamente fora da gramática. existem exemplos onde é impossível remover a ambiguidade da gramática.

194 L={anbncm|n,m>0}{anbmcm|n,m>0}
Abigüidade Inerente não-ambígua: existe uma gramática para L que é não-ambígua; inerentemente ambígua .se toda gramática para L é ambígua. e.g.: L={anbncm|n,m>0}{anbmcm|n,m>0}

195 Formas Normais A definição de uma GLC não impõe qualquer restrição no lado direito de uma produção. Em muitas situações (aplicações) é desejável colocar restrições. Estudaremos métodos de transformar uma GLC arbitrária numa equivalente que satisfaz certas restrições sobre sua forma.

196 Forma Normal de Chomsky
Uma gramática livre de contexto está na forma normal de Chomsky se todas as produções são da forma ABC ou Aa onde A, B, C  V e a  T.

197 Forma Normal de Greibach
Uma gramática livre de contexto está na forma normal de Greibach se todas as produções tem a forma Aa B1 B2…Bk para k0, com A, B1, BkV e aT.

198 Teorema de Normalização
Para toda GLC G, existe uma GLC G’ na forma normal de Chomsky e uma GLC G’’ na forma normal de Greibach tal que L(G’’)=L(G’)=L(G) - { }

199 Remoção de Produções Unitárias AB e -Produções
Lema: Para qualquer GLC G=(N, , P, S), exis-te uma GLC G’ sem -produção e sem produção unitária tq L(G’)=L(G) - {}.

200 Prova Seja P^ o menor conjunto de produ-ções contendo P e fechado sobre as duas regras: (a)Se AB  P^ e B  P^, então A  P^ (b)Se AB  P^ e B  P^, então A  P^

201 Seja G^ a gramática G^=(N, , P^, S) como P P^:
Podemos construir P^ indutivamen-te de P adicionando produções para satisfazer (a) e (b). Seja G^ a gramática G^=(N, , P^, S) como P P^: L(G)  L(G^), obviamente! mas L(G)=L (G^), porque cada nova produção adicionada pode ser simula-da pela produção que a adicionou.

202 Agora mostramos que para cada cadeias não nulas x, qualquer derivação S*G^ x de tamanho mínimo não usa -produção nem produção unitária. Seja x considere a derivação de tamanho mínimo S*G^ x. Suponha para a contradição que A é usada em algum ponto da derivação S*A  *x com  ou  não nulo.

203 Sm B  A n A   *x para algum m,n,k0.
esta ocorrência de A aparece na derivação quando uma produção da forma B A  é aplicada: Sm B  A n A   *x para algum m,n,k0. Mas pela regra (a) B   está tam-bém em P^, e esta produção poderia ter sido usada neste ponto dando uma derivação menor de x: SmB   n kx absurdo!

204 SmA Bn  B     kx
Um argumento similar mostra que produções unitárias não são usadas em derivações de tamanho mínimo. Seja x   e considere a derivação de tamanho mínimo S*G^ x. Suponha que AB é usada em algum mo-mento S*A  B *x. a ocorrência de B desaparece apli-cando a produção B  mais tarde: SmA Bn  B     kx

205 Mas pela regra (b), A  está também em P^ e esta produção poderia ter sido usada dando uma derivação menor para x: SmA n  kx Isto contradiz o tamanho mínimo da derivação. Logo as -produções e produções unitárias podem ser descartadas! qed

206 Transformando para a forma normal de Chomsky.
SPG só consideraremos gramáticas sem  - produções e produções unitá-rias: Para cada a, introduza um novo não terminal Aa e a produção Aa a, e troque todas as ocorrências de a no lado direito das antigas regras (exceto das regras de forma B a) por Aa.

207 Então todas as produções são de uma das duas formas
Aa ou AB1B2…Bk, k2 onde os Bi são não terminais. O conjunto de cadeias terminais não muda, somente temos mais um passo(que antes)para gerar um sím-bolo terminal.

208 Para qualquer produção A B1B2
Para qualquer produção A B1B2. …Bk com K>2, introduza um novo não terminal C e troque esta produção por duas A B1C e C  B2B3 …Bk .. Continue fazendo estas trocas até que todos os lados direitos tenham tamanho no máximo 2.

209 {anbn | n0} - {} = {anbn | n 1}.
Exemplo Derive a gramática na forma normal de Chomsky para o conjunto {anbn | n0} - {} = {anbn | n 1}. pegue gramática para {anbn | n0} : SaSb| Removendo as  - produções temos: S aSb | ab que gera {anbn | n 1}.

210 Adicionamos não-terminais A, B e trocamos as produções para:
S ASB| AB A a B b Adicionamos um não-terminal C e trocamos B ASB por S AC C SB. A gramática na forma normal de Chomsky é S AB|AC A a B b C  SB

211 esquerda p/ direita,read only
AUTÔMATO A PILHA fita de entrada esquerda p/ direita,read only x1 x2 x3 x4 x5 x6 ... xn A1 A2 A3 A4 z Q pilha push/pop unidade de controle

212 autômato a pilha não-determinís-tico M=< Q,,,,q0,,F>
Definição NPDA autômato a pilha não-determinís-tico M=< Q,,,,q0,,F> Q ► estados  ► alfabeto da fita  ► alfabeto da pilha q0Q ► estado inicial z ► símbolo de início da pilha FQ ► estados finais  ► função de transição  : Q x ( U {} ) x   Q x *

213 se ( (p,a,A),(q,B1B2. …Bk ) )   isto significa intuitivamente que quando a máquina está no estado p lendo o símbolo a (na fita de entrada) e A (no topo da pilha),ela tira A da pilha,coloca B1B2. …Bk na pilha (Bk primeiro e B1 por último),move a cabeça para a direita uma célula passando o símbolo a e entra no estado q.

214 EXEMPLO: Considere o npda com
Q={q0,q1,q2,q3),={a,b},={0,1}, z=0, F = {q3} e (q0,a,0)={(q1,10),(q3,)} (q0, ,0) = {(q3,)} (q1,a,1) = {(q1,11)} ((q1,b,1) = {(q2,)} (q2,b,1) = {(q2,)} (q2, ,0) = {(q3,)}

215 Não são especificadas transições para todas as combinações possíveis de entradas e símbolos da pilha; Uma transição não especificada vai para o conjunto vazio e representa uma configuração morta do npda; Transições cruciais  (q1,a,1) = {(q1,11)} adiciona 1 a pilha quando é lido um a ;  (q2,b,1) = {(q2,)} remove 1 quando um b é encontrado.

216 Estas duas etapas contam o número de a’s e compara este número com o número de b’s.
A unidade de controle fica no estado q1 até ser encontrado o primeiro b e aí entra no estado q2. Isto assegura que nenhum b precede o último a. Após analisar as transições restantes, veremos que o npda terminará no estado final q3 se e somente a cadeia de entrada está na linguagem L = {anbn | n 0}  {a}

217 A tripla (q,w,u), onde q é o estado da unidade de controle, w é a parte não lida da cadeia, e u o conteúdo da pilha (com o símbolo mais a esquerda indicando o topo da pilha) é chamada uma descrição instantânea do autô-mato a pilha.

218 Um movimento de uma descrição instantânea para outra será denotada pelo símbolo |—
(q1,aw,bx)|—(q2 ,w,yx) é possível se e somente se (q2,y)(q1,a,b) |—* |—+ |—m

219 A Linguagem Aceita por um Autômato a Pilha
Existem duas definições alternati-vas para aceitação, por: pilha vazia ou estado final. Para um pda M = <Q,,,,q0,z,F> a linguagem L(M) aceita por M por estado final é L(M)={w|(q0,w,z) |—* (p,,)pF e *}

220 L(M)={w|(q0,w,z) |—* (p,,), qQ}
a linguagem L(M) aceita por M por pilha vazia é L(M)={w|(q0,w,z) |—* (p,,), qQ} Obs: Quando a aceitação é por pilha vazia, o conjunto de estados finais é irrelevante, e neste caso geralmente defi-nimos o conjunto de estados finais como o conjunto vazio.

221 EXEMPLO. Considere o npda com Q={q}, ={[,]},  = {,[}, q0=q, z= e (i) (q,[,) = (q,[) (ii) (q,[,[) = (q,[[) (iii) (q,],[) = (q,) (iv) (q,, ) = (q,) Transições (i) e (ii) dizem que toda vez que o próximo símbolo de entrada é [,o [ deve ser colocado no topo da pilha.

222 Transição (iii) diz que quando o pró-ximo símbolo de entrada é ] com um [ no topo da pilha, removemos o [ e não colocamos mais nada na pilha. Transição (iv) ocorre quando alcan-çamos o fim da cadeia de entrada e queremos retirar  da pilha e aceitar o padrão. Dada a entrada [[[]][]][] a sequência de configurações do autômato até a aceitação da cadeia:

223 (q, [[[]][]][],  ) conf. Inicial
(q, [[]][]][], [ ) (i) (q, []][]][], [[ ) (ii) (q, ]][]][], [[[ ) (ii) (q, ][]][], [[ ) (iii) (q, []][], [ ) (ii) (q, ]][], [[ ) (ii) (q, ][], [ ) (iii) (q, [],  ) (iii) (q, ], [ ) (i) (q,  ,  ) (iii) (q,  ,  ) (iv)

224 Obs: A transição (iv) poderia ter sido usada várias vezes anteriormente, por exemplo, no primeiro passo levaria a seguinte configuração (q,[[[]][]][] , ) e autômato pararia, com a pilha vazia mas sem ter lido toda a entrada!

225 Autômatos à Pilha E Linguagens Livre de Contexto
Autômatos à pilha para linguagens livre de contexto. Mostrar que para toda linguagem livre de contexto existe um npda que a aceita. A idéia subjacente é construir um npda que possa, em algum sentido, efetuar uma derivação mais a esquer-da de qualquer cadeia da linguagem.

226 Para simplificar assumiremos que a linguagem é gerada por uma gramática na forma normal de Greibach.
AaB1B2…Bk, k0 Construir de G um npda equivalente M com um único estado que aceita a linguagem por pilha vazia. M = ({q},,N,,q,S, Φ)

227 q é o único estado e é estado inicial
 , os terminais de G, é o alfabeto de entrada de M N , os não-terminais de G, é o alfabeto da pilha de M  é a função de transição S é o símbolo inicial de G, e o símbo-lo inicial da pilha de M. Φ conjunto vazio de estados finais de M Para cada produção A  aB1B2…Bk em P,  contém a transição ((q,a,A),(q,B1B2…Bk) )

228 (i) S  [BS ((q,,S),(q,BS)) (ii) S  [B ((q,,S),(q,B))
Exemplo: Considere o conjunto de cadeias de parên-teses balanceadas [ ] e uma gramática G. Abaixo temos as regras de produção de G ao lado da transição correspon-dente pela construção vista anteriormente: (i) S  [BS ((q,,S),(q,BS)) (ii) S  [B ((q,,S),(q,B)) (iii) S  [SB (q,,S),(q,S B)) (iv) S  [SBS (q,,S),(q,SBS)) (v) B  ] (q,,B),(q,))

229 Considere a entrada x =        
regra | forma sentencial | configuração S (q,      ,S) (iii)  S B (q,     ,SB) (iv)  SBSB (q,    ,SBSB) (ii)    BBSB (q,    ,BBSB) (v)    BSB (q,   ,BSB) (v)     SB (q,  ,SB) (ii)      BB (q, ,BB) (v)        B (q, ,B) (v)         (q,,)

230  S * x por uma derivação a esquerda  (q,x,s) *(q, , ) (lema)
Lema:Para qualquer z,yΣ*, γГ*, e AN, A *zγ por uma derivação a esquerda se e somente se (q,zy,A) * (q,y, γ). Teorema: L(M) = L(G). Prova: x  L(G)  S * x por uma derivação a esquerda (definição de L(G) )  (q,x,s) *(q, , ) (lema)  x  L(M) definição de L(M). q.e.d

231 Gramáticas livre de contexto para autômatos a pilha.
A inversa do teorema acima também é verdadeira. A construção é reverter o processo de construção de L(M) = L(G), de modo que a gramática simule os movimentos do pda. Isto significa que o conteúdo da pilha deve estar refletido na parte de variá-veis na forma sentencial, enquanto a entrada processada é o prefixo termi-nal da forma sentencial.

232 Para simplificar assumamos que o pda M satisfaz:
1. Tem único estado final qf no qual só entra sss a pilha estiver vazia. 2. Todas as transições devem ter a forma (q,a,A)={C1,C2,…,Cn}, onde: Ci=(p,) (a) ou Ci=(p,BC) (b)

233 Estas restrições não são tão severas quanto parece
Estas restrições não são tão severas quanto parece. Mostre como, dado um pda qualquer, obter um satisfazendo 1 e 2 acima. Na construção da gramática devemos ter uma forma sentencial que reflita o conteúdo da pilha. Observe que a configuração de um pda também envolve um estado que deve ser lembrado.

234 (qiAql)a(qjBqk)(qkBql)
Logo as varáveis da gramática têm que ter a forma (qiAqj). (qiAqj)*w sss o pda apaga (desem-pilha) A da pilha, indo de qi para qj enquanto lê a cadeia w. se (qj,)(qi,a,A) (tipo 2a), então (qiAqj)a se (qj,BC)(qi,a,A) (tipo 2b), então (qiAql)a(qjBqk)(qkBql) onde qk e ql varrem todo o Q. como símbolo inicial faça: (q0zqf)

235 Exemplo: seja o pda definido por:
(q0,a,z)=(q0,Az) (q0,a,A)=(q0,A) (q0,b,A)=(q1,) (q1,,z)=(q2,) não satisfaz condição 2, mas ... (q0,a,A)=(q3,) (q3,,z)=(q3,Az)

236 De (q0,a,A)=(q3,), (q0,b,A)=(q1,) e (q1,,z)=(q2,) geramos:
(q0Aq3)  a (q0Aq1)  b (q1zq2)   De (q0,a,z)=(q0,Az) geramos: (q0zqi)a(q0Aq0)(q0zqi)| a(q0Aq1)(q1zqi)| a(q0Aq2)(q2zqi)| a(q0Aq3)(q3zqi) para i=0,1,2,3

237 E de (q3,,z)=(q3,Az) geramos:
(q3zqi)(q3Aq0)(q0zqi)| (q3Aq1)(q1zqi)| (q3Aq2)(q2zqi)| (q3Aq3)(q3zqi) para i=0,1,2,3 o símbolo inicial é (q0zq2). Vejamos como se comportam M e G em aab:

238  aa(q3zq2)  aa(q0Aq1)(q1zq2)  aab(q1zq2)  aab
Em M: (q0,aab,z) |— (q0,ab,Az) |— (q3,b,z) |— (q0,b,Az) |— (q1,,z) |— (q2,, ) em G: (q0z q2)  a(q0Aq3)(q3zq2)  aa(q3zq2)  aa(q0Aq1)(q1zq2)  aab(q1zq2)  aab

239 Teorema. Se L=L(M) para algum pda M
Teorema. Se L=L(M) para algum pda M. então L é uma linguagem livre de contexto.

240 Lema da Bomba (Pumping Lemma) para linguagens livre de contexto
Este lema é útil para mostrar que uma dada linguagem não é uma linguagem livre de contexto. Seu uso é análogo àquele visto para linguagens regulares.

241 Suponha G na FNC e seja m=2k+1, onde k=|V|.
se |w|  m, então uma àrvore de derivação para w em G tem altura mínima > k S D P D x v y P’ A w= =vxy S*D*A*vAy*vxy S*vAy*vvAvy *viAyi

242 Teorema. Seja L uma linguagem livre de contexto infinita
Teorema. Seja L uma linguagem livre de contexto infinita. Então existe algum inteiro positivo m tal que para qualquer w  L com |w|  m ela pode ser decomposta como w = uvxyz (1) com |vxy|  m (2) e |vy|  (3) tal que, para todo i =0,1,2,…: uvixyiz  L

243 EXEMPLO: Mostre que L = {anbncn : n 0} não é livre de contexto. SOLUÇÃO: (dos diabos :-) 1. O diabo escolhe m; 2. tomamos a cadeia ambmcm em L. 3. O diabo tem várias escolhas.

244 3a. Se ele escolhe vxy contendo somente a’s, então o bombeamento acarreta obviamente que a cadeia não está em L. 3b. Se ele escolhe uma cadeia contendo número igual de a’s e b’s então a cadeia bombeada akbkck com km pode ser gerada, e não está em L.

245 De fato, a única maneira do diabo tentar nos impedir de vencer é tomar vxy tal que vy tenha o mesmo número de a’s, b’s e c’s. Mas isto não é possível pela restrição (2): |vxy|  m . Portanto, L não é livre de contexto.

246 Mais Exemplo L={ww|w{a,b}*} não é LC. Considere a cadeia ambm ambm;
uma possível escolha para uvxyz: u= am-l, v=al, x=bm-(n+p), y=bn, z=bpambm mas com i (do lema) igual a zero: ak bjambm, com k,j<m, e não está em L outras escolhas são análogas.

247 Ainda mais Exemplo! L={anbj|n=j2} não é LC. Seja m, do lema e am2bm.
De todas as escolhas possíveis aquelas que requerem mais cuida-do tem a forma geral: u=am2-(k1+p), v=ak1, x=apbm-(k2+q), y=bk2 e z=bq. bombeando i vezes obteremos m2+(i-1)k1 a’s e m+(i-1)k2 b’s

248 e a cadeia obtida não está em L.
para termos |vy|>1: se k1=0 então k2>1 e uma cadeia com m2 a’s e m-k2 b’s (i=0) não está em L; se k2=0 então k1>1 e uma cadeia com m2-k1 a’s e m b’s (i=0) também não está em L; se k1,k2>0, com i=0: (m-k2)2 ≤ (m-1)2 = m2 - 2m + 1 < m2 - k1 e a cadeia obtida não está em L.

249 Propriedades das LLCs É fechada sobre união, concatenação, fecho de Kleene e homomorfismo; mas não é fechada sob interseção nem complementação! L1={anbncm|n,m≥0} L2={anbmcm|n,m≥0} L1L2={anbncn|n≥0} L1L2=(L1  L2)

250 Propriedades de Decidibilidade
Existe algoritmo para decidir se: L é vazia ou não; L é infinita ou não; xL; Não existe para: L(G)=* L(G1)L(G2) L(G1)=L(G2) L(G) é regular L(G1)L(G2)=

251 Máquina de Turing e Computabilidade
Máquinas de Turing são os autôma-tos mais potentes que estudaremos. Elas podem computar qualquer fun-ção computável; Há até quem acredite que tudo que é efetivamente computável é computá-vel por uma MT.

252 Outras noções de computabilidade
 - cálculo (Church 1933); Funções  - recusivas (Gödel 1936); Combinadores lógicos (Schönfinkel 1924, Curry 1929); Sistema de Post (Post 1943); Máquiinas de Turing (Turing ). Tese de Church-Turing Todos os sistemas acima captam a noção de computável.

253 Máquina de Turing (Descrição Informal)
SIMULAÇÃO UNIVERSAL OU PROGRAMAS COMO DADOS. Máquina de Turing (Descrição Informal) a b b a b a ... ambos sentidos, lê/escreve Q

254 Máquina de Turing: conjunto finito de estados Q; uma fita semi-infinita, isto é, ela é delimitada à esquerda pelo símbolo ├ e infinita a direita; o cabeçote da fita pode se mover para a direita e para esquerda da fita e pode escrever símbolos sobre a fita; a entrada da fita é de tamanho finito e inicialmente está logo após o ├ (à direita); as infinitas células a direita da cadeia de entrada todas também contém o símbolo especial nulo ■;

255 funcionamento começa no estado inicial S e o cabeçote sobre ├;
a cada passo a MT lê o símbolo sobre o ca-beçote, e dependendo deste símbolo e do estado corrente, escreve um novo símbolo nesta célula, move o cabeçote para a direita ou para a esquerda e entra num novo estado (função de transição ); a MT aceita a cadeia de entrada indo para um estado especial t e rejeita indo para um estado especial r; para algumas cadeias de entrada a MT pode funcionar infinitamente sem nunca aceitá-la ou rejeitá-la.

256 Uma Máquina de Turing é uma 9-tupla M = (Q,,,■,├,,s,t,r) onde:
Q é o conjunto finito de estados;  é o alfabeto de entrada (finito);  é o alfabeto da fita contendo  como um subconjunto (finito) u \ , símbolo nulo; ├  \ , delimitador à esquerda : Qx  Qxx{L,R}, função de transição sQ, estado inicial tQ, estado de aceitação rQ, estado de rejeição

257 Nunca escrever sobre├ e nunca se mover para fora da fita à esquerda.
Restrições: Nunca escrever sobre├ e nunca se mover para fora da fita à esquerda. Para todo pQ existe um qQ tal que (p,├) = (q,├,R) Uma vez que a TM entra no estado de aceitação/rejeição ela nunca sai. Para todo b existe c,c’ e d,d’{L,R} tal que  (t,b) = (t,c,d)  (r,b) = (r,c’,d’)

258 EXEMPLO: MT que aceita { anbncn / n 0}. Informalmente: A MTcomeça no estado inicial S, varre a entrada a direita, checando se é da forma a*b*c*. Ela não escreve no seu caminho (formalmente ela escreve o que leu). Até encontrar o primeiro ■, daí troca este símbolo por um delimitador à direita .

259 Agora a MT varre a fita a esquerda apagando o primeiro c que encontra, então o primeiro b e também o primeiro a. A MT varre a direita apagando um a, um b, e um c. A MT continua indo da direita para esquerda (e vice-versa) apagando uma ocorrência de cada letra a cada passo.

260 Se em algum passo ela encontra uma ocorrência de um símbolo e nenhuma de outra, ela rejeita a cadeia. Senão, ela vai apagar todas as letras e no passo final terá somente nulos entre├ e , neste ponto a MT aceita a cadeia.

261 Q={s,q1,…,q10,t,r} ={a,b,c} ={,■,} Função de transição:
Formalmente: Q={s,q1,…,q10,t,r} ={a,b,c} ={,■,} Função de transição: ├ a b c ■  S (S,├,R) (S,a,R) (q1,b,R) (r, _ , _ ) (q3,,L) _ q _ (r, _ , _ ) (q1,b,R) (q2,c,R) (r, _ , _ ) _ q _ (r, _ , _ ) (r, _ , _ ) (q2,c,R) (q3,,L) _ q3 (t, _ , _ ) (r, _ , _ ) (r, _ , _ ) (q4,■, L) (q3,■,L) _ q4 (r, _ , _ ) (r, _ , _ ) (q5,■,L) (q4,c,L) (q4,■,L ) _ q (r, _ , _ ) (q6,■,L) (q5,b,L) _ (q5,■,L) _ q6 (q7,├,R) (q6,a,L) _ _ (q6,■,L) _ q _ (q8,■,R) (r, _ , _ ) (r, _ ,_ ) (q7,■,R) (t, _ _ ) q _ (q8,a,R) (q9,■,R) (r, _ , _ ) (q8,■,R) (r, _ , _ ) q _ _ (q9,b,R) (q10,■,R) (q9,■,R) (r , _, _ ) q _ _ _ (q10,c,R) (q10,■,R) (q3,,L)

262 Configuração inicial (S,├ x■,o)
■ representa um número infinito de ■’s 0 significa que a máquina está varrendo o delimitador ├ Uma MT aceita uma cadeia de entrada x* se (S,├ x■,0) * (t,y,n) para algum y e n e rejeita se (S,├ x■,0)*(r,y,n) para algum y e n. M pára para uma entrada x se ela aceita x ou rejeita x. M pode ficar rodando infinita-mente com a entrada x. O conjunto L(M) representa o conjunto de todas as cadeias aceitas por M.

263 Um conjunto de cadeias é Recursiva-mente Enumerável (RE) se é L(M) para alguma máquina de Turing M, e Recursivo se é L(M) para alguma má-quina de Turing M que pára em todas as entradas.

264 Máquinas de Turing com múltiplas fitas
Fitas extras não adicionam poder computacional a a b b b a ... b b a b b a a ... ... a b b a b a a Q

265 Uma MT com 3 fitas é similar a MT com uma fita exceto que a de 3 fitas tem as 3 fitas e 3 cabeçotes de leitura. Em cada passo a máquina lê os três símbolos sobre seus cabeçotes, e baseada nesta informação e no estado corrente, ela imprime um símbolo em cada fita, move os cabeçotes (eles não precisam se mover na mesma direção) e entra num novo estado.

266 A função de transição é do tipo
 : Q x 3  Q x 3 x {L,R}3 Chamemos a MT com 3 fitas de M. Podemos construir uma máquina de Turing com uma fita N que simula M (EXERCÏCIO).

267 Máquinas de Turing infinita dos dois lados.
Infinitude para ambos os lados não adiciona poder computacional. ... ... a b a a b a a b b a a a b b a a ... quebre aqui ... a b a a b

268 Podemos quebrar a fita original em qualquer lugar e simular a MT em uma outra MT infinita só a direita com duas fitas. A fita de cima é usada para simu-lar a MT original quando seu cabeçote está a direita da quebra, e a trilha de cima é usada para simular a MT original quando seu cabeçote está a esquerda da quebra, movendo-se na direção oposta.

269 EXERCÍCIOS 1. Construir uma gramática livre de contexto para a linguagem formada pelo conjunto de cadeias sobre {a,b} que não são Palindromes. Mostre que sua gramática está correta. 2. Construa uma gramática na forma Normal de Chomsky para o conjunto não vazio de cadeias com o número balanceado de parênteses ( ) e colchetes [ ]. 3. Descreva a MT N com uma fita que simula M com três fitas (veja notas de aula).

270 Gramáticas Tipo 0 ( Sem Restrição)
G = (V,T,P ,S) onde as produções de P tem a forma  com  e  sendo cadeias arbitrárias de símbolos da gramática e   .    quando   P. L(G) = {W| W  T* e S * W}

271 EXEMPLO: A gramática geradora de {ai |i é uma potência positiva de 2}
1)SACaB )CaaaC 3)CBDB )CBE 5)aDDa )ADAC 7)aEEa )AE  A e B são delimitadores a direita e a esquerda das formas sentenciais.

272 C é um marcador que se move entre A e B duplicando o número de a’s pela produção 2.
Quando C alcança o delimitador a direita B ele se transforma em D ou E pelas produções 3 ou 4. Se D é escolhido ele migra pela produção S até chegar ao delimita-dor A.

273 Neste ponto D se transforma em C pela produção 6 e o processo co-meça novamente.
Se E é escolhido, o delimitador a di-reita é consumido. E migra para a esquerda pela produção 7 e conso-me o delimitador a esquerda, resul-tando em uma cadeia de 2i a’s para i > 0.

274 Equivalência entre Gramáticas Tipo 0 e Máquinas de Turing
TEOREMA: Se L é L(G) para uma gramática tipo 0 G=(V,T,P ,S), então L é uma linguagem recursivamente enumerável.

275 PROVA: Construiremos uma máquina de Turing não-determinística com duas fitas M para reconhecer L. A primeira fita é uma fita de entra-da, onde a cadeia W será colocada. A segunda fita é usada para armaze-nar a forma sentencial  de G. M inicializa  com S. Então M repeti-damente faz:

276 1)seleciona, não deterministicamente, uma posição i em , 1 i  |  |
1)seleciona, não deterministicamente, uma posição i em , 1 i  |  |. Isto é, começa na esquerda e repetidamente se move para direita ou seleciona a posição atual. 2)seleciona aleatoriamente uma produ-ção  de G. 3)se  aparece começando na posição i de , troque  por  nesta posição (shifting over). 4)compare a forma sentencial resultante com W na fita 1. Se a forma sentencial for igual a W, aceita w como uma sen-tença de G. Senão volta para o passo 1.

277 Obs: Todas e somente as formas sentenciais de G aparecem na fita 2 quando o passo 2 é executado depois de algumas escolhas. L(M) = L(G) = L então L é recursivamente enumerável. q.e.d.

278 TEOREMA: Se L é uma linguagem recursivamente enumerável, então L = L(G) para alguma gramática tipo 0 G. a prova é mais elaborada e é omitida

279 Linguagens Sensíveis ao Contexto
G = (V,T,P,S) onde as produções em P tem a forma  com  e  sendo ca-deias arbitrárias de símbolos da gra-mática,  e  tem que ser pelo menos tão grande (longo) quanto . O nome sensível ao contexto vem da forma normal para estas gramáticas onde cada produção tem a forma 1A2 12 com .

280 Isto é, a variável A pode ser substi-tuída pela cadeia  somente no contexto 1 _ 2.
Obs: Quase todas as linguagens que trabalhamos são sensíveis ao con-texto. As únicas provas que certas linguagens não são sensíveis ao contexto são baseadas em diago-nalização.

281 Autômatos Linearmente Limitados (ALL)
Um ALL é uma máquina de Turing não determinística satisfazendo as seguintes condições: 1)o alfabeto de entrada inclui dois símbolos especiais ¢ e s, delimita-dores a esquerda e a direita. 2)o ALL não pode se mover a esquer-da de ¢ e a direita de s, nem pode trocar os símbolos ¢ e s na fita.

282 Obs: Um ALL é uma MT que,ao invés de ter uma fita potencial-mente infinita para computar, tem somente uma porção da fita contendo o símbolo x mais duas células contendo os delimitado-res. Existe uma equivalência entre ALL e gramáticas sensíveis ao contexto.

283 HIERARQUIA DE CHOMSKY TEOREMA:
(a) os conjuntos regulares estão conti-dos propriamente nas linguagens livres de contexto. (b) LLC não contendo a palavra vazia estão contidas propriamente nas LSC. (c) LSC estão propriamente contidas nos conjuntos recursivamente enume-ráveis.


Carregar ppt "Teoria da Computação WILSON ROSA DE OLIVEIRA"

Apresentações semelhantes


Anúncios Google