FACINPPGCC Teoria da Computao Parte I Teoria de

  • Slides: 104
Download presentation
FACIN-PPGCC Teoria da Computação - Parte I Teoria de Autômatos Ney Laert Vilar Calazans

FACIN-PPGCC Teoria da Computação - Parte I Teoria de Autômatos Ney Laert Vilar Calazans (ney. calazans@pucrs. br) Baseado no livro: “Introduction to Computer Theory”, de Daniel Cohen, Revised Printing, 1991. “Introduction to Computer Theory”, de Daniel Cohen, Second Edition, 1991. Última atualização – 11/09/2019

2 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

2 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

3 1. Pano de Fundo • A teoria por trás de computadores – Modelos

3 1. Pano de Fundo • A teoria por trás de computadores – Modelos matemáticos para descrever • partes do computador • tipos de computadores • máquinas similares (e. g. sistemas embarcados) • Modelos matemáticos – – Abstraem Simplificam Codificam Assim, permitem racionalizar e descobrir sobre o que se modela • antes não era claro!

4 1. Pano de Fundo • Matemático? – Modelos, por raciocínio dedutivo conclusões –

4 1. Pano de Fundo • Matemático? – Modelos, por raciocínio dedutivo conclusões – Noção de prova - fundamental • Conclusões em Teoria da Computabilidade – O que pode ou não pode ser feito! • Computadores - não mencionados • Usa-se modelos matemáticos - Máquinas! • (Coleção de) Entradas de uma máquina – Linguagem

5 1. Pano de Fundo • Fundamentos da Teoria da Computabilidade • Lógica matemática

5 1. Pano de Fundo • Fundamentos da Teoria da Computabilidade • Lógica matemática – Teoria de conjuntos, Georg Cantor e conjuntos infinitos – 1900 - Hilbert e seus problemas - 23 áreas – Um dos 23 problemas - teoria de conjuntos – Todo resultado comprovável é verdadeiro ou – Todo resultado verdadeiro é comprovável? – Hilbert desejava - método geral de prova! – Hilbert revisitado no século XXI • conjunto de programas de computador para resolver (quaisquer) problemas matemáticos

6 1. Pano de Fundo • Necessidade de Hilbert – Codificar linguagem universal na

6 1. Pano de Fundo • Necessidade de Hilbert – Codificar linguagem universal na qual expressar • algoritmos • procedimentos • programas Sinônimos • 1931 - Kurt Gödel – Não existe algoritmo para prover provas para todas as asserções verdadeiras em matemática! • Consequências – 1 - Que asserções têm provas? (Computabilidade) – 2 - Como se pode gerar estas provas? (Algoritmo)

7 1. Pano de Fundo • Resultados (Church, Kleene, Post, Markov, von Neumann e

7 1. Pano de Fundo • Resultados (Church, Kleene, Post, Markov, von Neumann e Turing) – Blocos construtivos (poucos e simples) de modelo universal para algoritmos – Máquina algorítmica universal • Turing mostrou – Certas questões sobre a máquina não é capaz de responder! • Consequências – Fim da esperança de Hilbert (definitivamente) – Modelo de Turing pode ser construído!

8 1. Pano de Fundo • Em paralelo – Invenção da válvula eletrônica –

8 1. Pano de Fundo • Em paralelo – Invenção da válvula eletrônica – Segunda Guerra Mundial • Vastas somas em dinheiro • Problema prático - quebrar o código da Enigma (Turing) • Começo – Um teorema sobre teoremas • Hoje – A invenção mais usada desde a roda!

9 1. Pano de Fundo • Além da lógica matemática – Linguística formal •

9 1. Pano de Fundo • Além da lógica matemática – Linguística formal • • O que é linguagem? Como as pessoas as entendem? Como as crianças as aprendem? Chomsky - modelos matemáticos para a descrição de linguagens – Pensamento e aprendizado - Psicologia e Neurologia • Mc. Culloch and Pitts - modelo de rede neural similar a Turing

10 1. Pano de Fundo • Áreas fundamentais de teoria da computabilidade – Teoria

10 1. Pano de Fundo • Áreas fundamentais de teoria da computabilidade – Teoria de Autômatos - ênfase aqui – Teoria de Linguagens Formais – Teoria de Máquinas de Turing - ênfase aqui

11 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

11 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

12 2. Linguagens • Elementos definitórios de linguagens formais – – – Alfabeto -

12 2. Linguagens • Elementos definitórios de linguagens formais – – – Alfabeto - conjunto finito de símbolos Palavra - sequência finita de elementos do alfabeto Regras para a formação de palavras Sentença - sequência finita de palavras Regras para a formação de sentenças Linguagem - conjunto de sentenças (ou de palavras) • Linguagens Formais – onde forma interessa, mais que o significado • sintaxe interessa, não semântica – “Eu comi três terça-feiras” sentença correta! – conceitos de palavra vazia ( ) e linguagem vazia (Ø)

13 2. Linguagens • Linguagens Formais – Conjunto de palavras linguagem sobre o alfabeto

13 2. Linguagens • Linguagens Formais – Conjunto de palavras linguagem sobre o alfabeto de letras (conjunto finito) – Conjunto de sentenças linguagem sobre o alfabeto de palavras (conjunto infinito) • • eu comi uma maçã eu comi duas maçãs eu comi três maçãs etc. – associando gramática definição finita de linguagem infinita

14 2. Linguagens • Definindo Linguagens (Formais) – Regras de verificação – Regras construtivas

14 2. Linguagens • Definindo Linguagens (Formais) – Regras de verificação – Regras construtivas • Exemplo – – – alfabeto = {x} Linguagem L 1 = {x, xxx, xxxx, …} ou Linguagem L 1 = {xn para n=1, 2, 3, …} segunda forma conceito de concatenação outro conceito comprimento de palavra, length(w) • length(xxxx) = 4 • length ( ) = 0. • Se length(w)=0, então w=

15 2. Linguagens • Exemplo: linguagem Inteiros (p. 11) • Função reverse – reverse(xxx)

15 2. Linguagens • Exemplo: linguagem Inteiros (p. 11) • Função reverse – reverse(xxx) = xxx – reverse(145) = 541 • Exemplo: linguagem PALINDROME – = {a, b} – PALINDROME = { , e todas as palavras sobre tal que reverse(x)=x} • Fechamento de Kleene – Dado um alfabeto , a linguagem na qualquer palavra (ou string) sobre símbolos do alfabeto pertence a esta. Simbologia: *

16 2. Linguagens • Fechamento de Kleene ou Kleene star – uma operação •

16 2. Linguagens • Fechamento de Kleene ou Kleene star – uma operação • Ordem lexicográfica – * = { 0 1 00 01 10 11 000 001. . . } • Kleene star de conjunto de palavras – S - conjunto de palavras – S* - conjunto de todos os strings finitos formados pela concatenação de palavras de S – ATENÇÃO - não confundir ENGLISH-WORDS* com ENGLISH-SENTENCES • Exemplos – S 1={aa b} e S 2={a ab}. S 1* = S 2*? – Fatoramento de palavras e fatoramento único

17 2. Linguagens • Prova por algoritmo construtivo – Exemplo: S={xx xxx}. S* contém

17 2. Linguagens • Prova por algoritmo construtivo – Exemplo: S={xx xxx}. S* contém todos os strings de x exceto o string x em si. Provar! • x 2 e x 3 trivialmente existem em S* • concatenando sucessivos x 2 pode-se formar todos os strings de comprimento par • concatenando sucessivos x 2 a x 3 pode-se formar todos os strings de comprimento ímpar • Método de prova mais importante aqui! • Se =Ø, então *={ } • Se S={ }, então S*={ }, porque = – Exceto nos dois casos acima, Kleene star é sempre conjunto infinito!

18 2. Linguagens • Exemplo: – S={a b ab} e T={a b bb} –

18 2. Linguagens • Exemplo: – S={a b ab} e T={a b bb} – S*=T*, porquê? • Para excluir a palavra vazia do fechamento, tem -se: – se ={x}, então +={x xx xxx …} fechamento positivo • Exemplo: – S={w 1 w 2 w 3} – S+={w 1 w 2 w 3 w 1 w 1 w 1 w 2 w 1 w 3 w 2 w 1 w 2 w 2. . . } – Se w 1=aa, w 2=bbb, w 3= , então S+={aa bbb aaaa aabbb …}

19 2. Linguagens • Fechamento Kleene de um fechamento Kleene – S** ou (S*)*

19 2. Linguagens • Fechamento Kleene de um fechamento Kleene – S** ou (S*)* – Teorema: Para qualquer conjunto S de strings, S*=S**. – Prova • • 1) Palavra em S**: formada por fatores de S* 2) Fator de S*: formado por fatores de S 3) Palavra em S** é formada por fatores de S 4) palavra de S** é palavra de S*: S** S* (Parte 1) 5) S S*, pois se pode escolher como palavra qualquer fator de S. 6) S* S** por raciocínio análogo (Parte 2) 7) juntando as duas relações, tem-se S*=S** Q. E. D. • Problemas – 3/7/12/18/19 (pp. 23 -25 Rev. Ed. ) – 3/7/11/17/19 (pp. 19 -20 2 nd. Ed. Cap. 2)

20 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

20 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

21 3. Definições Recursivas • Método para definir conjuntos • Formado por três passos

21 3. Definições Recursivas • Método para definir conjuntos • Formado por três passos – 1) Especificar alguns dos objetos básicos – 2) Fornecer regras para construir mais objetos a partir dos básicos – 3) Estabelecer que nenhum objeto, exceto os assim formados fazem parte do conjunto • Exemplo - conjunto dos pares - Definição 1 – R 1) 2 é elemento de PARES – R 2) Se x é par, x+2 é elemento de PARES – R 3) Todos e apenas aqueles elementos obtidos pela aplicação de R 1 e R 2 são elementos de PARES

22 3. Definições Recursivas • Exemplo - conjunto dos pares - Definição 2 –

22 3. Definições Recursivas • Exemplo - conjunto dos pares - Definição 2 – R 1) 2 é elemento de PARES – R 2) Se x e y são elementos de PARES, x+y é elemento de PARES • Exemplo - conjunto dos inteiros positivos – R 1) 1 é elemento de INTEIROS – R 2) Se x é elemento de INTEIROS, x+1 é elemento de INTEIROS • Exemplo - conjunto dos inteiros – R 1) 1 é elemento de INTEIROS – R 2) Se x e y são elementos de INTEIROS, x+y e x-y são elementos de INTEIROS

23 3. Definições Recursivas • Exemplo - conjunto dos polinômios – R 1) qualquer

23 3. Definições Recursivas • Exemplo - conjunto dos polinômios – R 1) qualquer número real é elemento de POLINÔMIO – R 2) A variável x é elemento de POLINÔMIO – R 3) Se p e q são elementos de POLINÔMIO, p+q, p-q, (p) e pq são elementos de POLINÔMIO • Mais exemplos - (p. 25) – – – x+ x* xodd INTEIROS S*

24 3. Definições Recursivas • Exemplo importante - expressões aritméticas – ={0 1 2

24 3. Definições Recursivas • Exemplo importante - expressões aritméticas – ={0 1 2 3 4 5 6 7 8 9 + - * / ( )} – R 1) Qualquer número (positivo/negativo/zero) é elemento de EA – R 2) Se x é elemento de EA, também o são • (x) • -x, se x não começa com sinal – R 3) Se x e y são elementos de EA, também o são • • • x + y, dado que o primeiro símbolo em y é diferente de + e x - y, dado que o primeiro símbolo em y é diferente de + e x*y x/y x**y

25 3. Definições Recursivas • Teoremas 2/3/4 (EA) • Fórmulas bem formadas (WFFs) –

25 3. Definições Recursivas • Teoremas 2/3/4 (EA) • Fórmulas bem formadas (WFFs) – – ={¬ ( ) a b c … y z} R 1) qualquer letra latina é WFF R 2) Se p é WFF, também o são (p) e ¬p R 3) Se p e q são WFFs, também o é p q • Problemas – 5/7/13/15/16/19 (pp. 35 -37 Rev. Ed. ) – Os mesmos (pp. 29 -30 2 nd. Ed. Cap. 3)

26 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

26 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

27 4. Expressões Regulares • • Novo método para definir linguagens Mais preciso que

27 4. Expressões Regulares • • Novo método para definir linguagens Mais preciso que uso de elipses (. . . ) Baseado no conceito de fechamento Kleene Exemplo – – L 4 = { x xx xxx. . . } O mesmo pode ser dito: dado S={x}, L 4=S* Outra forma L 4={x}* Notação reduzida x* - seqüência de 0 ou mais letras x x* = ou xxx ou … – L 4 = language(x*) • Outro exemplo – L= {a ab abbbb. . . } L= language(ab*) ab

28 4. Expressões Regulares • Outros Exemplos – L 1 = {x xx xxx.

28 4. Expressões Regulares • Outros Exemplos – L 1 = {x xx xxx. . . } L 1= language(x+) – Language(a*b*) = { a b aa ab bb aaa aab abb bbb aaaa. . . } – Notar que a*b* (ab)* ab – L 2={xodd} = language(x(xx)*) xx = language ((xx)* xx x) – Mas L 2 language(x*xx*) xx • Nova notação (não confundir com fechamento positivo): + – x + y - um dos strings x ou y (escolha) • Exemplo – ={a b c}, T={a c ab cb abb cbb abbb cbbb. . . } – T=language((a + c)b*)

29 4. Expressões Regulares • Para linguagens finitas – L = {aaa aab aba

29 4. Expressões Regulares • Para linguagens finitas – L = {aaa aab aba abb baa bab bba bbb} L= language((a + b)3) • A expressão (a + b)* representa todos os possíveis strings do alfabeto {a b}, incluindo o string vazio

30 4. Expressões Regulares • Definição de Expressão Regular (formal) – Símbolos de expressões

30 4. Expressões Regulares • Definição de Expressão Regular (formal) – Símbolos de expressões regulares: letras do alfabeto , símbolo do string vazio , (, ), + e * – R 1) Toda letra de pode ser uma expressão regular se escrita em negrito; é uma expressão regular – R 2) Se r 1 e r 2 são expressões regulares, também o são • • (r 1) r 1 r 2 r 1 + r 2 r 1* r 1 – R 3) Nada mais é expressão regular

31 4. Expressões Regulares • Detalhes derivados – a+ - descartado, pois equivalente a:

31 4. Expressões Regulares • Detalhes derivados – a+ - descartado, pois equivalente a: aa* – se r 1= r 1 aa+ aa b, r 1* é (aa+ aa b)*, e não aa+ aa b* – linguagem vazia não incluída, formalmente, no conjunto de expressões regulares, mas aceita-se • para toda expressão regular r, r + f = r e fr = f • Exemplos – (a+b)* a (a+b)* • conjunto de todas as palavras com pelo menos 1 a – donde, (a+b)* = (a+b)* a (a+b)* + b* – mas: a* = a* + a*, a* = a* + aaa – (a+b)* a (a+b)* = b* a (a+b)* • conjunto de todas as palavras com pelo menos 2 as

32 4. Expressões Regulares • Mais exemplos – b* a b* • conjunto de

32 4. Expressões Regulares • Mais exemplos – b* a b* • conjunto de todas as palavras com exatamente 2 as – (a+b)* a (a+b)* b (a+b)* + (a+b)* b (a+b)* a (a+b)* • conjunto de todas as palavras com pelo menos 1 a e pelo menos 1 b • igual a: (a+b)* a (a+b)* b (a+b)* + bb* aa* (Prova na p. 39) – (a+b)* a (a+b)* b (a+b)* + (a+b)* b (a+b)* a (a+b)* + a* + b* = (a+b)* Uma asserção pouco óbvia!! – Nem toda ER pode ser facilmente expressa em palavras, e. g. : • ( + ba*) (ab*a + ba*)* b (a* + b*a) bab* • Não existe algoritmo para achar o significado de uma ER!

33 4. Expressões Regulares • Mostrando a diferença entre ER e álgebra – –

33 4. Expressões Regulares • Mostrando a diferença entre ER e álgebra – – – (a + b)* = (a + b)* + a* (a + b)* = (a + b)* = a (a + b)* + b (a + b)* + (a + b)* = (a + b)* ab (a + b)* + b*a* • Símbolo * denota (em geral) linguagem infinita – Se L é finita, ER em geral não possui * • L = {abba baaa bbbb} L = language (abba + baaa + bbbb) bbbb • Mais exemplos – Se V = { a b ab bb abb bbb abbb bbbb. . . }, • V = b* + ab* ou V = ( + a) b* similar à distributividade algébrica. CUIDADO!! (ab)* ≠ a*b* !!

34 4. Expressões Regulares • Definição (multiplicação de conjuntos de palavras) – Se S

34 4. Expressões Regulares • Definição (multiplicação de conjuntos de palavras) – Se S e T são conjuntos de palavras, define-se o conjunto produto ST como sendo • ST = {todas as combinações de uma palavra de S concatenada com uma palavra de T, nesta ordem} – Exemplo: S = {a bb bab} e T = {a ab} • ST = {aa aab bbab babab}

35 4. Expressões Regulares • Definição (linguagem associada a uma ER) – Toda ER

35 4. Expressões Regulares • Definição (linguagem associada a uma ER) – Toda ER define uma linguagem - regras de obtenção • R 1) linguagem associada com ER que é letra simples é aquela letra e a linguagem associada a é { } • R 2) se r 1 é ER associada à linguagem L 1 e r 2 é a ER associada com a linguagem L 2, então: – (i) a ER (r 1) r 1 (r 2), r 2 é associada ao produto de linguagens L 1 L 2 – (ii) a ER r 1 + r 2 é associada à união de L 1 e L 2 – (iii) a linguagem associada à ER (r 1)* r 1 é L 1* – Questões abertas • toda ER linguagem. Toda linguagem uma ER? – Não. Discute-se no Cap 11 • quando ERs diferentes representam a mesma linguagem? – Algoritmo construtivo do Cap 12

36 4. Expressões Regulares • Teorema 5 (ERs e linguagens finitas) – Se L

36 4. Expressões Regulares • Teorema 5 (ERs e linguagens finitas) – Se L é linguagem finita, L pode ser definida por uma ER – Prova: basta transformar cada palavra em uma ER • Dificuldades para entender uma ER (1) – (a+b)* (aa+bb) (a+b)* • conjunto de palavras com alguma letra dobrada – ( +b)(ab)* ( +a) • conjunto de palavras sem nenhuma letra dobrada – (a+b)* (aa+bb) (a+b)* + ( +b)(ab)* ( +a) = (a+b)* !!

37 4. Expressões Regulares • Dificuldades para entender uma ER (2) – E =

37 4. Expressões Regulares • Dificuldades para entender uma ER (2) – E = (a+b)* a (a+b)* (a+ ) (a+b)* a (a+b)* • linguagem associada --> contém pelo menos 2 as – aplicando distributividade • E = (a+b)* a (a+b)* + (a+b)* a (a+b)* • primeira parte --> qualquer palavra com pelo menos 3 as • segunda parte --> qualquer palavra com pelo menos 2 as • ou seja, – E= (a+b)* a (a+b)* • Outras dificuldades – (a+b*)* = (a+b)*, mas – (aa+ab*)* ≠ (aa+ab)* – (a*b*)* = (a+b)*

38 4. Expressões Regulares “Em resumo, não existe (ou não se conhece) um conjunto

38 4. Expressões Regulares “Em resumo, não existe (ou não se conhece) um conjunto de regras algébricas para reduzir uma ER a outra equivalente. ”

39 4. Expressões Regulares • Mais um exemplo complicado – o que produz b*(abb*)*

39 4. Expressões Regulares • Mais um exemplo complicado – o que produz b*(abb*)* ( + a) ? ? • A linguagem de todas as palavras sem 2 as consecutivos!! • A linguagem EVEN-EVEN – E = [aa + bb + (ab + ba)(aa + bb)* (ab + ba)]* • A linguagem que contém todas as palavras com número par de as e de bs – A ser usada com frequência! • Problemas – 6/7/-/17/18 (pp. 60 -62 Rev. Ed. ) – 5/7/14/17/18 (pp. 49 -50 2 nd. Ed. Cap. 4)

40 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

40 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

41 5. Autômatos Finitos • Mais um método para definir linguagens! • Por quê

41 5. Autômatos Finitos • Mais um método para definir linguagens! • Por quê finito? – Porque o número de estados é finito! • Por quê autômato? – Porque a transição entre estados é governada unicamente pela suas entradas (como um autômato, não tem vontade própria!) • Em inglês se usa o termo grego – um automaton – vários automata

42 5. Autômatos Finitos • Definição de Autômato Finito - um autômato finito é

42 5. Autômatos Finitos • Definição de Autômato Finito - um autômato finito é uma tripla assim definida – 1. Um conjunto finito de estados; um estado é o estado inicial e um subconjunto dos estados (possivelmente vazio) representam estados finais – 2. Um alfabeto de possíveis letras de entrada – 3. Um conjunto finito de transições, que designa qual o estado para onde ir a partir da recepção de uma letra de entrada, estando o autômato em um dado estado

43 5. Autômatos Finitos • Definição descreve o que é autômato, não como ele

43 5. Autômatos Finitos • Definição descreve o que é autômato, não como ele funciona. Funcionamento – a partir do estado inicial, dada um sequência de letras de entrada, o autômato transiciona entre estados, uma para cada letra processada na sequência dada. • Exemplo de autômato finito (FA) – 1. S={x, y, z}; 2. ={a, b}; 3. Transições • • • 3. 1 - de x, com entrada a, vá para y. Estado inicial 3. 2 - de x, com entrada b, vá para z. Estados finais 3. 3 - de y, com entrada a, vá para x. 3. 4 - de y, com entrada b, vá para z. 3. 5 - de z, com qualquer entrada, permaneça em z.

44 5. Autômatos Finitos • Dada uma sequência de letras (uma palavra) – autômato

44 5. Autômatos Finitos • Dada uma sequência de letras (uma palavra) – autômato aceita palavra se, partindo do estado inicial, o processamento de toda a sequência deixa o autômato em algum estado final. • Conjunto de palavras aceitas definem a linguagem aceita pelo autômato • Autômato aceita ou rejeita palavras • Autômatos podem ser vistos como reconhecedores de linguagens • Exercício - definir uma ER para a linguagem aceita para o autômato exemplo! (a+b)*b (a+b)*

45 5. Autômatos Finitos • Formatos de apresentação de autômatos – tabelas de transição

45 5. Autômatos Finitos • Formatos de apresentação de autômatos – tabelas de transição - para o exemplo, tem-se – diagramas de transição - para o exemplo, tem-se a x- y a b b - aaabba - bbaabbbb z+ a Testar funcionamento para as palavras b

46 5. Autômatos Finitos • Exemplos – 1. Aceita (a+b)* = (a+b)+ a -

46 5. Autômatos Finitos • Exemplos – 1. Aceita (a+b)* = (a+b)+ a - a, b + b – 2. Aceita (a+b)* a, b +/- – 3. Não aceita nada (nem ), porquê? a b a, b

47 5. Autômatos Finitos • FAs e as linguagens definidas por eles – Quando

47 5. Autômatos Finitos • FAs e as linguagens definidas por eles – Quando se define linguagens com ER • Fácil gerar palavras aceitas pela linguagem • Difícil avaliar se dada palavra é aceita – Oposto ocorre com FAs • Fácil avaliar se palavra pertence à linguagem • Menos fácil definir subconjunto de palavras aceitas – Assim, questões importantes sobre máquinas (ER/FA) • Dada uma linguagem, pode-se construir uma máquina? • Dada uma máquina, pode-se deduzir sua linguagem?

48 5. Autômatos Finitos • Exemplos – Linguagem sobre ={a, b} que aceita palavras

48 5. Autômatos Finitos • Exemplos – Linguagem sobre ={a, b} que aceita palavras com número de letras par a, b 2 1 -+ a, b – Linguagem dada por a(a+b)* b x- y a z+ a, b b x. Ou y a, b a z+ a, b t+ a, b

49 5. Autômatos Finitos • Exemplo: Construir linguagem sobre ={a, b} que aceita palavras

49 5. Autômatos Finitos • Exemplo: Construir linguagem sobre ={a, b} que aceita palavras com triplos as ou triplos bs – 1. a a - a + a – 2. a a - + b b b – 3. a a - b b b a a b a + b a, b

50 5. Autômatos Finitos • Exemplo: Que linguagem é aceita pelo FA? a a

50 5. Autômatos Finitos • Exemplo: Que linguagem é aceita pelo FA? a a - b b + a b – A linguagem (a+b)*(aa+bb) (a+b)* a, b

51 5. Autômatos Finitos • Mais exemplos (páginas 64 -71) – – – –

51 5. Autômatos Finitos • Mais exemplos (páginas 64 -71) – – – – (a+b)b(a+b)* baa + ab linguagem que aceita qualquer string de as e bs onde o número de bs é múltiplo de 3 (com e sem ) linguagem { } (a+b)*a linguagem de todas as palavras que não terminam com b linguagem de todas as palavras que possuem número ímpar de as

52 5. Autômatos Finitos • Mais exemplos (páginas 68 -71) – linguagem de todas

52 5. Autômatos Finitos • Mais exemplos (páginas 68 -71) – linguagem de todas as palavras que possuem dois as consecutivos – linguagem de todas as palavras onde a primeira letra é diferente da última – EVEN-EVEN – FA para detectar o substring “cat” em um texto em inglês, composto de letras e espaços • Problemas – 2/3/4/6/7/17/18 (pp. 81 -84 Rev. Ed. ) – 2/3/4/6/7/18; 19 (pp. 71 -74 2 nd. Ed. Cap. 5)

53 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

53 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

54 6. Grafos de Transição • Mais um método para definir linguagens! • Muito

54 6. Grafos de Transição • Mais um método para definir linguagens! • Muito parecido com FAs, mas mais flexível • Mais propenso a confusões de interpretação

55 6. Grafos de Transição • Relaxando as restrições sobre FAs – 1. Múltiplas

55 6. Grafos de Transição • Relaxando as restrições sobre FAs – 1. Múltiplas letras por transição a ba - + b a, b aa, ab, bb – 2. Transições implícitas - baa a, b Tudo mais a, b + Equivale a - baa +

56 6. Grafos de Transição • Definição de aceitação de uma palavra por um

56 6. Grafos de Transição • Definição de aceitação de uma palavra por um grafo de transição – Em um grafo de transição, quando uma palavra que não foi completamente processada alcança um estado que ela não pode deixar porque não existe aresta de saída que possa ser seguida. Diz-se então que a máquina (ou a entrada) quebra (em inglês, “crashes”) naquele estado. A execução então termina e a entrada é rejeitada.

57 6. Grafos de Transição • Problemas com grafos de transição (TG) – o

57 6. Grafos de Transição • Problemas com grafos de transição (TG) – o TG abaixo aceita ou não o string baa? a, b - aa, bb + – Quantos caminhos distintos de aceitação de baab existem no TG abaixo? ab ba - + baa b

58 6. Grafos de Transição • Definição de Grafo de Transição (TG) Um grafo

58 6. Grafos de Transição • Definição de Grafo de Transição (TG) Um grafo de transição é uma tripla assim definida – 1. Um conjunto finito de estados; pelo menos um estado é o estado inicial (-) e um subconjunto dos estados (possivelmente vazio) representam estados finais (+) – 2. Um alfabeto de possíveis letras de entrada, a partir do qual se formam sequências (“strings”) – 3. Um conjunto finito de transições (rótulos de arestas do grafo), que designa qual o estado para onde ir a partir da recepção de uma subsequência de letras (inclusive a sequência vazia ), estando o autômato em um dado estado

59 6. Grafos de Transição • IMPORTANTE - o conceito de aceitação de palavras

59 6. Grafos de Transição • IMPORTANTE - o conceito de aceitação de palavras muda de FA para TG – Em FAs toda palavra é aceita ou rejeitada de forma determinística (todos os caminhos são explicitamente definidos, toda transição depende de processar exatamente uma letra do alfabeto) – Em TGs uma palavra é aceita se existe pelo menos uma maneira de processar toda a palavra de forma a chegar em algum estado final. Se a mesma palavra levar a quebras (crashes) ou estados não finais, estes caminhos são ignorados (dado que a primeira condição seja atendida)

60 6. Grafos de Transição • Exemplos (páginas 80 -85) TGs com transições associadas

60 6. Grafos de Transição • Exemplos (páginas 80 -85) TGs com transições associadas à baa TGs com vários estados iniciais (simulados ou não) exemplos de TGs com L={}, L={ } (a+b)*b a(a+b)*b + b(a+b)*a TG que aceita palavras terminadas por pelo menos 3 bs consecutivos e que tem as sempre aos pares – TG para EVEN-EVEN – TG que aceita aa de infinitas maneiras – – – – • Sempre há como eliminar arestas (Cap 7)

61 6. Grafos de Transição • Definição - Grafo de Transição Generalizado (GTG) Um

61 6. Grafos de Transição • Definição - Grafo de Transição Generalizado (GTG) Um grafo de transição é uma tripla assim definida – 1. Um conjunto finito de estados; pelo menos um estado é estado inicial (-) e um subconjunto dos estados (possivelmente vazio) são estados finais (+) – 2. Um alfabeto de possíveis letras de entrada – 3. Um conjunto finito de arestas conecta alguns pares de estados, cada uma destas sendo rotulado com uma expressão regular a* - (ab+a)* (b+ ) a*

62 6. Grafos de Transição • Não-determinismo – a seguinte construção é possível (se

62 6. Grafos de Transição • Não-determinismo – a seguinte construção é possível (se não fosse, seria facilmente reproduzível de outras formas menos claras). . . 3 abb 4 . . . abb 5 . . . – o caminho para aceitar um string em um TG NÃO depende apenas das entradas, a máquina propicia algumas determinações por si!!

63 6. Grafos de Transição • Problemas – 1/4/6/10/-/19 (pp. 81 -84 Rev. Ed.

63 6. Grafos de Transição • Problemas – 1/4/6/10/-/19 (pp. 81 -84 Rev. Ed. ) – 1/2/3/6/15/19 (pp. 88 -91 2 nd. Ed. Cap. 6)

64 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

64 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

65 7. Teorema de Kleene • Teorema 6 (Teorema de Kleene - 1956) –

65 7. Teorema de Kleene • Teorema 6 (Teorema de Kleene - 1956) – Qualquer linguagem que pode ser definida por • uma expressão regular, ou • um autômato finito, ou • um grafo de transição pode ser definida por qualquer dos três métodos • Resultado mais fundamental e mais importante da teoria de autômatos finitos • Lógica da prova - razoavelmente complexa – para provar equivalência de três asserções ZAPS=ZEPS=ZIPS, prova-se que • ZAPS ZEPS ZIPS ZAPS

66 7. Teorema de Kleene • Estrutura da Prova – Parte 1 - Toda

66 7. Teorema de Kleene • Estrutura da Prova – Parte 1 - Toda linguagem que pode ser definida por um autômato finito também pode ser definida por um grafo de transição – Parte 2 - Toda linguagem que pode ser definida por um grafo de transição também pode ser definida por uma expressão regular – Parte 3 - Toda linguagem que pode ser definida por uma expressão regular também pode ser definida por um autômato finito

67 7. Teorema de Kleene • Prova da Parte 1 (Toda linguagem que pode

67 7. Teorema de Kleene • Prova da Parte 1 (Toda linguagem que pode ser definida por um autômato finito também pode ser definida por um grafo de transição) – Parte mais fácil (decorre das definições de FA e TG) • Todo FA é um TG. Logo, toda L definida por um FA já está automaticamente definida por um TG • Prova da Parte 2 (Toda linguagem que pode ser definida por um grafo de transição também pode ser definida por uma expressão regular) – Algoritmo construtivo para transformar um TG em uma expressão regular – Para ser válido como prova todo algoritmo deve: • valer para qualquer TG • terminar em tempo finito (executar em número finito de passos)

68 7. Teorema de Kleene • Primeiros passos do algoritmo (Parte 2). Sem alterar

68 7. Teorema de Kleene • Primeiros passos do algoritmo (Parte 2). Sem alterar linguagem aceita – Transformar TG para ter apenas 1 estado inicial – Fazer estado inicial não ter nenhuma aresta entrando nele – Transformar TG para ter apenas 1 estado final – Fazer estado final não ter nenhuma aresta saindo dele

69 7. Teorema de Kleene b 13 - 2 ab aa 5 - b

69 7. Teorema de Kleene b 13 - 2 ab aa 5 - b . . . 4 aba Torna-se - 1 12+ b Torna-se b 2 ab 3 5 aa . . . 9+ . . . 4 aa b . . . aa aba 9 12 b +

70 7. Teorema de Kleene • Segundo passo do algoritmo (Parte 2). Itera com

70 7. Teorema de Kleene • Segundo passo do algoritmo (Parte 2). Itera com terceiro passo. Sem alterar linguagem aceita – Eliminar arestas paralelas, ou seja, as que têm mesma origem e mesmo destino r 2. . . r 1. . . x r 2 . . x . . . r 3 7 3 r 1+r 2+r 3 r 1 . . . 3 r 1+r 2 7 . . .

71 7. Teorema de Kleene • Terceiro passo do algoritmo (Parte 2). Itera com

71 7. Teorema de Kleene • Terceiro passo do algoritmo (Parte 2). Itera com segundo passo. Sem alterar linguagem aceita – Eliminar todos os vértices diferentes de – e +. . . 1 r 1 2 r 3 r 2 3 . . . 1 r 1 r 3 r 1 r 2*r 3 3 . . .

72 7. Teorema de Kleene • Terceiro passo (continuação) r 3. . . 1

72 7. Teorema de Kleene • Terceiro passo (continuação) r 3. . . 1 r 1 2 r 4 r 5 3 . . . 4 . . . 5 . . . r 1 r 2*r 3 . . . 1 r 1 r 2*r 4 3 . . . 4 . . . 5 . . . r 1 r 2*r 5

73 7. Teorema de Kleene • Algoritmo construtivo (prova da Parte 2) – Passo

73 7. Teorema de Kleene • Algoritmo construtivo (prova da Parte 2) – Passo 1 – Criar um único estado – inentrável, e um único + insaível – Passo 2 – Um a um, elimine estados diferentes de – e + no TG, alterando o mesmo para manter a linguagem intacta, segundo as regras anteriores – Passo 3 – Quando dois estados são unidos por mais de uma aresta na mesma direção, unifique-as, somando seus rótulos – Passo 4 – Quando tudo que sobrar for – e + e uma aresta os unindo, a expressão regular sobre esta aresta gera a mesma linguagem que o TG de partida

74 7. Teorema de Kleene • Prova da Parte 3 (Toda linguagem que pode

74 7. Teorema de Kleene • Prova da Parte 3 (Toda linguagem que pode ser definida por uma expressão regular também pode ser definida por um autômato finito) – A mais complicada – Série de algoritmos construtivos para converter ERs em FAs – Um algoritmo para cada elemento definitório de ERs: • • letras e a palavra vazia (Regra 1) alternativa (+) (Regra 2) concatenação (Regra 3) fechamento Kleene (*) (Regra 4) – Cada Regra - prova correspondente

75 7. Teorema de Kleene • Regra 1 – Existe um FA que aceita

75 7. Teorema de Kleene • Regra 1 – Existe um FA que aceita qualquer letra do alfabeto e existe um FA que aceita somente a palavra vazia ( ) • Prova – 1) se x está em , então o FA abaixo aceita apenas a palavra x. Qquer letra exceto x - x + . . . Qquer letra – 2) um FA que aceita apenas aparece abaixo. Qquer letra -/+ Qquer letra

76 7. Teorema de Kleene • Regra 2 – Se existe FA 1 que

76 7. Teorema de Kleene • Regra 2 – Se existe FA 1 que aceita L 1=L(r 1) e FA 2 que aceita L 2=L(r 2), existe FA 3 que aceita L 3=L(r 1+r 2), onde r 1 e r 2 são ERs • Prova (algoritmo construtivo no livro) – Como construir FA 3 de FA 1 e FA 2? Exemplos – Guia para a solução – estados de FA 3 registram onde se encontram FA 1 e FA 2 a cada letra processada – Se FA 1 tem n estados e FA 2 tem m estados FA 3 terá no máximo n. m estados – Cada estado de FA 3 corresponde a um par de estados, um de FA 1 e um de FA 2

77 7. Teorema de Kleene • Regra 3 - Se existe FA 1 que

77 7. Teorema de Kleene • Regra 3 - Se existe FA 1 que aceita L 1=L(r 1) e FA 2 que aceita L 2=L(r 2), existe FA 3 que aceita L 3=L(r 1 r 2), onde r 1 e r 2 são ERs • Prova – Algoritmo Construtivo • 1 – Criar um estado z para cada estado x não-final de FA 1, alcançado antes de alcançar qualquer estado final de FA 1 • 2 – Para cada estado final de FA 1, estabelecer um estado z que expressa as opções de continuar em FA 1 ou ir para FA 2 • 3 – Após alcançar um estado salta-para-FA 2 qualquer estado alcançado possui possibilidades x e y como na máquina união, com a opção adicional de que toda vez que se alcança um estado final de FA 1 pode-se de novo exercitar a opção de ir para y 1 (primeiro estado de FA 2) • 4 – Os estados finais são os estados z que “contêm” algum estado final de FA 2

78 7. Teorema de Kleene • Regra 4 - Se existe FA 1 que

78 7. Teorema de Kleene • Regra 4 - Se existe FA 1 que aceita L 1=L(r 1), existe FA 2 que aceita L 2=L(r 1*), onde r 1 é ER. • Prova – Dado um FA 1 com estados x 1, x 2, . . . – 1) Criar um estado para cada subconjunto de “xizes”. Eliminar subconjuntos que contenham um estado final e não contenham o estado inicial – 2) Para todos os estados não-vazios, desenhar uma aresta ‘a’ e uma aresta ‘b’ para toda coleção de estados alcançável no FA original a partir dos “xizes” componentes do estado de partida, via uma única aresta ‘a’ ou ‘b’, respectivamente

79 7. Teorema de Kleene • Prova – Continuação – 3) Nomear o estado

79 7. Teorema de Kleene • Prova – Continuação – 3) Nomear o estado vazio com -/+ e o conectar a quaisquer estados que o estado de partida esteja conectado por arestas ‘a’ ou ‘b’, mesmo o próprio estado inicial – 4) Colocar sinais + em todo estado contendo um componente x que é estado final no FA 1 • Problemas – 1/2/3/4/5/6/20 (pp. 138 -141 Rev. Ed. ) – 1/2/4/5/6/14 (pp. 88 -91 2 nd. Ed. Cap. 7)

80 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

80 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

81 8. Não-Determinismo • Definição de Autômato Finito Nãodeterminístico – É um TG com

81 8. Não-Determinismo • Definição de Autômato Finito Nãodeterminístico – É um TG com um único estado inicial e com a propriedade que cada um dos rótulos de suas arestas é uma única letra do alfabeto • Teorema 7 – Para todo NFA, existe um FA que aceita a mesma linguagem • NFAs e o Teorema de Kleene – NFAs e o Teorema 7 fornecem outro meio de realizar a prova do Teorema de Kleene

82 8. Não-Determinismo • Problemas – 5/8/9/10 (pp. 150 -151 Rev. Ed. ) –

82 8. Não-Determinismo • Problemas – 5/8/9/10 (pp. 150 -151 Rev. Ed. ) – - (Este Capítulo não existe na 2 nd. Ed. )

83 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

83 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

84 9. Autômatos Finitos com Saída • Em busca de um modelo (matemático) de

84 9. Autômatos Finitos com Saída • Em busca de um modelo (matemático) de um computador • String de Entrada – programa(s) e dados • Ler letras de um FA ≡ executar instruções, escrever na memória externa, etc • Parte do etc. são as saídas! • Saída pode ser vista como parte do estado • Ou não! Única tarefa que máquinas realizam até agora é reconhecer uma linguagem • Se geração de saídas for explicitada, isto muda!

85 9. Autômatos Finitos com Saída • Definição de Máquinas de Moore (1956) –

85 9. Autômatos Finitos com Saída • Definição de Máquinas de Moore (1956) – É uma quíntupla formada por – 1. Um conjunto finito de estados q 0, q 1, q 2, . . . , onde q 0 é o estado inicial – 2. Um alfabeto de possíveis letras de entrada – 3. Um alfabeto G de caracteres de saída – 4. Uma tabela de transição, que designa para cada par (estado, letra de entrada) qual o estado para onde ir a seguir – 5. Uma tabela de saída, que designa para cada estado qual o caractere de saída a ser impresso

86 9. Autômatos Finitos com Saída • Definição de Máquinas de Mealy (1955) –

86 9. Autômatos Finitos com Saída • Definição de Máquinas de Mealy (1955) – É uma quádrupla formada por – 1. Um conjunto finito de estados q 0, q 1, q 2, . . . , onde q 0 é o estado inicial – 2. Um alfabeto de possíveis letras de entrada – 3. Um alfabeto G de caracteres de saída – 4. Uma representação pictórica, na forma de um grafo onde vértices representam estados e arestas representam transições entre estados. Arestas são dotadas de rótulos x/y, representando a letra de entrada que produz a transição (x) e a letra de saída gerada pela transição (y)

87 9. Autômatos Finitos com Saída • Lembrando – Máquinas de Moore/Mealy não aceitam/rejeitam

87 9. Autômatos Finitos com Saída • Lembrando – Máquinas de Moore/Mealy não aceitam/rejeitam strings (ação não definida) – Saída pode funcionar para identificar tal reconhecimento – Por exemplo, uma máquina pode escrever 1 para indicar reconhecimento de palavra de uma linguagem e escrever 0 caso contrário

88 9. Autômatos Finitos com Saída • Moore = Mealy – Definição de equivalência

88 9. Autômatos Finitos com Saída • Moore = Mealy – Definição de equivalência – dada uma máquina de Mealy Me e uma máquina de Moore Mo, que imprime o caractere x no estado inicial, diz-se que Me e Mo são equivalentes se para qualquer string de entrada o string de saída de Mo é exatamente x concatenado com o string de saída de Me – Teorema 8 • Se Mo é uma máquina de Moore, então existe uma máquina de Mealy Me que é equivalente a Mo – Teorema 9 • Para toda máquina de Mealy Me, existe uma máquina de Moore Mo equivalente a Me

89 9. Autômatos Finitos com Saída • Prova do Teorema 8 (algoritmo construtivo) a/t

89 9. Autômatos Finitos com Saída • Prova do Teorema 8 (algoritmo construtivo) a/t a b c ⇒ q 4/t b/t c/t q 4 • Prova do Teorema 9 (algoritmo construtivo) a/0 q 2_4/1 b/0 b a/1 q 4 b/1 a/1 ⇒ b/1 a b a/1 q 1_4/0 b/1

90 9. Autômatos Finitos com Saída • Conceito de transdutores – Autômatos com saídas

90 9. Autômatos Finitos com Saída • Conceito de transdutores – Autômatos com saídas são ditos transdutores à clara conexão com circuitos eletrônicos – Em transdutores, o número total de estados limita a quantidade de “história passada” sobre a qual o circuito se baseia para gerar as suas saídas – Estados – vinculados a valores armazenados em bits de memória de um “registrador de estado” – e. g. um microprocessador com 3000 bits em seu registrador de estados pode lembrar-se (no máximo) do que aconteceu há 23000 ciclos de relógio atrás!

91 9. Autômatos Finitos com Saída • Problemas – 1/2/3/4/5/6/7/8/9/10/11/14/15/16/17 (pp. 173 -176 Rev.

91 9. Autômatos Finitos com Saída • Problemas – 1/2/3/4/5/6/7/8/9/10/11/14/15/16/17 (pp. 173 -176 Rev. Ed. ) – 1/2/3/4/6 (pp. 162 -166 – Cap 8 da 2 nd. Ed. Cap. 8)

92 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

92 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

93 10. Linguagens Regulares • Definição de Linguagem Regular toda linguagem que pode ser

93 10. Linguagens Regulares • Definição de Linguagem Regular toda linguagem que pode ser definida por uma expressão regular • Teorema 10 – Se L 1 e L 2 são linguagens regulares, então L 1+L 2, L 1 L 2 e L 1* são linguagens regulares • Prova – Baseada na prova do teorema de Kleene, uma vez que L 1 e L 2, sendo regulares, têm expressões regulares que as geram

94 10. Linguagens Regulares • Definição de Complemento de Linguagem Regular: Se L é

94 10. Linguagens Regulares • Definição de Complemento de Linguagem Regular: Se L é uma linguagem regular sobre o alfabeto , define-se seu complemento, L´ como sendo a linguagem de todos as cadeias de letras de que não são palavras de L • Teorema 11 – Se L é uma linguagem regular, então L´ também é uma linguagem regular • Prova – Se L é regular, sabe-se que existe um FA que a aceita. Dado este FA, construa-se FA´, onde a única diferença é que o(s) estado(s) final(is) de FA não são finais em FA´ e vice-versa. Este FA aceita L´. Logo, L´ é regular

95 10. Linguagens Regulares • Teorema 12 – Se L 1 e L 2

95 10. Linguagens Regulares • Teorema 12 – Se L 1 e L 2 são linguagens regulares, então L 1 ∩ L 2 também é linguagem regular • Prova – Usando-se a Lei de de Morgan, que vale para quaisquer conjuntos, tem-se • L 1 ∩ L 2 = (L 1´ + L 2´)´ • Como L 1 e L 2 são regulares, e seus complementos também, a interseção de L 1 e L 2 é uma linguagem regular • Problemas – 1/2/3/4/18 (pp. 198 -200 Rev. Ed. ) – 1/2/3/4/18 (pp. 185 -186 2 nd. Ed. Cap. 9)

96 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

96 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

97 11. Linguagens Não-Regulares • Teorema 13 (Lema do Bombeamento, Pumping Lemma) – Seja

97 11. Linguagens Não-Regulares • Teorema 13 (Lema do Bombeamento, Pumping Lemma) – Seja L uma linguagem regular infinita. Então existem três cadeias x, y e z, onde y não é a cadeia vazia, tais que todas as palavras com a forma xynz (com n=1, 2, 3, . . . ) são palavras de L. • Dado este Lema, considere a linguagem de todas as palavras com estrutura anbn, ou L= {ab, aabb, aaabbb, aaaabbbb, . . . } • Será que conseguimos gerar uma ER que a defina? A resposta curta é NÃO!!

98 11. Linguagens Não-Regulares • Problemas – 4/5/6/7/8/9/16/17(ii) (pp. 217 -218 Rev. Ed. )

98 11. Linguagens Não-Regulares • Problemas – 4/5/6/7/8/9/16/17(ii) (pp. 217 -218 Rev. Ed. ) – 1/2/5/15/16(ii) (pp. 203 -205 2 nd. Ed. Cap. 10)

99 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES

99 Sumário 1. PANO DE FUNDO 2. LINGUAGENS 3. DEFINIÇÕES RECURSIVAS 4. EXPRESSÕES REGULARES 5. AUTÔMATOS FINITOS 6. GRAFOS DE TRANSIÇÃO 7. TEOREMA DE KLEENE 8. NÃO-DETERMINISMO 9. AUTÔMATOS FINITOS COM SAÍDAS 10. LINGUAGENS REGULARES 11. LINGUAGENS NÃO-REGULARES 12. DECIDIBILIDADE

100 12. Decidibilidade • Linguagens regulares são fáceis de especificar e tratar • Decidibilidade

100 12. Decidibilidade • Linguagens regulares são fáceis de especificar e tratar • Decidibilidade – perguntas a responder 1. Como decidir se duas ERs distintas definem a mesma linguagem? 2. Como decidir se dois FAs são equivalentes? 3. Como decidir se a linguagem definida por um FA é finita ou infinita? Primeira é basicamente igual à segunda (Kleene) Vamos por partes. . .

101 12. Decidibilidade • Em lógica matemática diz-se que um problema é efetivamente solúvel

101 12. Decidibilidade • Em lógica matemática diz-se que um problema é efetivamente solúvel se existe um algoritmo que provê uma solução para ele em um número finito de passos. Este algoritmo é então denominada uma solução efetiva para o problema • E. g. a Fórmula de Bhaskara provê uma solução efetiva para equações quadráticas • Uma solução efetiva para um problema cuja solução é uma resposta sim ou não é chamado de procedimento de decisão

102 12. Decidibilidade • Um problema que possui um procedimento de decisão é dito

102 12. Decidibilidade • Um problema que possui um procedimento de decisão é dito ser decidível • Exemplos introdutórios – a(a + b)* e (b + )(baa + ba*)* definem a mesma linguagem? – (aa + ab + ba + bb)* e ((ba +ab)*(aa + bb)*)* definem a mesma linguagem? – Com base no Cap 10 o que é a linguagem • (L 1 ∩ L 2´) + (L 2 ∩ L 1´) ? • O que acontece com esta se L 1=L 2?

103 12. Decidibilidade • Teorema 17 (i) Existe um procedimento efetivo se um FA

103 12. Decidibilidade • Teorema 17 (i) Existe um procedimento efetivo se um FA aceita alguma palavra (ii) Existe um procedimento efetivo para decidir se dois FAs são equivalentes (iii) Existe um procedimento efetivo para decidir se duas ERs são equivalentes • Teorema 19 Existe um procedimento efetivo para decidir se um dado FA aceita uma linguagem finita ou infinita

104 12. Decidibilidade • Problemas – 1/2/3/4/5/9/10/11/12/13 (pp. 233 -237 Rev. Ed. ) –

104 12. Decidibilidade • Problemas – 1/2/3/4/5/9/10/11/12/13 (pp. 233 -237 Rev. Ed. ) – 1/2/3/4/5/9/10/11/12/13 (pp. 217 -220 2 nd. Ed. Cap. 11)