You are on page 1of 67

Prof.

Jussara Maria Marins

Captulo 1

INSTITUTO PRESBITERIANO MACKENZIE Professora Jussara Maria Marins

Teoria da Computao Captulo 1 Fundamentos


1. Fundamentos .............................................................................................................................................. 2 1.1. Lgica e Linguagem ........................................................................................................................... 2 1.2. Conjuntos............................................................................................................................................ 5 1.3. Relaes e Funes............................................................................................................................. 7 1.4. Tipos Especiais de Relaes Binrias............................................................................................... 10 1.5. Operaes sobre Funes ................................................................................................................. 12 1.6. Cardinalidade de Conjuntos.............................................................................................................. 13 1.7. Fechos............................................................................................................................................... 15 1.8. Tcnicas Fundamentais de Provas .................................................................................................... 15

Os objetivos gerais deste captulo so: Mostrar que a cincia da computao uma cincia interdisciplinar, que muito nova (50 anos), mas possui fundamentos slidos muito antigos (2500 anos) baseados na lgica e matemtica. Estabelecer o conceito destas duas ltimas cincias tambm no simples. Fornecer subsdios para o aluno verificar que o lugar comum nem sempre lgico, ou que o que mais simples, nem sempre o mais formal , que uma noo bsica 1nem sempre intuitiva e certos conceitos que esto internalizados precisam ser bem definidos para que novos conceitos sejam bem compreendidos. Os objetivos especficos deste captulo so: Revisar noes bsicas, os axiomas da Lgica, bem como as propriedades das operaes lgicas. Usar a Teoria de Conjuntos de modo mais simblico e consequentemente desenvolvendo o formalismo necessrio teoria da computao. Provar teoremas distinguindo as suas tcnicas fundamentais.

Por exemplo : definir o que uma palavra ou o que um nmero Cp1Fundamentos 17/08/03

Prof. Jussara Maria Marins

Captulo 1

1. Fundamentos 1.1. Lgica e Linguagem


O que computao? Para caracterizar um determinado objeto podemos descrev-lo usando outros objetos que o constituem, usando aproximaes expondo o que faz parte do novo objeto e o que no faz parte do objeto. Isto , pelo mtodo aristotlico do contraste do que e do que no o novo objeto. Faremos isto com computao. Computao no uma cincia da natureza. No estudamos computao do mesmo modo que Fsica, Qumica ou Biologia, pela observao dos fenmenos correspondentes, experimentao em situaes controladas, comparao entre resultados, formulao de modelos e teorias e novos experimentos controlados para analisar e validar os resultados obtidos. Computao no s uma cincia terica. Embora usemos muito a matemtica, no basta definirmos entes computacionais, provar a correo de frmulas que modelam algoritmos, etc, pois precisamos na prtica do modelo e/ou instrumento computador para fazer computao. Lembremos a Matemtica e a Lgica no so cincias empricas. Mas computao tambm possui disciplinas tericas, isto , que no dependem do modelo usado para computar. Computao no s uma arte. As vezes, o que se ope s cincias tericas ou empricas pode ser comparado com Arte. Computao no arte, contudo, preciso criatividade, arte e engenhosidade para criar e aperfeioar os diversos algoritmos, usando tcnicas j conhecidas ou criando outras. Computao no s tecnologia. Inmeros avanos da fsica, da eletrnica, da tica, etc contribuem de forma decisiva na computao e at mesmo determinam novos campos de estudo, mas isto faz parte da Engenharia em si, que depois aplicada aos modelos fsicos computacionais. a cincia do que computvel2. o conjunto conhecimentos matemticos, lgicos, estatsticos, lingsticos, tecnolgicos, eletrnicos etc, organizados do modo que possamos resolver os problemas diversos desde a elaborao ou utilizao de uma teoria at ao desenvolvimento e implantao da soluo por meio de algoritmos que possam ser traduzidos em programas num computador. Como cincia autnoma ainda muito nova em termos do conhecimento humano. Tudo o que veremos nesta e em outras disciplinas como: Matemtica Discreta, Linguagens Formais, Autmatos e Grafos fazem parte do arcabouo da Teoria da Cincia da Computao. Exerccios: 1. Procure uma conceituao melhor do que dado acima para computao, relacione suas disciplinas descrevendo objetivamente seu escopo. Faa um contraste com Matemtica ou Fsica. 2. Procure tambm um bom conceito de algoritmo. 3. Idem para as caractersticas de "bom" algoritmo. 4. O que "boa qualidade" de um algoritmo? 5. Quais as relaes entre um algoritmo e um programa? 2. Porque fundamentos matemticos para computao? 1.

A matemtica fornece fundamentos para formalizao dos algoritmos numa linguagem simblica e objetiva. Um algoritmo facilmente descrito como uma funo que recebe dados de Entrada, os transforma e produz uma sada. Entrada Algoritmo Sada f: ES
2

Parece que "choveu no molhado". Cp1Fundamentos

17/08/03

Prof. Jussara Maria Marins xy = f(x)

Captulo 1

Matemtica uma cincia abstrata e usa: - noes bsicas - axiomas - definies - smbolos prprios ou diramos uma linguagem prpria e global3 - teoremas Alm disso, a matemtica usa a Lgica como uma ferramenta de trabalho, uma vez que todos seus axiomas tambm so vlidos para a Matemtica. Vale lembrar que a matemtica fundamental para outras disciplinas, como Fsica, Qumica e outras por motivos mais ou menos semelhantes. A Matemtica uma linguagem suficientemente4 geral e abstrata que pode ser adaptada a diversos contextos. Creio que somente a msica uma linguagem mais ampla do que a Matemtica. Alias a inter-relao entra as duas histrica. A questo seguinte, embora muito relacionada com a matemtica, no faz parte desta. As disciplinas da matemticas so Clculo Diferencial e Integral, lgebra, lgebra Linear, Geometria, Topologia, Anlise, Teoria dos nmeros, etc. De fato, a Lgica faz parte da Filosofia, porque sistematiza o modo de analisarmos os pensamentos que se colocam em proposies. H pensamentos, claro, que no so passveis de serem colocados em proposies, e da entramos no terreno dos sentimentos, das artes, etc. A, tambm alguns vem uma certa lgica. preciso, no confundir bom senso, senso comum, normalidade( no sentido estatstico) com lgica. 3. Mas, o que a Lgica, afinal?

A Lgica trata das inferncias vlidas, ou seja, das inferncias cujas concluses tm que ser verdadeiras, caso as premissas o sejam. o estudo da veracidade das proposies compostas. A chamada Lgica Simblica inclui a mesma lgica descrita em termos de inferncias e usando simbolismos matemticos estuda o clculo dos predicados clssicos de primeira ordem e suas extenses. Uma proposio uma afirmao cujo valor verdade (Verdadeiro ou Falso) pode ser determinado sem ambigidade. Uma proposio pode ser simples ou composta. Uma pergunta: Fabrcio Corintiano? no uma proposio, assim como tambm uma exclamao: Deus me livre! no uma proposio. Para que uma sentena como "Sandra uma aluna do Mackenzie" seja uma proposio necessitamos saber de qual Sandra se trata e qual o perodo. J a sentena "O quadro Banhistas de Renoir bonito" e emite um juzo de gosto e que no tem o carter de proposio. Finalmente a sentena: "O nmero 25 o quadrado do nmero 5" uma proposio cujo valor Verdadeiro; enquanto que a sentena: "O nmero 9 mltiplo de 2" uma proposio falsa. O valor verdade da composio ou de operaes sobre as proposies estudado na Lgica. As noes bsicas de lgica so dadas pelo predicado de igualdade, os valores lgicos Verdade ou falso e as sentenas que exprimem afirmaes ou proposies, assim como os quantificadores universal :para todos ou todo; existencial :: existe pelo menos um, alguns, algum ou existe um. Um axioma ou postulado (ou ainda um dogma) uma proposio aceita como verdade, incondicionalmente, ou sem a necessidade de uma prova. Tambm pode ser chamado de Princpio. Na realidade, no haveria como prov-la mas h total aceitao de sua veracidade. - Princpios (axiomas) da Lgica Clssica5: Princpio da Contradio: A seguinte expresso sempre uma contradio ( sempre falsa)

( p) p
Princpio do Terceiro Excludo: uma proposio s admite o valor V ou o valor F, excluindo-se um terceiro valor. A afirmao seguinte uma tautologia( sempre verdade).

p p

Muitos falam em carter universal da matemtica, o que muito compreensvel. Mas usamos o seu significado global, sem nenhuma conotao com a dita "globalizao" ou geleia geral da mdia atual. 4 Em termos de epsilons e deltas. 5 H outros tipos de Lgicas: a Paraconsistente; Paracompleta; Intucionista; Polivalente; Fuzzy, e outras. Cp1Fundamentos 17/08/03

Prof. Jussara Maria Marins

Captulo 1

Princpio da Dupla Negao: A negao da negao de uma proposio implica em sua afirmao:

p p
Clculo proposicional: Estudo da veracidade das proposies compostas com Tabelas Verdade. p,q so proposies simples operaes com proposies: pq, pq, pq, pq O clculo das Proposies completo. Isto quer dizer que, existe um mecanismo de determinar se uma proposio composta qualquer sempre verdadeira :Tautologia, ou se sempre falsa: Contradio ou ainda uma Contigncia: nem sempre verdade, nem sempre falsa, dependendo dos valores iniciais das proposies constituintes. Para isso basta fazer a tabela-verdade, o que pode ser feito finita e mecanicamente. Clculo dos Predicados: Estudo da veracidade das proposies com predicados a) Predicados: proposies com variveis; "x par" que quer dizer: "os pares..." ou "o nmero que par" Notao: P(x): x par. P1(x): x primo P2(x): x verde Se x{2,56,68,98,4} ento P1(x) Verdadeiro. Se x{2,56,17} ento P2(x) falso. b) Proposies Quantificadas 1) (nN)(xN)[x+n = x = n+x] Isto significa: Todo nmero natural admite um neutro aditivo. Para todos naturais x , existe um nmero natural n tal que , x somado a n resulta no prprio x. Mais claramente, para x=3, existe o n=0 tal que 3+n=3+0=3; para x=7, existe n=0, tal que 7+n=7+0=7, isto , tanto para o 3 como para o 7, ou ainda para qualquer outro natural, o neutro um s, o nmero zero. 2) (xZ) (x' Z) [x+x' = x'+x = n] O significado agora, diferente, existe um oposto (aditivo) para cada nmero inteiro. Para x=5, existe o oposto aditivo que o -5, e 5 + (-5)=0; para x=-8, existe um outro oposto aditivo que o x'= 8, tal que x+x'= (-8) +8=0. Podemos fazer operaes entre predicados, proposies quantificadas e proposies simples, e ento temos o Clculo de Predicados, que pode ser de primeira ou segunda ordem. Estudamos os de primeira ordem que constituem os exemplos vistos e todos aquelas proposies onde as variveis aparecem sempre ligadas a um domnio, ou seja, no possuem variveis livres. Exerccios: 1. Quais as foram as definies, axiomas, propriedades que j foram vistas em lgica. 2. Qual o significado e valor lgico das seguintes sentenas? a) ( f sobre N)[ f(0)=1 e (xN)[x > 0 f(x)=f(x)+1] ]. b) ( f sobre N)[ f(0)=1 e (xN)[x>0 f(x)=x f(x-1)] ]. c) ( F sobre *) [F()= e ( w *) [x F( tail(x) )*head(x)] ] se w* tail(w) indica o fim da palavra e head(x) indica o incio da palavra. O Clculo de Predicados de Primeira Ordem no completo. Tal problema foi abordado por Hilbert em 1900. S foi resolvido negativamente por Gdel em 1931. Voltaremos a este assunto. 4. E o que Linguagem? Sabemos que no podemos passar diretamente um modo de realizar uma tarefa a um computador sem passarmos antes por uma linguagem que possa ser traduzida em instrues e comandos realizveis na mquinas computador. O mesmo acontece com msica? Os conceitos de linguagem que usaremos so mais restritos do que as linguagens naturais, isto , a utilizadas por ns. Existem estudos sobre as linguagens naturais para que possamos modela-las em termos computacionais mas isto outro assunto. Cp1Fundamentos 17/08/03 4

Prof. Jussara Maria Marins

Captulo 1

Leia os seguintes conceitos bsicos no livro texto 1:Teoria da Computao do Paulo e do Tiaraj, nas pginas 5,6 e 7. Linguagem Alfabeto Palavra Comprimento de uma palavra Subpalavra: prefixo e sufixo Linguagem Formal Concatenao de palavras Concatenao sucessivas de palavras

1.2. Conjuntos
Vale citar o que Paul Halmos fala sobre Teoria do Conjuntos em seu Livro "Nave Set Theory .. leia-a, absorva-a e esquea-a. "6 Noes bsicas ou Primitivas Elementos e conjuntos so noes primitivas Notao: I) Letras e Chaves Usualmente letras latinas maisculas para conjuntos; letras cursivas para conjuntos de conjuntos e letras minsculas para elementos. Isto no obrigatrio! Exemplos: Seja A o conjunto das letras vogais minsculas. A={a,e,i,o,u} Seja B o conjunto dos divisores de 24 B={1,2,3,4,6,12,24} Seja C conjunto dos subconjuntos de A II) Diagramas de Venn A A. b. g. 1. 67 3 B 9 45 2 3 5 6 8 9 12 C D

A={ A, b,g}

B={1,3,9,45,67}

C={2,3,5,6,8}

D={ 5,6,8,9,12}

Relao Bsica ou Primitiva Pertinncia: e A={a,e,i,o,u}, , pois e um elemento de X; X={a,e} X C ; um conjunto pode ser elemento de outro conjunto. i Y={a,u} pois i no um elemento de Y.

Axiomas: 1. Axioma da Extenso: Dois conjuntos so iguais se e somente se tm os mesmos elementos. 2. Axioma da Especificao: A todo conjunto A e a toda condio S(x) corresponde um conjunto B cujos elementos so exatamente aqueles x de A para os quais S(x) vale. Exemplos: a) S(x) a sentena: x casado. U={Marcos, Paulo, Joo, Ricardo, Artur, Andr}
6

No vale fazer s a primeira e ltima parte. Cp1Fundamentos

17/08/03

Prof. Jussara Maria Marins C={x U | x casado} C={Paulo, Joo, Artur} b) P(x) a sentena: x par. D={ x N| P(x)} D={2,4,6,8,10,12,...} 3. Axioma da Escolha: ser visto depois

Captulo 1

Diferena entre Definio e Conceito Definio: Dizer O QUE um objeto ou ente , de modo formal, ou por frmulas, de forma objetiva, completa, sucinta e sem ambigidades. Isto significa que na descrio da definio devemos usar noes primitivas, outras definies anteriores, outros resultados j estabelecidos , sem criar circularidades. Conceito: Dizer o que um ente7, explicao ou descrio de uma coisa, sntese, pensamento, etc. A definio semelhante e tambm se contrape ao conceito, onde se diz O que , mas de forma coloquial, intuitiva ou mesmo pessoal. Relaes de Incluso: X A; X B, A X, B A Definio 1: Incluso: estar contido Sejam A e B conjuntos A,B U, conjunto Universo ou referncia. A B ( x U) [ x A x B] Definio 2: Contm Seja A e B dois conjuntos BA A B Para os seguintes teoremas temos que U indica o conjunto Universo ou referencial Teorema 1: ( A U ) [ A] Teorema 2: ( A U) [A A] Definio 3: Igualdade de conjunto ( A, B U) [A=B A B e B A] Observe bem esta definio! H alguma coisa de errada com ela? Ou ainda, tem algo demais? Ela pode ser omitida? Operaes entre conjuntos: Na expresso x|x queremos dizer xU|x... ( A, B, C U) Definio 4: Unio

Ente um conceito da filosofia que designa uma coisa, ser ou substncia. Para ns melhor falarmos de objeto. Cp1Fundamentos 17/08/03

Prof. Jussara Maria Marins A B = {x | x A x B} Definio 5: Interseco A B = {x | x A x B} Definio 6: Diferena A-B = {x | x A e x B} Teorema 3: Dados A,B,C U, temos as seguintes propriedades: Idempotncia: A A = A A A = A Comutativa: A B = B A A B = B A Associativa : (A B) C = A (B C) (A B) C = A (B C) Distributiva: A (B C) = (A B) (A C) A (B C) = (A B) (A C) Absoro: A ( A B) = A A (A B) = A Leis de De Morgan: A - (B C) = (A - B) (A - C) A - (B C) = (A - B) (A - C)

Captulo 1

1.3. Relaes e Funes


Noo bsica: par ordenado (a,b) = {a,{a,b}} (a,b)(a,b) ou seja, no primeiro par, o 1 componente o a 2 componente o b. Axioma da Escolha: Para todo conjunto no vazio E, existe uma funo : (E)* E , tal que (X) X, para todo X (E)*. Em outras palavras, o axioma nos garante que podemos sempre fixar , ou escolhermos um elemento em cada parte no vazia de X. Em algumas situaes necessrio garantirmos tal existncia. Sendo assim podemos trabalhar com a operao seguinte que a do Produto Cartesiano. Definio 7 - Produto Cartesiano (A,BU) [A x B = {(a,b)| aA bB} Assim pelo axioma da escolha o produto cartesiano de dois conjuntos no vazios no vazio tambm. Definio 8 - Relao Binria: Relao Binria: entre 2 conjuntos A e B qualquer subconjunto do produto cartesiano de A e B. Exemplos: Cp1Fundamentos 17/08/03 7

Prof. Jussara Maria Marins a) A={a, m, k} e B={ 4,7} A x B ={(a,4),(a,7),(m,4),(m,7),(k,4),(k,7)} b) A={3,7} e B= ento A x B = . c) Se A= ou B= ento A x B =

Captulo 1

Podemos ter o produto cartesiano entre mais de 2 conjuntos, formando um conjunto de ternas: AxBxC={(a,b,c)| a A, b B, c C} Como h mais de 2 conjuntos, precisamos estabelecer se queremos ternas ou o produto cartesiano feito dois a dois conjuntos e a podemos associ-los diferentemente. Assim: (AxB)xC Ax(BxC) pois se C={x,y} ento: (AxB)xC= ={(a,4),(a,7),(m,4),(m,7),(k,4),(k,7)}xC={((a,4),x),((a,7),x),((m,4),x),((m,7),x),((k,4),x),((k,7),x),((a,4),y), ((a,7),y),((m,4),y),((m,7),y),((k,4),y),((k,7),y)} que diferente de Ax(BxC) pois faremos primeiro os pares de BxC e depois os pares com A . Assim podemos falar em: duplas : aRb (a,b) AxB ternas : aRbRc (a,b,c)AxBxC Podemos generalizar a definio de relao binria para uma relao n-ria, e da temos n-upla : a1Ra2R... Ran (a1,a2,...an)A1xA2x...xAn Definio 9 - Funo Funo de A em B uma relao binria R AxB tal que (aA)(!bB)| (a,b) R). Isto significa que cada elemento de A est em correspondncia com um s elemento de B. Exemplos: C: conjunto das cidades do Brasil E: conjunto dos estados do Brasil Sejam R1 C x E e R2 C x E a) b) R1: {(x,y)| xC, yE x uma cidade do estado y} R2: {(x,y)| xE, yC y uma cidade do estado x}

R1 uma funo e R2 no . Notao f: AB x y=f(x) A o domnio e B o Contra Domnio - (Range) y a imagem de x A' A e f[A']= {f(a)| aA'}={b| b=f(a) aA'} Um ponto a salientar que muitas vezes precisamos de uma generalizao do conceito de funo. Esta generalizao a chamada Funo Parcial, ou seja, uma relao onde um elemento do domnio pode no estar relacionado com algum do contra-domnio, mas mantm a caracterstica de estar relacionado a um s elemento do contra-domnio. Ainda dizemos que funo parcial uma funo que no esgota o domnio. A funo que esgota o domnio, ou seja est definida para todo domnio chamada de Funo Total. S quando for necessrio usaremos a funo parcial. O comuml usarmos a funo total ou apenas funo. Cp1Fundamentos 17/08/03 8

Prof. Jussara Maria Marins

Captulo 1

Exemplos de funes : a) A= B= R conjunto dos reais. f: AB x y=f(x)=x 2 b) f: AB x y=f(x)=x 3 + c) f: R R x y=f(x)=sqrt(x ) + onde R o conjunto dos reais positivos. d) Faa o grfico dessas funes e um diagram com alguns de seus elementos. Propriedades de funes Definio 10 -Tipos de funes Dado f: AB a) f injetora (a, a'A) [a a' f(a)f(a')) b) f sobrejetora (bB) (aA) [b=f(a)] c) f bijetora f injetora e sobrejetora Exemplos: Seja f: N N a) f(n)=n+1 f injetora mas no sobrejetora b) f(n) = n/2 se n par e (n-1)/2 se n mpar. Esta funo f sobrejetora mas no injetora. c) f : R R ( conjunto dos reais) f(x) = 2x+3 Neste caso f sobrejetora e injetora. Logo bijetora. Exerccios: 1. Verifique quais das seguintes relaes so funes: a) f: RR x y=f(x)=3+x 3 b) f: RR x y=f(x)=sqrt( |x | )+5 c) f: RR x y=f(x)=ln x + x 2 d) f: RR x y=f(x)=( x 2 -3 x -6) / (x+3) e) f: RR x y=f(x)=( x 2 -5 x -6) / (x+3) 2. Modifique o domnio para que as relaes sejam funes, caso j no o sejam 3. Quais delas so injetoras, sobrejetoras e bijetoras 4. Programe estas funes e a do exemplo b anterior em C. Como modificar o domnio da funo em C? Mude as declaraes das variveis para int, byte; float e double. Quais os limites? Definio 11: Relao Inversa. Uma relao binria R A x B tem uma inversa R-1 B x A que definida por (b,a) R-1 se e somente se (a,b) R. Teorema 4 : Uma funo f inversvel se e somente se f bijetora. Cp1Fundamentos 17/08/03 9

Prof. Jussara Maria Marins

Captulo 1

Definio 12: Isomorfismo Um isomorfismo entre dois conjuntos A e B dado por qualquer funo bijetora.

1.4. Tipos Especiais de Relaes Binrias


Depois das definicoes temos sempre a parte da classificao dos diferentes tipos definidos. Veremos os tipos e as representaes grficas a seguir. Representao grfica Diagramas Grafos 1 2 Grafo de R xRy xy 2) Diagrama de R 3 4 1 2 3 4

1) Exemplo: A = { 1,2,3,4} R AxA

Grafo: G = (V,A) V: conjunto de vrtices ou ns A: conjunto de arestas ou ligaes entre ns Exemplo 1: V= {1,2,3,4} A= {(1,1), (1,2), (1,3), (1,4), (2,2), (2,3), (2,4), (3,3), (3,4), (4,4)}

Fazer a figura do grafo V com as arestas dadas em A . Exemplo 2: V= {a,b,c,d} A= {(a,b), (b,a), (a,d), (d,c), (c,c), (c,a)}

Fazer a figura do grafo V com as arestas dadas em A . Propriedades das Relaes Ou seja, os tipos especiais de relaes que temos. Seja A um conjunto e RAxA Definio 13: Relao Reflexiva R reflexiva (aA) [aRa] ou (a,a)R aA Definio 14: Relao Simtrica Cp1Fundamentos 17/08/03 10

Prof. Jussara Maria Marins R simtrica (a,bA) [(a,b)R (b,a) R] Definio 15: Relao Transitiva R transitiva (a,b,cA) [(a,b)R (b,c)R (a,c)R] Definio 16 : Relao Anti-Simtrica R anti-simtrica (a,bA)[(a,b)R ab (b,a)R] ou (a,bA) [(a,b)R (b,a)R a=b Exemplos: a) xRy x amigo de y R no reflexiva no transitiva simtrica b) xRy x anterior a y R no reflexiva no simtrica transitiva Definio 17: Relao de Equivalncia Uma relao R que reflexiva, simtrica e transitiva dita uma Relao de Equivalncia. Notao: [a] = {b| (a,b)R} Exemplo : Q: conjunto das diferentes representaes das fraes prprias. R = Q x Q [1/2] = {1/2, 2/4, 3/6, 4/8, ...} [2/3] = { 2/3, 4/6, 6/9, 8/12, ...} R reflexiva - simtrica transitiva Definio 18: Relao de Ordem Parcial Uma relao R que reflexiva, anti-simtrica e transitiva dita uma Relao de Ordem Parcial Exemplo: a) R NxN xRyxy b) R P(A) xRyxy Definio 19: Relao de Ordem Total Uma relao R que de Ordem Parcial em A e: (a,bA) [(a,b)R ou (b,a)R ] dita Relao de Ordem Total

Captulo 1

Definio 20: Partio de A Dado um conjunto A e um conjunto U de subconjuntos de A dito uma Partio de A se valem as seguintes condies: (i) (X,YU) [XY = 0] (ii) (aA) (XU) [aX] (iii) U

Cp1Fundamentos

17/08/03

11

Prof. Jussara Maria Marins

Captulo 1

Teorema 5: Seja R uma relao de equivalncia num conjunto A, ento as classes de equivalncia de R constituem uma partio de A. Definio 21: Cadeia ou caminho Uma cadeia numa relao binria R uma seqncia (a1, a2,...,an) para algum n 1 tal que (ai, a i-1) R para i =1, ...,n-1 Definio 22: Ciclo O caminho chamado de circuito se se todos elementos so distintos e ainda ( na, a1) R. Obsevao: Um ciclo trivial se n=1 Teorema 6: Uma relao de ordem parcial se e somente se R reflexiva, transitiva e no tem ciclos triviais. Definio 23: Elemento minimal Se R uma relao de ordem parcial, ento um elemento minimal de R um elemento a tal que (b,a) R se e somente se b=a. Exemplos: a) (Z,) ordem parcial no tem elemento minimal. b) (N, ) ordem parcial. O zero (0) elemento minimal. c) X={{a},{b,c,d},{a,d}{b,d},{c,d},{c},{a,b,c}} e X ({a,b,c,d} e a relao de incluso os elementos {a} e {c} so minimais de X. H outros?

1.5. Operaes sobre Funes


Definio 24: Funo Composta Seja f uma funo de um conjunto E num conjunto F e seja g uma funo de F num conjunto G; chama-se composta de g e f funo h, de E em G, definida por h(x) = g(f(x)), para todo x em E. Indicaremos esta funo h por g f (leia-se: g composta com f ou g crculo f); portanto, g f (x) = g(f(x)) para todo x em E. Representa-se tambm a composta g f pelo diagrama E gf G A composta de g e f s est definida quando o contra - domnio de f igual ao domnio de g. Em particular se f e g so funes de E em E, ento, as compostas g f e f g esto definidas e so aplicaes de E em E. Exemplo - Consideremos as funes f e g, de R em R, definidas por f(x)=2x e g(x)=x2 para todo x em R. Neste caso esto definidas as compostas g f e f g e temos (g f)(x)=g(f(x))=g(2x)=(2x)2 =4x2 Cp1Fundamentos 17/08/03 12 f F g

Prof. Jussara Maria Marins (f g)(x)=f(g(x))=f(x2 )=2x2 logo, f g g f. Teorema 7 - Quaisquer que sejam as aplicaes f g h E F, F G e G H Tem-se (propriedade associativa) (h g) f = h (g f). Teorema 8 - Se as aplicaes f: E F e g: F G so sobrejetoras, ento a composta g f tambm sobrejetora. Teorema 9 - Se as aplicaes f: E F e g: F G so injetoras, ento a composta g f tambm injetora.

Captulo 1

1.6. Cardinalidade de Conjuntos Seja A um conjunto finito ento seu tamanho dado pelo nmero de seus elementos. Notao: |A| ou # (A) Exemplo: A={a,b,c,d,e} |A| = 5, || = 0, |{a,{b}}| = 2 Teorema 10 : Se A e B so finitos e se A B ento |A| |B| A B ento |A| < |B| O teorema acima vlido para conjuntos infinitos? Veja o que voc acha, nestes casos: A = M(17) = {0,17,34,51,68,..., } B = {0,1,4,9,16,25,36,... } C= {0,2,4,6,8,10,12,... } = M(2) D = {0,6,12,18,24,30,... } = M(6) M(2) M(6) |C| < |D| ? Definio 25: Conjuntos Equipotentes Dizemos que 2 conjuntos A e B so equipotentes (equinumerous) se existe uma bijeo f: A B Exemplo 1) A= {8,2,{,b}} B= {x,y,z} (8) = x (2) = y ({,b})) = z Cp1Fundamentos 17/08/03 13

Prof. Jussara Maria Marins

Captulo 1

2) A= M(17) = {0,17,34,51,...} B = {0,1,4,9,16,25,36,...} f: A B f(n) = ? f(17.n) = n2, n N Definio 26: Conjunto Enumervel Um conjunto dito contavelmente infinito (contably infinite ) se ele equipotente ao conjunto N. Um conjunto dito contvel ou enumervel se ele finito ou contavelmente infinito. Exemplos: 1) Z N Z = {..., -4,-3,-2,-1,0,1,2,3,4,...} N = {0,1,2,3,4,....} Z = {0,+1,-1,+2,-2,+3,-3,...} n se n=0 f(n) = n/2 se n impar -n/2 se n par 2) Q = {a/b| aZ, bZ, b0} NQ? A unio de um nmero finito de conjuntos contavelmente infinitos contavelmente infinita. Se Ai so contavelmente infinitos, ento n U Ai contavelmente infinita i=1 - Se A contavelmente infinito A = {a0, a1,a2, a3, a4, ...} A,B e C contavelmente infinito A = {a0, a1,a2, a3, a4, ...} B = {b0, b1,b2, b3, b4, ...} C = {c0, c1,c2, c3, c4, ...} Esquema de caminhamento: (ou percorrimento) a0, b 0, c0, a1, b1, c1, a2, b2, c2, a3, b3, c3, a4, ... b4, ... c4, ... -

Logo, ABC: contavelmente infinito. N x N contavelmente infinito ?

notao U Ai: unio infinita de Ai i N x N = {0} x N {1} x N {2} N FIGURA: fazer no quadro. Cp1Fundamentos

17/08/03

14

Prof. Jussara Maria Marins

Captulo 1

1 Passo: visitar um elemento do 1 conjunto (0,0) 2 Passo: visitar o prximo elemento do 1 conjunto (0,1) e tambm o primeiro elemento do 2 conjunto (1,0) 3 Passo: visitar o prximo elemento no visitado do 1 e 2 conjuntos (0,2) e (1,1) e tambm o 1 elemento do 3 conjunto (2,0) 4 Passo: Em geral, no nsimo passo, visitamos o nsimo elemento do primeiro conjunto, (n-1)th do segundo, o (n2) do terceiro, ... e o 1 elemento do nth conjunto. A relao (i,j) N x N se e s se i+j = n-1

1.7. Fechos
Observe a seguinte seqncia: (N, +) fechado para adio x, y N , x + y N (N, -) no fechado para subtrao (Z, +) fechado para adio e (Z, -) fechado para subtrao Vemos que quando um conjunto no fechado para uma operao ele pode ser ampliado.

Definio 26: Fecho de um Conjunto Seja D um conjunto e n 0 e seja R Dn+1 uma relao (n+1) ria em D. Um subconjunto B de D dito fechado sobre R se bn+1B sempre que b1, ..., bnB e (b1,..., bn+1)R Exemplo: D= 2A A = {a,b} (S,T,U) R D2 ST = U a) B D fechado sob R X,YB B = {{xN a x b} a,bN} B={[1,1],[1,2],[1,3],...[1,n],...[2,3],[2,4],...[2,n],...} Exerccios: 1. Verifique se o conjunto dos ancestrais de uma pessoa fechado sob a relao : {(a,b)| a e b so pessoas e b pai de a} 2. Usando a definio mostre que (N,+) fechado e que (N,-) no fechado.

1.8. Tcnicas Fundamentais de Provas


Perceber as relaes que criamos na matemtica um exerccio de observao, comparao e anlise. Quando uma nova relao construda precisamos prov-la. Provar um teorema um exerccio de criatividade mas tambm possui tcnicas. Vejamos as tcnicas. Prova Direta a mais comum e no constitui novidade em si. Basicamente um teorema uma proposio da forma pq onde p a hiptese e q a tese.

Cp1Fundamentos

17/08/03

15

Prof. Jussara Maria Marins

Captulo 1

Na prova direta, assume-se que p verdadeira e a partir dos axiomas , definies e outros teoremas e por dedues lgicas chega-se diretamente veracidade de q. Prova por Contradio: Na prova por contradio, nega-se o condicional , o u seja afirma-se que : p q ( p q) F ( F: contradio, proposio sempre falsa ) O que vlido pelo princpio do terceiro excludo. Veja a tabela verdade: q q F p^q pq p^qF (pq) V F V F F F F F F F V V V V V F V F F F F F F V V F F F

p V V F F

Prova Contra - positiva: p q ( q p) Ou seja, pode ser mais fcil provar a segunda parte. A afirmao anterior provada apenas propriedades lgicas. Fazer a tabela verdade.

Princpio da induo Matemtica Seja A um conjunto de nmeros naturais tal que : (1) 0 A, e (2) n N, se {0,1,2,...,n} A, ento n+1 A Ento N = A Tcnica da Prova por Induo Matemtica Para todo nmero natural n, a propriedade P verdadeira A = { n P(n) verdadeira} Passos : (a) Base de Induo : 0 A P(0) V. (b) Hiptese de Induo : P(n) V (c) Passo de Induo : P(n+1) V. Logo, pelo Princpio da Induo P(n) V. Exemplo :

Cp1Fundamentos

17/08/03

16

Prof. Jussara Maria Marins

Captulo 1

i =
i =0

n2 + n 2

(a)BI : Se n = 0

P ( n) = i =
i =0

02 + 0 ? 2

P(0) = 0 (b)HI : P(m) = 1 + 2 +... + m = m2 + n / 2 , m n. (c)PI : P(n+1) V.

P (n + 1) = 1 + 2 + ... + n + (n + 1) = =

HI

n2 + n + (n + 1) 2

n 2 + n + 2(n + 1) n 2 + 2n + 1 + n + 1 = = 2 2

(n + 1) 2 + (n + 1) = 2
Exemplo

c.q.d

Para qualquer conj. Finito A, 2A = 2|A| B.I: A= |A| =0 P(a) =2A = {} |P(A)| = 1, 20=1 p(0) V HI: Seja n> 0 |2A| = 2 |A| dado que |A| < n PI: Seja A tal que |A| = n+1 Como n> 0, tal contm pelo menos um elemento B= A {a}, |B| = n |2B| = 2 |B| = 2n P(A) 2 partes 2A= 2B {C {a}| C 2B} 8 |2A| = 2n + 2n = 2 n+1 = 2 |A|
8

So disjuntos. Cp1Fundamentos

17/08/03

17

Prof. Jussara Maria Marins

Captulo 1

Princpio Pigeonhole Verso coloquial: Se n pombos voam para k casinhas (pigeonholes: buracos do pombal) e k < n, ento alguma casinha contm pelo menos 2 pombos.9

Verso matemtica: Teorema 11: Se A e B so conjuntos finitos e |A| > |B|, ento existe uma funo injetora de A em B. Prova : BI : |B| = 1 |B| = {b} e |A| > 1, a1,a2 A f:AB f(a1) = f(a2) = b f no injetora HI : Suponha que f no injetora . Dado que f : A B, |A| > |B| e |B| n, n 1 PI : Suponha que f : A B e |A| > |B| = n + 1 Escolhendo b e B. - Se |f-1(b)| 2 ento f no injetora - Se |f-1(b)| 1 considerar a funo g g : A f-1(b) B {b} g(a) = f(a) para cada a A - f-1(b) Ento |A - f-1(b)| |A| - 1, |B {b}| = n < |A| - 1 Logo, pela HI g injetora Ento g(a1) = g(a2), a1,a2 A - f-1(b) e Da f(a1) = f(a2) f no injetora. Teorema 12: Seja R uma relao binria num conj. Finito A . Se existem cadeias arbitrariamente grandes em R ento existe um ciclo em R. Prova : Seja (a1,a2,...,an) uma cadeia, para algum n > |A|. Seja f : {1,2,...,n} A
9

Por que pombos? Cp1Fundamentos

17/08/03

18

Prof. Jussara Maria Marins

Captulo 1

F(i) = ai i Logo pelo Princpio do pigeonhole' f no injetora. F(i) = f(j) para algum i e j 1<i<j<n Seja k o menor no. tal que k>0 e f(m) = f(m+k) para algum m, 1<m<n (am,a m+1,...,a m+k-1) um ciclo Princpio da Diagonalizao Seja R uma relao binria num conj. A, e seja D o conj. Diagonal para R dado por {a | a A e (a,a) R} Para cada a A, seja Ra= {b | b A e (a,b) R Ento D diferente de cada Ra Exemplo: A= {a,b,c,d,e,f} R={(a,b),(a,d),(b,b),(b,c),(c,c),(d,b),(d,c),(d,e),(d,f),(e,c),(e,f),(f,a),(f,c),(f,d),(f,e)} a a b c d e f b X X X X c X X X X X d X e f

X X X

X X

D = {a,d,f} Ra = {b,d} Rb = {b,c} Rc = {c} Rd = {b,c,e,f} Re = {e,f} Rf = {a,c,d,e} Teorema 13: O conj. 2N incontvel, no enumervel. Prova: Demonstrao por absurdo. Suponhamos que 2N enumervel. Logo existe uma funo bijetora de N em 2N Seja f dada por: f: N 2N f(i) = Si, i N

Cp1Fundamentos

17/08/03

19

Prof. Jussara Maria Marins Ento 2N admite uma enumerao.10 2N= {S0, S1, S2,...} Seja D um conjunto tal que: D={n N | n Sn}, D N

Captulo 1

Quem realmente o conjunto D? D N k N tq. D=Sk Tome um elemento k natural . Qual a relao de k com Sk? Suponhamos que k pertence a Sk a) k Sk. Como D = {n | n Sn} k D e D= Sk, logo k Sk Suponhamos que k no pertence a Sk. b) k Sk. c) Ento k D mas D = Sk logo k Sk Logo sempre chegamos a uma seqncia de proposies que implica num absurdo. Logo a proposio inicial falsa. Logo, 2N no enumervel

10

Observe que os conjuntos S i so os conjuntos D a da diagonalizao, onde a relao S dada por S= {(i,j) | j S(i)}

Si = {i | (i,j)R} = Si D Si D f [N] Cp1Fundamentos 17/08/03

20

Prof. Jussara Maria Marins

Captulo 2 Programas, Mquinas e Computaes

1. Fundamentos 2. Programas, Mquinas e Computaes


Este captulo esta totalmente baseado no captulo 2 do livro texto Teoria da Computao do Tiaraj e Paulo, ambos professores do Instituto de Informtica da UFRGS. O Professor Paulo doutor em Matemtica (na rea de Teoria da Computao) pela Universidade de Lisboa. O Professor Tiaraj doutor em Cincia da Computao pela UFGRS. A vantagem desta abordagem possuir uma linguagem satisfatria sobre a teoria, inerente ao assunto, de modo bem mais coloquial do que outros livros sobre o assunto, sem deixar de lado a formalidade necessria ao assunto. Objetivos: "Neste captulo introduzida a formalizao das noes de programa, de mquina, de computao e do que computvel em uma mquina e das relaes entre formalismos como, equivalncia e simulao."1

Ateno: O curso proposto pelo livro de 60h, o que no o nosso caso, por isso faremos algumas simplificaes.

Aquilo que estiver em itlico e salientado de amarelo cpia direta do livro. Mas ateno: nem todas as transcries foram feitas. Logo no basta ler as anotaes deste arquivo. Cp2Programa 1 17/08/03

Prof. Jussara Maria Marins

Captulo 2 Programas, Mquinas e Computaes

Roteiro: Ler os seguintes itens: 2.1. Programas


Parece que comeamos a pintar as paredes de cima para baixo. Metodologia Top Down ou Botton Up? Observe que no se parte de nenhuma noo bsica anterior e que no se questiona a natureza das operaes.

2.1.1. Programa Monoltico


"Um programa pode ser descrito como um conjunto estruturado de instrues que capacitam uma mquina a aplicar sucessivamente certas operaes bsicas e testes sobre os dados iniciais fornecidos, com o objetivo de transformar estes dados numa forma desejvel". a) Estruturao monoltica: baseada em desvios condicionais e incondicionais , no possuindo mecanismos de explcitos de iterao, subdiviso ou recurso. b) Estruturao Iterativa: Possui mecanismos de controle de iteraes de trechos de programas. No permite desvios incondicionais. c) Estruturao Recursiva: Possui mecanismos de estruturao em sub-rotinas recursivas. Tambm no permite desvios incondicionais Composies: a) Composio seqencial: A execuo da operao ou teste subseqente somente pode ser realizada aps o encerramento da execuo ou teste anterior. b) Composio no determinstica: Uma das operaes ou testes compostos escolhida para ser executada. tambm chamada de escolha. c) Composio concorrente: As operaes ou testes compostos podem ser executados em qualquer ordem, inclusive simultaneamente, ou seja, a ordem da execuo irrelevante. Notao: Identificadores de operaes: F,G,H Operao vazia: smbolo: Identificadores de Testes: T1, T2, T3,... Definio 2.1 Rtulo, Instruo rotulada a) Rtulo ou Etiqueta: uma cadeia de caracteres finita(palavra) constituda de letras ou dgitos. b) Instruo rotulada i uma cadeia de caracteres finita(palavra) de uma das formas a seguir (suponha que F e T so identificadores de operao e teste, respectivamente e que r1, r2 e r3 so rtulos): b1) Operao: r1: faa F v_para r2 ou r1: faa : v_para r2 b2) Teste: r1: se T1 ento v_para r2 seno v_para r3 Exemplo1: 1: faa F v_para 2 2: se T1 ento v_para 1 seno v_para 3 3: faa G v_para 4 4: se T2 ento v_para 5 seno v_para 1 Tentando fazer outra abordagem, isto , mais construtiva, poderamos retornar a tentativa de conceituar algoritmo, que nestas alturas do campeonato, deve ser mais fcil. Algoritmos Alguns conceitos usuais: Um procedimento uma seqncia finita de instrues que podem ser executadas por um agente computacional. Um procedimento efetivo uma descrio no ambgua de um conjunto finito de instrues Cp2Programa 2 17/08/03

Prof. Jussara Maria Marins Captulo 2 Programas, Mquinas e Computaes Um procedimento efetivo pode executar uma tarefa, computar uma funo ou fazer uma seqncia de operaes relacionadas. Um procedimento efetivo que especifica uma seqncia de operaes que sempre pra chamado de algoritmo. Assim como em Geometria temos algumas noes bsicas que no so definidas em Computao temos o conceito de algoritmo que consiste numa noo bsica. Em 1936 Alan Turing (1912-1954) props um formalismo para a representao de procedimentos efetivos. Pela primeira vez foram identificados programas escritos para uma mquina de computao automtica. Esta circularidade no nos interessa. Logo voltamos ao ponto de partida ou ento deixemos a Mquina de Turing para depois. Definio 2.2 Programa Monoltico Um programa Monoltico uma par ordenado P=(I,r) Onde: I : Conjunto finito de instrues r: Rtulo inicial o qual distingue rotulado em I Observao: No existem duas instrues rotuladas diferentes com um mesmo rtulo; Um rtulo referenciado por alguma instruo o qual no associado a qualquer instruo rotulada dito rtulo final. Observao: A todo programa monoltico corresponde um fluxograma

v partida parada operao

teste

Exemplo2: a) P1=(I1,1) onde I1 o conjunto das instrues rotuladas 1,2,3 e 4 do exemplo 1 e 5 neste caso rtulo final. b) P2({r1: faa : v_para r2},r1) onde r2 o rtulo final Exemplo3: Exemplo da apostila de Introduo Computao do Prof. Fbio do ITA, retirado de um livro o qual no lembro e que gosto muito. 1)Entrada de cartes; 2) Calculadora, 3) Escaninho, 4) Mquina de escrever, 5) Operador, e cartes auxiliares se forem necessrios. Observe ( melhore) o desenho:

Escaninho: caixa numerada com instrues ou dados de cartes Operador: Pessoa ou unidade de controle Programa: Cp2Programa 3 17/08/03

Prof. Jussara Maria Marins Captulo 2 Programas, Mquinas e Computaes E1: Ler um carto e colocar em E16; E2: Somar 1 a E14; E3: Ler um carto e colocar em E15; se acabarem os cartes ento executar instruo de E6. E4: Somar E16 com E15 e colocar resultado em E16; E5: Executar instruo de E2; E6: Dividir E16 por E14; E7: Imprimir valor de E12; E8: Terminar trabalho. E9 at E16 esto zerados no incio. Observao 2.3 Fluxograma2 Faa o fluxograma do exemplo 1 e do exemplo 3.

2.1.2. Programa Iterativo


Definio 2.4 Programa Iterativo J vi este filme! Quaisquer semelhanas com a "vida real" proposital. Na pgina 15 do livro os autores falam em Programao Estruturada. A preocupao com a eficincia e correo junto com sua necessria prova (matemtica, claro) de um programa que originou a procura do que hoje chamada programao estruturada. O artigo seminal "An axiomatic basis for computer programming" de C. A . R. Hoare est publicado na Communication ACM 12, pp 576-584 de 1963. Este mesmo autor juntamente com o prof. Wirth definiu axiomaticamente a Linguagem Pascal em 1973. Ainda da dcada de 60 temos o clssico artigo Why GOTO is warmfull ? dos autores O . J. Dahl; E. W. Dijkstra e C. A . R. Hoare.

2.1.3. Programa Recursivo


Definio 2.5 Expresso de Sub-rotinas Definio 2.6 Programa Recursivo Exerccios: 1. Diga com suas palavras o que um programa? 2. Por que no foi definido um programa genrico, assim como foi definido, por casos, o monoltico, o iterativo ou o recursivo? 3. Faa os exerccios de 2.1 a 2.3 da pgina 58.

2.2. Mquinas
Grupo1: pgina 20 at 23. Definio 2.7 Mquina Exemplo 2.7 Definio 2.8 Programa para uma Mquina Exemplo 2.8 Exemplo Extra: Traduzir o exemplo 3 para a mquina de 2 registradores: fazer os programas auxiliares: prg_a amaisb ; prg_a adivb ;

2.3. Computaes e funes computadas


Grupo2 Pgina 23 at 27.

2.3.1. Computao
Definio 2.9 Computao de Programa Monoltico para uma Mquina
2

Uma imagem sempre vale por 1000 palavras? 4 17/08/03

Cp2Programa

Prof. Jussara Maria Marins Captulo 2 Programas, Mquinas e Computaes Exemplo 2.9 Exemplo 2.10 Definio 2.10 Computao de Programa Recursivo para uma Mquina Exemplo 2.11 Grupo3 Pgina 27 at 31. Mquina de um Registrador Exemplo 2.12

2.3.2. Funo Computada


Definio 2.11 Funo computada por um Programa Monoltico para uma Mquina Exemplo 2.13 Exemplo 2.14 Definio 2.12 Funo Computada de um Programa Recursivo para uma Mquina Exemplo 2.15 Exemplo 2.16 Exemplo 2.17

2.4. Equivalncia de programas e mquinas 2.4.1. Equivalncia Forte de Programas


Definio 2.13: Relao de equivalncia Forte entre programas Exemplo 2.17 Teorema 2.14 Teorema 2.15 Corolrio 2.16 Teorema 2.17 Teorema 2.18 Observao 2.19

2.4.2. Equivalncia de programas


Definio 2.20: Relao de equivalncia de programas em uma Mquina

2.4.3. Equivalncia de Mquinas


Definio 2.21: Simulao Forte de Mquinas Definio 2.22: Simulao de Mquinas Definio 2.23: Relao de equivalncia de Mquinas

2.5. Verificao da Equivalncia Forte de Programas


No ser visto.

2.6. Concluso 2.7. Exerccios


Pgina 58 a 64.

Cp2Programa

17/08/03

Prof. Jussara Maria Marins

Captulo 2 Programas, Mquinas e Computaes Trabalho em Grupo:

I) 1. 2. 3. II) a) b) c) III) III)

Objetivos: Definir cada mquina citada conforme apresentado no livro texto 1. Definir o que um programa para esta mquina Programar nesta mquina. Trabalho: Redigir o trabalho de forma objetiva e disponibilizar o arquivo para todos alunos Ilustrar com outros exemplos alm do solicitado Seguir a numerao das definies, conforme dado neste captulo. Apresentao: A) Para toda classe em at 20 minutos B) Estimular a participao de todos Data: Ser definida em aula.

Este trabalho pode ser complementado com outros tpicos relacionados, embora ele tenha um carater particular e terico. Outros trabalhos envolvero a programao em Linguagem C ou Pascal.

Cp2Programa

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

INSTITUTO PRESBITERIANO MACKENZIE

Professora Jussara Maria Marins Teoria da Computao Captulo 3 :Mquina de Turing E Outras
1. Fundamentos 2. Programas, Mquinas e Computaes 3. Mquina de Turing e Outras
1. 2. 3. FUNDAMENTOS..................................................................................................................................... 1 PROGRAMAS, MQUINAS E COMPUTAES.............................................................................. 1 MQUINA DE TURING E OUTRAS ................................................................................................... 1 3.1. MQUINAS DE TURING ........................................................................................................................ 2 3.1.1. Mquinas de Turing e seus Modelos .......................................................................................... 3 3.1.2. Mquinas de Turing como Reconhecedores ............................................................................... 9 3.1.3. Mquinas de Turing como Processadores de Funes ............................................................ 10 3.1.4. Extenses da Mquina de Turing ............................................................................................. 11 3.1.5. Outras Funes Numricas ...................................................................................................... 15 Os objetivos deste captulo so: - compreender que algoritmo um conceito bsico - definir Mquina de Turing e verificar que ela ao mesmo tempo um reconhecedor de linguagens, um programa e um modelo para um computador - programar vrias mquinas de Turing - definir uma mquina universal e compreender sua necessidade para a formao da cincia da computao - definir teoricamente e programar outras mquinas computacionais

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Captulo 3 :Mquina de Turing E Outras


3.1. Mquinas de Turing
Ler a seo 3.4 e 3.4.1 nas pginas 83 e 84 do livro texto1. Retomar os conceitos usuais: de algoritmos: O repeteco o mesmo mas observemos todas as palavras em itlico. Um procedimento uma seqncia finita de instrues que podem ser executadas por um agente computacional. Um procedimento efetivo uma descrio no ambgua de um conjunto finito de instrues Um procedimento efetivo pode executar uma tarefa, computar uma funo ou fazer uma seqncia de operaes relacionadas. Um procedimento efetivo que especifica uma seqncia de operaes que sempre pra chamado de algoritmo. Cada uma das palavras selecionadas ou requer uma nova definio e usando apenas as j definidas anteriormente no so suficientes para completar a idia de seqncia, instrues e efetividade. Assim como em Geometria temos algumas noes bsicas que no so definidas, como reta, ponto e plano em Computao temos o conceito de algoritmo que consiste numa noo bsica. Em 1936 Alan Turing (1912-1954) props um formalismo para a representao de procedimentos efetivos. Pela primeira vez foram identificados programas escritos para uma mquina de computao automtica. Ver alguns aspectos histricos Conceito de Mquina Turing. Uma mquina de Turing consiste numa mquina abstrata com um controle finito, numa fita com clulas, num cabeote que pode ser usado para ler ou escrever na fita, mover-se para direita ou esquerda. Satisfaz a 3 condies: - Deve ser um autmato - Deve ser simples de descrever - Deve ser geral o suficiente para descrever uma computao. A figura a seguir mostra uma representao grfica desta idia. a b a a

UC

q1

q1 q2 q3

h A unidade de controle opera em passos discretos e faz 2 funes, o que depende do estado atual e do smbolo da fita que est sendo pesquisado pelo cabeote:

(1) Pe a Unidade de Controle num novo estado E; (2) No estado E: (2a) Escreve um smbolo na fita substituindo o que est sendo pesquisado, ou (2b) Move o cabeote uma clula para a esquerda ou direita.

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

3.1.1. Mquinas de Turing e seus Modelos


A seguinte definio da Mquina de Turing a mais comum e segue o livro do Papadimitriou, ou o que indicaremos por livro 2, enquanto que o livro do Prof. Paulo Menezes ser indicado por livro 1. Est na pgina 181 que aqui repetida. Definio 3.1: Uma M.T: Mquina de Turing uma quntupla (K, , , s, H) onde: - K: conjunto finito de estados; - : alfabeto contendo o smbolo branco: e o smbolo terminal mas que no contm ; - sK: o estado inicial; - HK: o conjunto dos estados finais ou de parada - : funo de transio : (K-H) x K x ( { }) (qi,) = (qj,) (a) ( qK-H), se (q, .) = (p,b) ento b = (b) ( qK-H) e a se (q,a) = (p,b) ento b . Se qK-H, a (q,a) = (p,b) Se a Mquina de T.M est no estado q e l o smbolo a do alfabeto ento ir para o estado p e (1) se b ento M substituir a por b (2) se b = ou b = , ento M ir mover o cabeote para a direita ou esquerda respectivamente. Obs: 1- funo Mquina de Turing. determinstica 2- A Mquina de Turing pode alterar a entrada e escrever brancos. 3- A Mquina de Turing pode nunca parar, Exemplo 1: M = (K,,,s,{h}) K = {q0,q1,h} = {a, , } s = q0 = {q0,q1} x {a, } { q0,q1,h} x { a, ,

,,}

Domnio: D={(q0,a), (q0, ), (q0, ), (q1,a), (q1, ), (q1, )} #(D)= 6 Contra Domnio CD={( q0,a),(q1,a), (q0, ),(q1,a),(q1, ),..} #(CD)=15 Fita: aaaa (qi,) 1 (q0,a) 2 (q0, ) 3 (q0, ) 4 (q1,a) 5 (q1, ) 6 (q1, ) (qi,) (q1, ) (h, ) (q0, ) (q0,a) (q0, ) (q0, )

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Execuo: Contedo da Fita, onde o sublinhado indica o cursor e regra aplicada: 1 2 a a a a

(q0,a) (q1, ) Regra 1 a a a

(q1, ) (q0, ) Regra 5 a a a

(q0,a) (q1, ) Regra 1 a a

(q1, ) (q0, ) a a

(q0,a) (q1, ) a

(q1, ) (q0, ) a

(q0,a) (q1, )

(q1, ) (q0, )

(q0, ) (h, ) Regra 2

Esta mquina recebe uma entrada, com um nmero qualquer de smbolos, pesquisa para direita, e muda-os para branco, ou seja apaga os smbolos no-brancos. Se o contedo da fita fosse: aaaa, no estado q1,comearamos da regra 6. Exemplo 2: M= (K, , , s, H) K = { q0,h} s = q0 = {a, , H = {h} } funo de transio : q, ( q,) 1 q0 a (q0,) 2 q0 , (h, ) 3 q0 (q0,)

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

I) Se o contedo da fita a a

aa, temos

(q0, ) (q0,) Regra 3 a a

(q0,a) (q0,) Regra 2 a (q0, a

) (q0,) Regra 3 a a

(q0,a) (q0,) Regra 2 etc...e a mquina de Turing nunca pra. II) Se o contedo da fita a a aa, temos

(q0,a) (q0,) a a

(q0,a) (q0,) a a

(q0, ) ( h, ) Neste caso, a Mquina Turing pra, pesquisou para esquerda at encontrar o primeiro branco e parou. A definio do Livro Texto 1 diferente pois acrescenta outros itens que no estavam colocados na notao mais comum e que seriam introduzidos depois. Leia a definio 3.4 do Livro1 nas pginas 84 85. Comparemos: - Mudamos de quntupla para 8-upla. - Definio 3.1 A : M=(, Q,, q0,F,V,,) onde: - Q: conjunto finito de estados; - : alfabeto de entrada - (no contendo o smbolo branco: e o smbolo terminal mas que no contm ; ) - q0: o estado inicial, q0 Q; - FQ: o conjunto dos estados finais ou de parada - : funo de transio o smbolo branco: - : smbolo inicial da fita (estado corrente, smbolo lido)=(novo estado, smbolo gravado, sentido do movimento que agora E (esquerda) ou D (direita).

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Outra mudana o modo de representar a funo ou , onde (qi,) = (qj,) mostra ora o novo smbolo ou o movimento. A tabela, consequentemente, diferente. Notao para Mquinas de Turing A notao de Mquinas de Turing pode ser semelhante de autmatos usando nodos e arcos ou arestas de um grafo para representar os estados e as transies. As mquinas em si tambm podero ser agrupadas atravs de uma hierarquia a partir de mquinas bsicas. A nova notao envolve tanto o smbolo modificado como o movimento da seguinte maneira: (p, a u )=(q, a v , m) Graficamente, podemos representar como autmatos, levemente modificado e ento temos temos: ( a u ,, a v ,m) p Estado corrente Smbolo lido Smbolo gravado Outra maneira representar a funo de transio por uma tabela que alis mais prpria para ser utilizada como estrutura de dados para um programa em qualquer linguagem computacional ou mesmo num mecanismo material: algo como uma mquina mecnica tipo uma mquina de tric, um relgio acoplado uma maquina de escrever com smbolos s do alfabeto, ou uma mquina analtica de Charles Babage que simule uma mquina de Turing. D asas sua imaginao e faa um desenho de uma tal mquina. A tabela pode ser representada da seguinte maneira: No estado p com o smbolo a u ,,na fita, substitui por a v e faz o movimento m, indo para o estado q . Na primeira linha esto todos smbolos do alfabeto e na primeira coluna esto todos os estados. p q ... Sentido do movimento q

Novo estado

au (q,,av,m)

...

av

...

Exemplo 3: Seja a Mquina de Turing com a seguinte configurao inicial: (q1, a a a a). (qi,) (1) q0 a (2) q0 (3) q0 (4) q1a (5) q1 (6) q1 (q1 aaaa) M (q0, (qi,) (q1, ) (h, ) (q0,) (q0,a) (q0, ) (q1, ) a a a a)

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

M (q1, a a a) M (q0, a a a) M (q1, a a) M (q0, a a) M (q1, a) M (q0, a) M (q1, ) M (q0, ) M (h, ) Neste exemplo a computao tem 10 passos. Para fazer a representao de autmato para a mquina anterior, simplificaremos a transio escrevendo apenas o smbolo que for mudado ou a direo como indicado na definio da funo (qi,) = (qj,). O desenho ser, por exemplo:

3.(

, ) 1 (a , )

q0

(a,a) 4

q1 (,) 5

.( , ) 6

2. (,) h

Uma prxima etapa juntar o movimento e a troca do smbolo na transio. O autmato ficar simplificado, pois diminui-se um estado, como na figura seguinte: (a,,)

q0

(,,) h .( , )

Autmato da Mquina de Turing que apaga Exerccio: Faa uma Mquina de Cpia Seja * que contm smbolos no brancos e que pode ser uma string vazia. A mquina C copia com uma clula branca a sua esquerda e o cabeote colocado numa clula branca a esquerda de . Escreva a funo de transio delta ou desenhe o autmato.

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Exemplo 4: Mquina do Duplo Balanceamento Esta mquina verifica se uma palavra que est na fita tem a seguinte propriedade: inicia com a letra a em um nmero n de vezes que seguido pelo mesmo nmero de vezes da letra b. Duplo_Bal = { anbn | n 0} Exemplos: So aceitas: aabb; ab, e ( palavra vazia) ,aaaabbbb, etc No so aceitas: aab, ba, aaabb, etc Veja a descrio completa, isto , definio, tabela e grafo na pgina 89 e 90 Seja 0 - { } um alfabeto chamado de Alfabeto de Entrada de M. Durante o trabalho de M podemos ter smbolos auxiliares que no fazem parte da Entrada, so smbolos auxiliares o seu conjunto indicado por V. Outro modo de fazer a maquina Duplo_bal o seguinte autmato: Sejam ={a, b, , } K={1,2,3,4,5,6}, s=1, H={6} V={A,B}. A Mquina seguinte reconhece L={a i, bi, | i 0} Se a mquina chegar no estado 6 a palavra aceita, caso contrrio rejeitada.

(,,R) 1 (a,A,R) 2

(B,B,R) (b,B,L) (a,a,R) (A,A,R) 4 3

(B,B,L) (A,A,R) 5 (,,R) 66

(a,a,L) (B,B,R) (a,a,L)

Exerccio: Tente fazer outra mquina com menos estados e regras que a primeira. Exemplo 5: Temos agora uma extenso do exemplo do Duplo_Bal, que o Triplo_bal, ou seja: L = {an bn cn | n 0} A notao seguinte do livro 2. Papadimitriou. Observe que h uma correo. Nesta notao R indica uma mquina composta que sempre vai para direita em qualquer smbolo do alfabeto, R2 vai duas clulas para direita; R a significa que vai para a direita em qualquer smbolo diferente de branco: ; se temos dR significa que substitui o smbolo da fita que est no cabeote por d e vai para direita; e assim por diante. Usamos 2 novas mquinas: A mquina 'y' faz o novo estado de aceitao, enquanto que 'n' faz o estado de rejeio = {a, b, c} 0 = {a, b, c, d}

d a a b,c

a,a bb c,

b,b cc

R Incio y

dR

dR a,

dL

nn

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Em cada estgio M comea da extremidade esquerda do string e move-se para a direita na pesquisa de um a Quando encontra o primeiro a substitui por d e vai para a direita procurando um b. aaabbbccc aaabbbccc d a a b b b c c c daabbbccc

Quando um b encontrado, substitui por d e vai adiante (deixando s b) procurando um c. daabbbccc daadbbccc daadbbdccc Quando um c encontrado substitudo por um d e o estgio acaba e o cabeote retorna a extremidade esquerda da entrada: dL Em cada estgio a mquina substitui um a, um b e um c por ds. Depois volta a pesquisar. Se neste caso um string a* b* c* ou existe um smbolo em excesso, ento M chega ao estado de rejeio n. Se contudo, a extremidade direita da entrada: , quando procurando um a, isto significa que toda entrada foi substituda por ds, e portanto a forma an bn cn, foi encontrada para n > 0 e M aceita . Situaes que ocorrem numa Mquina de Turing: O que importante ressaltar so as 3 possibilidades de parada de uma Mquina de Turing a) o "processamento" chega ao estado final e a mquina pra e a palavra aceita ou o resultado esperado obtido; b) a "funo programa" indefinida para o argumento; a mquina pra e a palavra de entrada rejeitada c) Movimento invlido, a palavra rejeitada e a mquina pra.

3.1.2. Mquinas de Turing como Reconhecedores


Os exemplos anteriores mostraram dois tipos de exemplos: a) a mquina que faz uma tarefa: uma cpia ou apagar a entrada b) aceita uma palavra de uma linguagem com certas caractersticas Vamos deixar esta ltima situao mais clara e classificar alguns tipos de linguagens. Definio 3.2: Configurao Seja M = (K, , , s, H) uma Mquina de Turing com H = {y, n}. Qualquer configurao que para e cujo estado atual y chamada de configurao de aceitao, enquanto que se a configurao que para e o estado n chamada de configurao de rejeio. Definio 3.3: Linguagem aceita por uma Mquina de Turing Seja M uma mquina de Turing M=(, Q,, q0,,F,V,,) Dizemos que M aceita ( - { , })* se (s, ) acarreta numa configurao de aceitao, e M rejeita se (s, ) acarreta numa configurao de rejeio. Pode ocorrer que exista uma situao, onde a mquina nem aceita, nem rejeita uma certa configurao. Dizemos que uma mquina de Turing M decide a linguagem1 L*0 se *0, o seguinte verdade: Se L ento M aceita , ou ainda o conjunto de todas as palavras ou strings pertencentes a *, ou seja: ACEITA(M)={w| M ao processar * pra num estado final, qfF} i) ii) Se L ento M rejeita . REJEITA(M) = {w| M ao processar C pra num estado final, qfF}
1

Ver resumo no anexo sobre linguagens

Cp3Turing

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

iii)

A linguagem para a qual M fica em loop infinito o conjunto de todas as palavras de * para as quais M fica processando indefinidamente.

Logo: ACEITA(M) REJEITA(M) LOOP(M) = * A definio seguinte est no livro texto1 na pgina 91. Definio 3.4: Linguagem Enumervel Recursivamente Uma linguagem aceita por uma Mquina de Turing dita linguagem recursivamente enumervel. Ou seja, existe uma Mquina de Turing que semidecide L. ou seja M pode parar ou no. Exemplos: a) DuploL = {anbn| n0} b) TriploL ={anbncn| n0} c) Concatena= {ww| w palavra sobre os simbolos de {a,b}} Esta classe de linguagens inclui algumas para as quais impossvel determinar mecanicamente se uma dada palavra no pertence linguagem. Se L uma dessas linguagens, ento para qualquer mquina M que aceita L, existe pelo menos uma palavra w que no pertence a L que, sendo entrada da mquina M, ela fica em loop infinito. Logo temos que: 1. se w L, ento M pra e aceita a entrada; 2. se wL, M pode parar, rejeitando W ou entrar em loop infinito. Definio 3.5: Linguagem Recursiva Uma linguagem L dita Linguagem recursiva se existe uma Mquina de Turing M tal que: 1. ACEITA(M) = L 2. REJEITA(M) = *- L 3. LOOP(M) = Agora para a classe dessas linguagens possvel garantir que existe um reconhecedor, ou em outras palavras uma algoritmo que as reconhece como vlidas ou invlidas. Este reconhecedor nada mais que um Compilador. A condio 3 indica que existe uma mquina de Turing que sempre pra com esta linguagem. Exemplos: a) DuploL = {anbn| n0} b) TriploL ={anbncn| n0} c) {w| w{a,b}* e tem o dobro de smbolos a do que b} Observaes/ Teoremas: 1. O complemento de uma linguagem recursiva uma linguagem recursiva. 2. Uma linguagem L recursiva se e somente se L e seu complemento so enumerveis recursivamente. 3. A classe da Linguagens recursivas uma classe prpria da classe da linguagens enumerveis recursivamente.

3.1.3. Mquinas de Turing como Processadores de Funes


Ver seo 3.4.5 no livro texto 1, na pgina 92 a 93. Definio 3.6: Funo Turing Computvel Uma funo parcial f dita funo Turing Computvel ou simplesmente Turing Computvel se existe uma mquina de Turing que a computa, ou seja, a mquina pra e produz o resultado esperado ou fica em loop (infinito) se a funo indefinida para a entrada. Ver o exemplo da Mquina que concatena duas palavras w1 e w2 de um alfabeto dado, e produz uma nova palavra w=w1w2.

Cp3Turing

10

17/08/03

Prof. Jussara Maria Marins


Exemplo 6: Concatenao Pgina 94.

Captulo 3: Mquinas de Turing e Outras

Exemplo 7 Quadrado Unrio Pgina 95. Sejam ={1 , } K={1,2,3,...,13}, s=1, H={13} V={A,B,C<D} A Mquina seguinte determina o quadrado unrio, isto dado uma palavra em {1} de comprimento n, ela determina uma palavra em {1} de comprimento n2. Definio 3.7: Funo Turing Computvel Total Uma funo total f dita funo Turing Computvel Total ou simplesmente Turing Computvel Total se existe uma mquina de Turing que a computa, ou seja, a mquina sempre pra e produz o resultado em qualquer entrada. O alfabeto {0,1}* pode ser usado para representar os nmeros inteiros, no negativos, na sua forma binria. Assim se w=a1a2a3...an {0,1}*, ento Num(w)=a1. 2 n-1 + a2 2 n-2 + .a n-1 2+ an . Assim qualquer nmero binrio um string em 0 1 (0 1)*, ou seja w no inicia com zeros.

3.1.4. Extenses da Mquina de Turing Ver livro texto 2:


Os exemplos da seo anterior deixam claro que as mquinas de Turing podem executar clculos bastante poderosos, embora de maneira lenta e desajeitada. A fim de melhor enteder sua surpreendente potncia, devemos considerar o efeito de estender o modelo da mquina de Turing em vrias direes. Devemos ver que, em cada caso, os recursos adicionais no se somam s classes de funes computveis ou linguagens decidveis: os novos modelos melhorados da mquina de Turing podem, em cada instncia, ser simulados pelo modelo padro. Tais resultados aumentam nossa confiana em que a mquina de Turing , de fato, o dispositivo computacional definitivo, o fim de nossa progresso para autmatos cada vez mais poderosos. Um benefcio colateral desse resultado que devemos nos sentir livres para utilizar o recurso adicional quando projetarmos mquinas de Turing para resolver problemas particulares, com base no conhecimento de que nossa dependncia para com tal recurso pode, se necessrio, ser eliminada.

FITAS MLTIPLAS Pode-se pensar que as mquinas de Turing tm vrias fitas (ver figura). Cada fita conectada ao controle finito por meio de uma cabea de leitura/gravao (uma em cada fita). A mquina pode, em um passo, ler os smbolos lidos por todas as suas cabeas e, ento, dependendo de quais smbolos e qual seu estado atual, regravar alguns dos quadros lidos e mover algumas cabeas para a esquerda ou para a direita, alm de mudar de estado. Para qualquer inteiro fixo k 1, uma mquina de Turing de k fitas uma mquina de Turing equipada, como acima, com k fitas e cabeas correspondentes. Portanto, uma mquina de Turing padro, estudada at aqui, neste captulo, apenas uma mquina de Turing de k fitas, com k = 1.

Cp3Turing

11

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Definio 3.8:Mquina de Turing de vrias fitas Suponha que k 1 seja um inteiro. Uma mquina de Turing de k fitas um quntuplo (K, , , s, H), onde K, , s e H so as definies da mquina de Turing normal e , a funo de transio, a funo de (K H) * k para K * ( {})k . Isto , para cada estado q e cada k tuplas de smbolos de fita (a1, ..., ak), (q, (a1, ..., ak)) = (p, ((b1, ..., bk)), onde p , como antes, o novo estado e bj , intuitivamente, a ao assumida por M na fita j. Naturalmente, novamente insistimos que se aj = para algum j k, ento bj = . A computao ocorre em todas as k fitas de uma mquina de Turing de k fitas. Correspondentemente, uma configurao de tal mquina deve incluir informaes sobre todas as fitas. Definio 3.9:Uma configurao de M de k Fitas Suponha que M = (K, , , s, H) seja a mquina de Turing de k fitas. Uma configurao de M um membro de K * (*X(*( - {}) {e}))k . Isto , a configurao identifica o estado, o contedo da fita e a posio da cabea em cada k fitas. Se (q, (w1 a1 u1, ... wk ak uk)) uma configurao de uma mquina de Turing de k fitas (onde utilizamos a verso k vezes da notao abreviada para configuraes) e se (p, a1,..., ak) = (b1,...,bk), ento em um movimento a mquina se moveria para a configurao (p, (w1a1 u1, ...wk ak uk)), onde, para i = 1,..., k, wiaiui, wiaiui modificada pela ao bi, precisamente como na Definio .3.8. Dizemos que a configurao (q,( w1 a1 u1, ... wk ak uk)) produz um resultado em um passo na configurao (p, (w1a1 u1, ...wk ak uk)).

Cp3Turing

12

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Fita 1

Fita 2

Fita k

h q1 q3

q2

Figura Evidentemente, mquinas de Turing de k fitas so capazes de computar tarefas bastante complexas. Devemos mostrar a seguir que qualquer mquina de Turing de k fitas pode ser simulada por uma mquina de uma nica fita. Com isso queremos dizer que, dada qualquer mquina de Turing de k fitas, podemos projetar uma mquina de Turing padro que exibe o mesmo procedimento de entrada - sada decidir ou semidecidir a mesma linguagem, que computa a mesma funo. Essas simulaes so importantes ingredientes de nossa metodologia no estudo do poder dos dispositivos computacionais nesse e nos prximos captulos. Em geral, elas se valem de um mtodo para imitar um passo nico da mquina simulada com vrios passos da mquina simuladora. Nosso primeiro resultado desse tipo e sua prova so indicativos dessa linha de raciocnio. Teorema 3.1: Suponha que M = (K, , , s, H) seja uma mquina de Turing de k fitas, para algum k 1 . Ento, h uma mquina de Turing padro M= (K, , , s, H), onde , tal que vale o seguinte: para qualquer string de entrada x *, M , na entrada x, pra na sada y da primeira fita, se, e somente se, M, na entrada x, parar no mesmo estado de parada e com a mesma sada y em sua fita. Alm

Cp3Turing

13

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

disso, se M pra na entrada x, aps t passos, ento M pra na entrada x aps um nmero de passos, que O(t* (x + t)). FITA INFINITA DE DUAS VIAS
Suponha agora que nossa mquina tenha uma fita que infinita em ambas as direes. Todos os quadros so inicialmente espaos em branco, exceto aqueles contendo a entrada: a cabea da fica inicialmente, digamos, esquerda da entrada. Alm disso, nossa conveno com o smbolo seria desnecessria e sem sentido para tais mquinas.

No difcil ver que, como ocorre com fitas mltiplas, fitas infinitas de duas vias no acrescentam poder substancial s mquinas de Turing. Uma fita infinita de duas vias pode ser facilmente simulada por uma mquina de duas fitas: uma fita sempre contm a parte da fita direita do quadro que contm o primeiro smbolo de entrada e a outra contm a parte da fita esquerda dessa ao inverso. A mquina de duas fitas, por sua vez, pode ser simulada por uma mquina de Turing padro. De fato, na simulao precisamos levar apenas um tempo linear, em vez de um tempo quadrtico, j que, a cada passo, somente uma das trilhas est ativa. Seria desnecessrio dizer mas as mquinas com vrias fitas infinitas de duas vias tambm podem ser simuladas do mesmo modo.

MLTIPLAS CABEAS O que ocorre se uma mquina de Turing tem uma fita, mas vrias cabeas? Todas as cabeas lem os smbolos varridos e movem ou gravam independentemente. (Alguma conveno deve ser adotada sobre o que acontece quando duas cabeas varrem o mesmo quadro da fita, ao mesmo tempo que tentamos gravar diferentes smbolos. Talvez a cabea com o nmero mais baixo ganhe. Alm disso, vamos assumir que as cabeas no possam compreender cada presena no mesmo quadro da fita, exceto talvez indiretamente, por meio de gravaes malsucedidas.) No difcil ver que uma simulao com a que utilizamos para mquinas de k fitas pode ser realizada para mquinas de Turing com vrias cabeas em uma fita. A idia , novamente, dividir a fita em trilhas, todas as quais, exceto uma, so utilizadas somente para gravar as posies da cabea. Para simular um passo computacional pelas mquinas de mltiplas posies de cabea e outra para alterar esses smbolos ou mover as cabeas apropriadamente. O nmero de passos necessrios novamente quadrtico, como no Teorema 4.3.1. O uso de mltiplas cabeas, como o de mltiplas fita, podem s vezes, simplificar drasticamente a construo de uma mquina de Turing. Uma verso de 2 cabeas da mquina de copiar C no exemplo 4.1.8 poderia funcionar em um modo muito mais natural que a verso de uma cabea (ou mesmo as verses de duas fitas, Exemplo 4.3.1); veja o problema 4.3.3 do livro referncia.. FITA BIDIMENSIONAL Outro tipo de generalizao da mquina de Turing permitiria que sua fita fosse uma grade bidimensional infinita. (uma poderia at permitir um espao de dimenso mais alta). Tal dispositivo pode ser muito mais til que as mquinas de Turing padro para

Cp3Turing

14

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

resolver problemas como um quebra cabea (veja o problema do ladrilho no prximo captulo). Partiremos dele como um exerccio (Problema 4.3.6) para definir em detalhes a operao de tais mquinas. Mais uma vez, entretanto, no resulta nenhum aumento fundamental no poder computacional. Curiosamente, o nmero de passos necessrios para simular t passos das mquinas de Turing bidimensionais na entrada x pela mquina de Turing normal novamente polinomial em t e x. As extenses do modelo da mquina de Turing, feitas acima, podem ser combinadas: podese pensar nas mquinas de Turing com vrias fitas, todas ou algumas das quais so de algum modo infinitas de duas vias e tm mais de uma cabea nelas ou, ainda, so multidimensionais. Novamente, bastante simples e direto ver que as capacidades da mquina de Turing, em ltima instncia, permanecem as mesmas. Resumimos nossa discusso sobre as diversas variantes das mquinas de Turing, discutidas assim por diante, como segue. Teorema 3.2: Qualquer linguagem decidida ou semidecidida e qualquer funo computada por mquinas de Turing com vrias fitas, cabeas, fitas infinitas de duas vias ou fitas multidimensionais, podem ser decididas, semidecididas ou computadas, respectivamente, pela mquina de Turing padro. 3.1.5. Outras Funes Numricas Vamos agora adotar um ponto de vista completamente diferente sobre a computao, um que no seja baseado em qualquer formalismo explcito computacional ou de processamento da informao como as mquinas de Turing ou as gramticas, mas, em vez disso, focalizar o que est para ser computado: funes de nmeros. Por exemplo, claro que o valor da funo F(m,n) = m * n2 + 3 * m2*m+17 Pode ser computado para quaisquer valores dados de m e n, porque se trata de uma composio de funes adio, multiplicao e exponenciao, mais algumas poucas constantes que podem ser computadas. E como sabemos que exponenciao pode ser computada? Porque ela recursivamente definida em termos de uma funo simples (a saber, a multiplicao) e valores em menores argumentos. Afinal de contas, mn 1 se n = 0 e, caso contrrio, m*mn-1. A prpria multiplicao pode ser definida recursivamente em termos de adio e assim por diante. No princpio, devemos ser hbeis para iniciar com funes de nmeros naturais para nmeros naturais to simples que sejam inequivocamente considerados como computveis (por exemplo, a funo de identidade e a funo de sucessor succ(n) = n+1) e combin-los vagarosa e pacientemente por combinadores que so, tambm, muito elementares e obviamente computveis tais como a composio e a definio recursiva e por fim, obter uma classe de funes de nmeros para nmeros que so completamente gerais e no triviais.

Cp3Turing

15

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Iniciamos por definir certas funes extremamente simples de Nk para N, para vrios valores de k 0 (a funo 0-ria , naturalmente, uma constante, uma vez que no depende de nada). Definio 3.10: Funes Bsicas As funes bsicas so as seguintes: (a) Para qualquer k 0, a funo zero k-ria definida como zerok (n1,...,nk) = 0 para todo n1,....,nk N. (b) Para qualquer k j > 0, a j-sima funo de identidade k-ria simplesmente a funo idkj(n1,...,nk) = nj para todo n1...nk N. (c) A funo de sucessor definida como succ(n) = n + 1 para todo n N. A seguir, apresentaremos duas maneiras simples de combinar funes para obter funes ligeiramente mais complexas. (1) Seja k, l 0, g: Nk N uma funo k-ria e sejam h1,...,hk funes l-rias. Ento, a composio de g com h1,...,hk a funo l-ria definida como f(n1,...,nl) = g(h1( n1,...,nl),...,hk (n1,...,nl)). (2) Suponha que k 0, que g seja k-ria funo e que h seja a funo (k + 2) ria. Ento, a funo definida recursivamente por g e h funo (k + 1) ria f definida como f(n1,...,nk0) = g(n1,...,nk), f(n1,...,nk m + 1) = h(n1,...,nk, m, f(n1,...,nkm)) para todos n1,...,nk, m N As funes recursivas primitivas so todas as funes bsicas e todas as funes que podem ser obtidas por elas por qualquer nmero de aplicaes sucessivas de composio e definio recursiva. Exemplo 8 : A funo plus2, definida como plus2(n) = n + 2 recursiva primitiva, pois pode ser obtida a partir da funo bsica succ por uma composio com si prpria. Em particular, suponha que k = l = 1 em (1) da Definio 3.10 e suponha que g = h1 = succ. Similarmente, a funo binria plus, definida como plus(m,n) = m + n, recursivamente primitiva, porque ela pode ser definida do mesmo modo a partir de funes obtidas por combinaes, funes de identidade, zero e sucessor. Em particular, na Parte 2 da definio 3.10, iguale k = 1, assuma g como sendo a funo id2,1 e suponha que h seja a funo ternria h(m,n,p) = succ(id3,3 (m, n, p) a composio de succ id3,3. A resultante funo recursivamente definida precisamente a funo plus:
plus(m,0) = m

plus(m, n + 1) = succ (plus(m,n)).

Cp3Turing

16

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

A funo de multiplicao mult(m,n) = m * n definida recursivamente como mult(m,0) = m plus(m, n + 1) = plus(m, mult(m,n)), e a uno exp(m,n) = mn definida como exp(m,0) = succ(zero(m)), exp (m, n + 1) = mult(m, exp(m,n). portanto, todas essas funes so recursivas primitivas. relativamente claro que podemos calcular o valor de qualquer funo recursiva primitiva para dados valores de seus argumentos. Tambm igualmente evidente que podemos calcular a validez de asseres sobre nmeros como m * n > m2 + n + 7, para quaisquer dados valores de m e n. conveniente definir um predicado recursivo primitivo como sendo uma funo recursiva primitiva que somente assume os valores 0 e 1. Intuitivamente, um predicado recursivo primitivo, como greater than (m,n) ir capturar uma relao que pode ou no ser aplicvel ( ser verdadeiro) entre os valores de m e n. Se a relao que pode ou no do recursivo primitivo ser 1, caso contrrio 0. Exemplo 9 : A funo iszero, que 1 se n = 0 e 0 se n > 0, um predicado recursivo primitivo, definido recursivamente, portanto: iszero(0) = 1, iszero(m + 1) = 0 Similarmente, isone(0) = 0 e isone(n + 1) = iszero(n). Exerccio: 1. Definir o predicado positive(n), definindo antes sgn(n) 2. Definir a subtrao no negativa, indicada por ~. Alm disso, greater-than-or-equal(m,n), escrito m n, pode ser definido como iszero(n ~ m). Sua negao, less-than(m,n) naturalmente "1 ~ greater-than-or-equal (m,n)", onde ~ a subtrao do exerccio. Em geral, a negao de qualquer predicado recursivo primitivo tambm um predicado recursivo primitivo. De fato, assim so a disjuno e a conjuno de dois predicados recursivos primitivos: p(m,n) ou q(m,n) 1 ~ iszero(p,(m,n) + q(m,n) e p(m,n) e q(m,n) 1 ~ iszero (p(m,n) * q(m,n)). Por exemplo, equal(m,n) pode ser definido como a conjuno de greater-than-or-equal (m,n) e greater-than-or-equal (n,m). Alm disso, se f e g so funes recursivas primitivas e p um predicado recursivo primitivo, todos os trs com a mesma varivel k, ento a funo definida por casos f(n1,...,nk) = g (n1,...nk), h (n1,...,nk), se p(n1,...,nk); caso contrrio

Cp3Turing

17

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

tambm recursiva primitiva, uma vez que pode ser reescrita como: f( n1,...,nk) = p(n1,...,nk) * g(n1,...,nk) + ( 1~ p(n1,...,nk)) * h(n1,...,nk) Como devemos ver, a definio por casos uma abreviao muito til. Exemplo 10: Podemos agora definir div e rem. mod(0, n) = 0, mod( m + 1 , n) = e div(0,n) = 0, div(m + 1, n) = div(m + 1, n) + 1, div(m,n) se equal (mod(m,n), pred(n)); caso contrrio. 0 mod(m,n) + 1 se equal (mod(m,n), pred(n)); caso contrrio,

Outra funo interessante que revela-se como sendo recursiva primitiva digit(m,n,p), msimo digito menos significativo da representao base p de n. (Como uma ilustrao do uso de digit, o predicado odd(n), com o bvio significado, pode ser gravado simplesmente como digit(1,n,2). fcil verificar que digit(m,n,p) pode ser definido como div(mod(n,p m), p (m~ 1)). Exemplo 11: Se f(n,m) uma funo recursivamente primitiva, ento a soma sumf(n,m) = f(n,0) + f(n,1) + ... + f(n,m) Tambm recursiva primitiva, porque ela pode ser definida como sumf(n,0) = 0 e sumf(n, m + 1) = sumf(n,m) + f(n, m + 1). Tambm podemos definir desse modo as conjunes e disjunes ilimitadas dos predicados. Por exemplo, se p(n,m) um predicado, a disjuno p(n,0) ou p(n,1) ou p(n,2) ou...ou p(n,m) simplesmente sgn(sump(n,m)) Definio 3.11: Suponha que g seja a funo (k + 1)-ria, para algum k 0. A minimizao de g funo k-ria f definida como segue: f(n1,...,nk) = o menor m tal que g(n1,...,nkm) = 1, se um tal m existe; 0, caso contrrio

Devemos denotar a minimizao de g por m[g(n1,...,nkm) = 1 ].

Cp3Turing

18

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Apesar de minimizao de uma funo g ser sempre bem definida, no h um mtodo bvio para comput-la mesmo que saibamos como se computa g. O mtodo bvio m: = 0 enquanto g (n1,...,nkm) 1 faa m: = m + 1; emitir m no um algoritmo ,no sentido estrito de Papadimitriou, porque ele pode falhar em terminar. Vamos ento chamar uma funo g minimizvel, se o mtodo acima sempre terminar. Isto , uma funo (k + 1)-ria g minimizvel, se ela tem a seguinte propriedade: para cada n1,nk N, h um m N tal que g(n1,...nkm) = 1. Por fim, chamamos uma funo -recursiva, se ela pode ser obtida a partir das funes bsicas pelas operaes de composio, definio recursiva e minimizao de funes minimizveis. Note que agora no podemos repetir o argumento de diagonalizao do exemplo 4.7.5 para mostrar que h uma funo computvel que no -recursiva. A questo que, dada uma definio propositada de uma funo - recursiva, no absolutamente claro se de fato ela define uma funo -recursiva isto , se todas as aplicaes de minimizao nessa definio de fato atuam sobre funes minimizveis! Exemplo 12: Definimos um inverso da adio (a funo ~) e um inverso da multiplicao (a funo div); mas e quanto ao inverso da exponenciao logaritmo? Utilizando a minimizao podemos definir a funo logaritmo: log(m,n) a menor potncia qual devemos elevar m + 2 para obter um inteiro pelo menos to grande quanto n + 1 (isto , log(m,n) = [logm+2 (n + 1)]; temos utilizado m + 2 e n + 1 como argumentos para evitar as armadilhas matemticas na definio de logm n, quando m 1 ou n = 0. A funo log definida como segue: log(m,n) = p[greater-than-or-equal ((m + 2) p, n + 1)]. Note que essa uma definio apropriada de uma funo -recursiva, uma vez que a funo g(m,n,p) = greater-than-or-equal ((m + 2) p, n + 1) minimizvel: de fato, para qualquer m, n 0 h p 0, tal que (m + 2) p n porque, elevando um inteiro 2 a potncias cada vez maiores, podemos obter inteiros arbitrariamente grandes. Podemos agora provar o principal resultado desta seo: Teorema 3.4: A funo f: Nk N -recursiva se, e somente se, ela recursiva (isto , computvel por uma mquina de Turing).

Cp3Turing

19

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Trabalho em Grupo
Outros Exemplos e Programas em trabalhos em grupo Trabalho terico e pratico Uma mquina geral Uma mquina especfica Um novo modelo Voltar para livro texto1 com os outros modelos de mquinas e as universais Mquina Norma Mquina de Post Mquinas com Pilha Mquinas com duas Pilhas

Cp3Turing

20

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Anexo: Reviso de Linguagens Formais


J trabalhamos com o conceito de string em um alfabeto que uma seqncia de smbolos ou elementos, ou ainda "letras" desse alfabeto. Usualmente a seqncia finita. Podemos identificar uma seqncia com uma nome dado por uma letra que no seja do alfabeto. Assim se ={a,bc} ento podemos dizer que w= aab uma seqncia de .A seqncia vazia indicada por e . O comprimento de um string o comprimento da seqncia, medido em nmero do smbolos. indicado pelas barras simples, assim |w|=3 , caso anterior e |e|=0. O comprimento estabelece uma funo de um string w e . Dois strings podem ser combinados para formar um novo, pela operao de concatenao indicada pelo smbolo da composio ou pela simples justa-posiao dos 2 strings. Assim se w=aab e v= bc ento wv=aabbc. Um string v substring de w, se somente se, h strings x e y tal que w=xvy. Tanto x como x poderiam ser o string vazio e. Logo e substring de qualquer string. Se w= xv para algum x ento v sufixo de w; se w= vy para algum y ento v prefixo de w. A seqncia wi , sendo i um natural definida por induo por: w0=e ; wi+1 = wi w; onde indica a concatenao, Uma linguagem L qualquer conjunto de strings de um alfabeto , isto qualquer subconjunto de uma linguagem. Se um alfabeto finito, ento um conjunto infinito e enumervel ou contavelmente enumervel. As linguagens podem ser operadas como conjuntos, com a unio, interseo e diferena. Alem h outra operao chamada de Fecho de Kleene ou estrela de Kleene. O fecho de Kleene indicado, sugestivamente por L* que o conjunto de todos os strings obtidos pela concatenao de zero ou mais strings de L. Descrever uma linguagem pode ser uma tarefa muitssimo complicada quando se trata de uma linguagem natural. Na computao estamos interessados em certos tipos de linguagens. Se a linguagem finita, a simples enumerao de todos seus strings vivel. Caso contrrio, precisamos de outros mecanismos. Exemplo 1: Seja L={w{0,1}*| w tem 2 ou 3 ocorrncias de1, sendo que a primeira e a segunda no so consecutivas}. Essa linguagem pode ser descrita como {0}*o {1} o {0}* o {0} o {1} o {0}* o{ {1} o {0}*} * Dispensando as chaves temos: L=0*10*010*(10* *) Este um exemplo de uma linguagem do tipo Regular. Ou seja descrita, exclusivamente por meio de smbolos nicos e do vazio. Isto caracteriza uma expresso regular. Definimos uma expresso regular como: (1) e cada elemento de so expresses regulares; (2) Se e so expresses regulares, ento a concatenao tambm o ; (3) Se e so expresses regulares, ento a unio tambm o ; (4) Se uma expresso regular, ento tambm regular; (5) Nada mais expresso regular, a menos que deduzida de (1) a (4). Toda expresso regular representa uma Linguagem. Se uma expresso regular ento L() uma Linguagem representada por . A funo L definida como: (1) L ()= . ( Em alguns livros temos 2 smbolos diferentes para a linguagem vazia e o conjunto vazio.) e L ()=, (2) Se e so expresses regulares, ento L() = L() L(); (3) Se e so expresses regulares, ento L() = L()L(); (4) Se uma expresso regular, ento L()=L()*. Exemplo: Descrever L(((b) a) ).

Cp3Turing

21

17/08/03

Prof. Jussara Maria Marins


L(((b) a) ) = L( (b)) L(a) por (2) = L( (b)) {} por (1) = L( (b)) {} por (4) = (L() L(b))*{a} por(3) =({a} {b})*{a} por (1) duas vezes ={a,b}*{a} ={w{a,b}* w termina com a}

Captulo 3: Mquinas de Turing e Outras

Um Autmato Finito Determinstico uma quntupla M=(K, ,,s,F) onde K conjunto finito de estados; um alfabeto; uma funo de transio, s o estado inicial e F um subconjunto de K, constitudo pelos estados finais. O AFD semelhante Mquina de Turing mas no possui um modo de armazenar certas informaes. O AF, na realidade pode ser determinstico ou no. Pode ser representado graficamente por um grafo dirigido, chamado de diagrama de estados, onde os ns representam os estados e as arestas as transies. A aresta que vai do estado q para q' rotulada por a, sempre que (q, a) = q'. Exemplo: M=( K, ,,s,F) onde K={q0,q1} , ={,}, s=q0 e F={q0} e a funo delta dada por: q (q,) q0 a q0 q0 b q1 q1 a q1 q1 b q0 Logo L(M) o conjunto de todos os strings em {a,b}* que tm um nmero par de b's. A representao por diagrama de estados : a q0 b Vejamos que para a entrada aabba no estado inicial temos: (q0,aabba) (q0,abba) (q0,bba) (q1,ba) (q0,a) (q0,e). Logo aabba aceita por L(M) ou (q0,aabba) *M(q0,e) Vejamos resumidamente outros resultados, sem as devidas provas, que podem ser encontradas no livro texto do Papadimitrou ou em outro livro da bibliografia de Teoria da Computao ou Linguagens Formais. Teorema 1: A classe das linguagens aceitas por autmato finitos fechada sob (a) unio; (b) interseo (c) fecho de Kleene (d) complementao (e) concatenao. Teorema 2: Uma linguagem regular se, e somente se, ela aceita por um autmato finito. Teorema 3: Se linguagem L regular ento existe um algoritmo que dado w*, testa se w L num tempo (|w|). Teorema 4: Se M=(K, , , s, F) um autmato finito no determinstico ento existe um algoritmo que dado que dado w*, testa se w L(M) num tempo (|K|2 |w|). b a q1

Cp3Turing

22

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Um autmato de Pilha um autmato com mais um alfabeto , com os smbolos da Pilha, com dispositivo armazenador do tipo Pilha, permitindo a leitura e gravao s no topo da Pilha. Existem linguagens que no so regulares. O nmero de AF enumervel ao passo que o conjunto de todas as linguagens no enumervel, logo h linguagens que no so regulares. As seguintes linguagens no so regulares; i) L={anbn| n0} ii) L={an| n primo} iii) L={ anbam b m+n| m,n 1} no regular. Uma linguagem chamada Livre do Contexto gerada por expresses do tipo AaA , independente do contexto onde se aplica a transformao. Teorema 5: A classe das linguagens aceitas por um autmato de pilha a classe das linguagens livres do contexto. Teorema 6: Existe um algoritmo polinomial que dado uma linguagem livre do contexto, constri um Autmato de pilha equivalente.

Cp3Turing

23

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Anexo: Reviso de Linguagens Formais


J trabalhamos com o conceito de string em um alfabeto que uma seqncia de smbolos ou elementos, ou ainda "letras" desse alfabeto. Usualmente a seqncia finita. Podemos identificar uma seqncia com uma nome dado por uma letra que no seja do alfabeto. Assim se ={a,bc} ento podemos dizer que w= aab uma seqncia de .A seqncia vazia indicada por e . O comprimento de um string o comprimento da seqncia, medido em nmero do smbolos. indicado pelas barras simples, assim |w|=3 , caso anterior e |e|=0. O comprimento estabelece uma funo de um string w e . Dois strings podem ser combinados para formar um novo, pela operao de concatenao indicada pelo smbolo da composio ou pela simples justa-posiao dos 2 strings. Assim se w=aab e v= bc ento wv=aabbc. Um string v substring de w, se somente se, h strings x e y tal que w=xvy. Tanto x como x poderiam ser o string vazio e. Logo e substring de qualquer string. Se w= xv para algum x ento v sufixo de w; se w= vy para algum y ento v prefixo de w. A seqncia wi , sendo i um natural definida por induo por: w0=e ; wi+1 = wi w; onde indica a concatenao, Uma linguagem L qualquer conjunto de strings de um alfabeto , isto qualquer subconjunto de uma linguagem. Se um alfabeto finito, ento um conjunto infinito e enumervel ou contavelmente enumervel. As linguagens podem ser operadas como conjuntos, com a unio, interseo e diferena. Alem h outra operao chamada de Fecho de Kleene ou estrela de Kleene. O fecho de Kleene indicado, sugestivamente por L* que o conjunto de todos os strings obtidos pela concatenao de zero ou mais strings de L. Descrever uma linguagem pode ser uma tarefa muitssimo complicada quando se trata de uma linguagem natural. Na computao estamos interessados em certos tipos de linguagens. Se a linguagem finita, a simples enumerao de todos seus strings vivel. Caso contrrio, precisamos de outros mecanismos. Exemplo 1: Seja L={w{0,1}*| w tem 2 ou 3 ocorrncias de1, sendo que a primeira e a segunda no so consecutivas}. Essa linguagem pode ser descrita como {0}*o {1} o {0}* o {0} o {1} o {0}* o{ {1} o {0}*} * Dispensando as chaves temos: L=0*10*010*(10* *) Este um exemplo de uma linguagem do tipo Regular. Ou seja descrita, exclusivamente por meio de smbolos nicos e do vazio. Isto caracteriza uma expresso regular. Definimos uma expresso regular como: (6) e cada elemento de so expresses regulares; (7) Se e so expresses regulares, ento a concatenao tambm o ; (8) Se e so expresses regulares, ento a unio tambm o ; (9) Se uma expresso regular, ento tambm regular; (10) Nada mais expresso regular, a menos que deduzida de (1) a (4). Toda expresso regular representa uma Linguagem. Se uma expresso regular ento L() uma Linguagem representada por . A funo L definida como: (5) L ()= . ( Em alguns livros temos 2 smbolos diferentes para a linguagem vazia e o conjunto vazio.) e L ()=, (6) Se e so expresses regulares, ento L() = L() L(); (7) Se e so expresses regulares, ento L() = L()L(); (8) Se uma expresso regular, ento L()=L()*. Exemplo: Descrever L(((b) a) ).

Cp3Turing

24

17/08/03

Prof. Jussara Maria Marins


L(((b) a) ) = L( (b)) L(a) por (2) = L( (b)) {} por (1) = L( (b)) {} por (4) = (L() L(b))*{a} por(3) =({a} {b})*{a} por (1) duas vezes ={a,b}*{a} ={w{a,b}* w termina com a}

Captulo 3: Mquinas de Turing e Outras

Um Autmato Finito Determinstico uma quntupla M=(K, ,,s,F) onde K conjunto finito de estados; um alfabeto; uma funo de transio, s o estado inicial e F um subconjunto de K, constitudo pelos estados finais. O AFD semelhante Mquina de Turing mas no possui um modo de armazenar certas informaes. O AF, na realidade pode ser determinstico ou no. Pode ser representado graficamente por um grafo dirigido, chamado de diagrama de estados, onde os ns representam os estados e as arestas as transies. A aresta que vai do estado q para q' rotulada por a, sempre que (q, a) = q'. Exemplo: M=( K, ,,s,F) onde K={q0,q1} , ={,}, s=q0 e F={q0} e a funo delta dada por: q (q,) q0 a q0 q0 b q1 q1 a q1 q1 b q0 Logo L(M) o conjunto de todos os strings em {a,b}* que tm um nmero par de b's. A representao por diagrama de estados : a q0 b Vejamos que para a entrada aabba no estado inicial temos: (q0,aabba) (q0,abba) (q0,bba) (q1,ba) (q0,a) (q0,e). Logo aabba aceita por L(M) ou (q0,aabba) *M(q0,e) Vejamos resumidamente outros resultados, sem as devidas provas, que podem ser encontradas no livro texto do Papadimitrou ou em outro livro da bibliografia de Teoria da Computao ou Linguagens Formais. Teorema 1: A classe das linguagens aceitas por autmato finitos fechada sob (f) unio; (g) interseo (h) fecho de Kleene (i) complementao (j) concatenao. Teorema 2: Uma linguagem regular se, e somente se, ela aceita por um autmato finito. Teorema 3: Se linguagem L regular ento existe um algoritmo que dado w*, testa se w L num tempo (|w|). Teorema 4: Se M=(K, , , s, F) um autmato finito no determinstico ento existe um algoritmo que dado que dado w*, testa se w L(M) num tempo (|K|2 |w|). b a q1

Cp3Turing

25

17/08/03

Prof. Jussara Maria Marins

Captulo 3: Mquinas de Turing e Outras

Um autmato de Pilha um autmato com mais um alfabeto , com os smbolos da Pilha, com dispositivo armazenador do tipo Pilha, permitindo a leitura e gravao s no topo da Pilha. Existem linguagens que no so regulares. O nmero de AF enumervel ao passo que o conjunto de todas as linguagens no enumervel, logo h linguagens que no so regulares. As seguintes linguagens no so regulares; iv) L={anbn| n0} v) L={an| n primo} vi) L={ anbam b m+n| m,n 1} no regular. Uma linguagem chamada Livre do Contexto gerada por expresses do tipo AaA , independente do contexto onde se aplica a transformao. Teorema 5: A classe das linguagens aceitas por um autmato de pilha a classe das linguagens livres do contexto. Teorema 6: Existe um algoritmo polinomial que dado uma linguagem livre do contexto, constri um Autmato de pilha equivalente.

Cp3Turing

26

17/08/03

TESE DE CHURCH E INDECIBILIDADE


O que vimos, o que ainda falta.... e o que ser lido agora.
1. Ferramentas matemticas bsicas 2. Mquina de Turing 3. Tese de Church 3.1 Hiptese /Tese de Church 3.2 Gramticas 3.3 Funes primitivas recursivas 3.4 Mquinas de Turing Universais 4. Indecidibilidade 4.1 Problema da Parada 4.2 Enumerabilidade de mquinas de Turing 4.3 Recurso 4.4 Conjuntos recursivos e recursivamente enumerveis 4.5 Teorema de Gdel e Gdelizao O texto a seguir oferece um resumo dos itens acima que esto salientados e serviro de material de leitura e estudo para fecho (no algbrico, nem computacional) do curso. Os itens salientados sero usados no debate/P3, para o qual fornecerei mais detalhes, ou seja, as regras e perguntas bsicas do debate no final. Captulo 3:A TESE DE CHURCH TURING O que pode ser computado? Quando um problema tem soluo computacional? O que no pode ser computado? Como saber se o algoritmo est correto, para todas entradas especificadas? Quando uma soluo computacional eficiente? Existem vrios modelos matemticos diferentes dos processos computacionais que executam tarefas concretas nessa rea. esperado que o sujeito das 3 perguntas iniciais esteja no contexto dos problemas que so formulveis numa linguagem matemtica ou computacional. At hoje no sei de ningum que pense em resolver problemas para decidir se um quadro de Picasso vale mais1 do que um de Monet, ou ainda se casa ou compra uma bicicleta por meio de um computador. Talvez at possa acontecer isso, num futuro de mais ou menos 500 anos ou 100 anos ou nunca. Uma resposta simples para a primeira questo verificar se temos ou no um algoritmo para resolver o problema. Normalmente tendo um algoritmo podemos criar, mais ou menos facilmente um programa.
1

claro que existem mecanismos de estabelecer preos...em funo de prioridades e expectativas de leiles, etc., mas isto no o valor, por completo. No valor de algo est subentendido um conceito emocional ou mesmo morale no s o preo.

Os problemas oriundos das cincias da natureza como Fsica, Qumica e Biologia, em geral so descritos por um modelo de equaes matemticas. Com o ferramental matemtico decidimos se vamos resolver o problema analtica ou numericamente. claro, que no caso da matemtica temos um grande conjunto de reas e nestas se conhece se o determinado problema tem soluo ou no. Alm disso, os matemticos tambm se preocupam muito se a soluo nica ou no, ou mesmo se h infinitas solues do problema. Assim se o problema envolve a soluo de uma equao diferencial de primeira ordem linear, sabemos que, sob certas condies h infinitas solues e se temos uma condio inicial podemos ter uma s soluo. Outros problemas so oriundos de reas da prpria matemtica. Existem outros que no das cincias da natureza e que tambm possuem uma formulao matemtica, como por exemplo, o problema da torres de Hani. Com isso vemos que os problemas que so tratados pela computao vo alm dos problemas da matemtica ou das cincias da natureza. De posse de um algoritmo temos que analis-lo e decidir se est correto e eficiente. No temos um algoritmo para determinar se outro algoritmo est correto ou no; se eficiente ou no; se ele pra ou no. Podemos decidir isto, analisando o algoritmo passo a passo, pelo nosso intelecto, mas no podemos escrever um algoritmo ou programa que faa isto. O estudo do problema da eficincia de uma algoritmo pode ser superficialmente resumido no seguinte: Os problemas que so solucionados por um algoritmo de tempo polinomial so chamados de Problemas Tratveis, ou No tratveis, no caso de complexidade superpolinomial ou exponencial. Os problemas de complexidade linear so considerados como uma classe especial, dentro da classe dos polinomiais. Vamos chamar esta classe de Classe 1. So exemplos da Classe 1: 1. Intercalao de dois vetores diferentes, sendo que cada um deles j est ordenado. Esta a parte linear do mtodo MergeSort. 2. Clculo de mdias em um vetor. 3. Clculo do maior ou do menor elemento de um vetor. 4. Pesquisa Linear de um elemento numa lista j ordenada. 5. Determinao de componentes biconexos, ou fortemente conexos em grafos. Os problemas de ordenao comum so exemplos de algoritmos quadrticos, o tempo de execuo (n 2) e o problema da multiplicao da cadeia de matrizes (n 3). A classe 2 a classe dos problemas que so resolvidos com tempo polinomial, ou ainda classe P. H problemas que esto na classe P e a descoberta ou criao de um novo algoritmo o desloca para a classe 1. Um exemplo o problema da planaridade de grafos. U grafo planar se ele pode ser construdo de forma que nenhuma das arestas se intersecciona. At 1971 o problema pertencia a classe P e com a publicao do artigo de Hopcroft e Tarjan ele passou a ter um algoritmo linear. O estudo da complexidade de algoritmos uma das reas da computao que tem problemas de pesquisa tanto em aspectos usualmente chamados de prticos como em outros chamados de tericos. Em teoria da computao estudamos mais detalhadamente o modelo da Mquina de Turing. Outros modelos importantes so: 2

Mquina de Post Mquina com Pilhas( pelo menos 2 delas) Autmato com 2 pilhas Mquina de Registradores Linguagem Lambda ou -clculo.

Mquina de Post: Esta mquina usa uma fila para entrada e sada de dados e tambm para memria de trabalho. dada por uma terna M=(,D,#) onde o alfabeto dos smbolos de entrada; D um programa ou diagrama de fluxos, construdo a partir de modelos elementares denominados partida, parada, desvio e atribuio e # um smbolo auxiliar. H uma varivel X que pode ser qualquer palavra do alfabeto. As componentes elementares de um diagrama de fluxos so: a) Partida: Existe somente uma instruo de incio (partida). Partida

b) Parada: Existem duas situaes de parada: uma pela aceitao: Aceita e a outra pela rejeio: Rejeita

Aceita

Rejeita

c) Desvio ou Teste: So baseados na varivel X : cabea(x) e Cauda(X). Determina o fluxo do programa de acordo com o smbolo mais esquerda da palavra armazenada em X( incio da fila). Se X vazia ento um desvio incondicional Para esta instruo subentende-se que h uma leitura de X e que esta destrutiva, isto : X ler(X) , significa que o smbolo mais esquerda da palavra retirado da mesma. Conforme for este smbolo, o desvio feito. Por exemplo, se ={a,b} podemos ter o seguinte esquema de fluxo para o teste X Ler(X)

d) Atribuio: Concatena um smbolo distinguido do alfabeto, incluindo o smbolo auxiliar direita da palavra armazenada na varivel X( fim da fila)

XXs 3

Um exemplo da Mquina de Post, que mostra suas caractersticas dado pela mquina que faz o reconhecimento da Linguagem no regular L={a n bn | n0}. Esta a mquina chamada de Duplo Balanceamento. Foi visto que no pode existir um Autmato Finito determinstico que reconhea L. No captulo vimos que existe uma Mquina de Turing que reconhece L. Vimos que com a mquina de Turing podemos formalizar trs aspectos importantes para que tenhamos modelos matemticos para processos fundamentais que caracterizam a Computao como uma cincia autnoma. A mquina de Turing executa um algoritmo, computando todas as funes matemticas bsicas, reconhece uma linguagem formal e um computador. 3.1. HIPTESE /TESE DE CHURCH Existem, portanto, vrios modelos matemticos diferentes dos processos computacionais que executam tarefas concretas nessa rea em particular, decidir, semidecidir ou gerar linguagens e computar funes. Por fim, tentando formalizar nossas intuies2 sobre quais funes numricas podem ser consideradas computveis, definimos uma classe de funes que se revelaram como sendo especificamente as recursivas. A seguir temos trechos quase completos do Livro de Elementos Teoria da Computao do Padrimitriou que uma traduo de Edson Furmankiewicz, relativos tese de Church. Tudo isso sugere que alcanamos um limite superior natural sobre o que um dispositivo computacional pode ser projetado para fazer; essa nossa procura pela noo matemtica definitiva e mais geral de um processo computacional de um algoritmo foi concluda com sucesso e a mquina de Turing a resposta certa. Entretanto, vimos tambm no ltimo captulo que no so todas as mquinas de Turing que merecem ser chamadas algoritmos3: argumentamos que mquinas de Turing que semidecidem linguagens e que, portanto, rejeitam por nunca parar, no so dispositivos computacionais teis, enquanto as mquinas de Turing que decidem linguagens e computam funes (e, deste modo, param em todas as entradas) o so. Nossa noo de um algoritmo deve excluir mquinas de Turing que no podem parar em entradas. Assim, propomos adotar a mquina de Turing que pra em todas as entradas como a noo formal precisa correspondente para a intuitiva idia de um algoritmo. Nada ser considerado como um algoritmo se no puder ser reproduzido como uma mquina de Turing, cuja parada garantida em todas as entradas, e todas sero corretamente chamadas algoritmos. Esse
Por intuitivo, entendemos aquilo que se compreende diretamente, sem explicaes intermedirias ou formalismos. 3 Esta colocao uma opinio do autor.
2

princpio conhecido como a tese de Church-Turing. Pode ser formulada de diversas formas. "A capacidade computao representada pela Mquina e Turing o limite mximo que pode ser atingido por qualquer dispositivo de computao". "Qualquer funo computvel pode ser computada por uma mquina deTuring". Ela uma tese4, no um teorema, porque no um resultado matemtico: ela simplesmente afirma que um certo conceito informal (algoritmo)5 corresponde a um certo objeto matemtico (mquina de Turing). No sendo uma instruo 6matemtica, a tese de Church-Turing no pode ser provada. Teoricamente possvel., entretanto, que a tese de ChurchTuring possa ser desprovada em alguma data no futuro, se algum propuser um modelo alternativo de computao que seja publicamente aceitvel como plausvel e razovel e que, ainda, seja comprovadamente capaz de realizar computaes que no podem ser realizadas por qualquer mquina de Turing. Ningum considera isso provvel. Adotar uma noo matemtica precisa de um algoritmo abre a intrigante possibilidade de formalmente provarmos que certos problemas computacionais no podem ser resolvidos por algoritmo algum. J sabemos o suficiente para esperar isso. No Captulo 1, argumentamos que, se strings so utilizadas para representar linguagens, nem toda linguagem pode ser representada: h somente um nmero finito de strings sobre um alfabeto, mas h um nmero infinito de linguagens. Autmatos finitos, autmatos de pilha, gramtica livre de contexto, gramtica irrestrita e mquinas de Turing so todos exemplos de objetos finitos que podem ser utilizados para especificar linguagens e que podem ser, eles prprios, descritos por strings (na prxima seo desenvolveremos em detalhes um particular modo de representar mquinas de Turing como strings). Correspondentemente, h somente um nmero finito de linguagens recursivas e linguagens enumerveis recursivamente sobre qualquer alfabeto. Assim, apesar de trabalharmos duro para estender ao mximo as capacidades das mquinas de computar, em termos absolutos, elas podem ser utilizadas para semidecidir ou decidir somente uma frao infinitesimal de todas as possveis linguagens. Utilizar argumentos cardinalmente para estabelecer a limitao de nossa abordagem trivial: descobrir exemplos particulares de tarefas
Um teorema composto de uma hiptese e uma tese e conforme vimos no captulo todo teorema simples um condicional pq, onde p a hiptese e q a tese. A demonstrao consiste em partir de p e por axiomas ou outros teoremas anteriores chegar q, na prova direta. 5 Na realidade podemos ter uma algoritmo, assim como tambm um programa que no pra, ou melhor que decididamente desejaramos que nunca parasse. Por exemplo um Sistema Operacional, a menos que desligssemos a mquina voluntariamente. 6 No original encontramos "mathematical statement" ou seja "afirmao matemtica".
4

computacionais que no podem ser realizadas dentro de um modelo muito mais interessante e recompensador. Em captulos anteriores, tivemos sucesso em descobrir certas linguagens que so regulares ou livres de contexto; neste captulo faremos o mesmo para linguagens recursivas. No captulo anterior vimos que o tipo de linguagem reconhecida por uma mquina de Turing chamada de Linguagem Enumervel Recursivamente como na Definio 2.3.1. H duas diferenas importantes, entretanto. Primeiro, esses novos resultantes7 negativos no so apenas recuos temporrios para serem remediados em um captulo posterior em que um mesmo dispositivo computacional mais poderoso ser definido: de acordo com a tese de Church-Turing, tarefas computacionais que no so recursivas so impossveis e sem esperana indecidveis. Segundo, nossos mtodos para provar que linguagens no so recursivas seriam diferentes dos teoremas de bombeamento8 utilizados para explorar a fragilidade da gramtica livre de contexto e autmatos finitos. Em vez disso, devemos expor tcnicas para explorar o considervel poder das mquinas de Turing, a fim de mostrarmos sua limitaes. O aspecto do poder das mquinas de Turing que iremos explorar um tipo de capacidade introspectiva que elas possuem: apontaremos que as mquinas de Turing podem receber codificaes delas mesmas como entradas e manipular essas codificaes de maneiras interessantes. Ento, perguntamos o que acontece quando uma mquina de Turing manipula uma codificao por si prpria uma aplicao engenhosa e mais simples do princpio da diagonalizao.9 Como codificar uma mquina de Turing de modo que ela possa ser manipulada por outra(ou pela mesma) mquina de Turing , portanto, nosso prximo assunto. 3.2. GRAMTICAS 3.3. FUNES PRIMITIVAS RECURSIVAS No veremos os itens 3.2 e 3.3 3.4. MQUINAS DE TURING UNIVERSAIS A base da computao o hardware ou o software? Voc pode ter uma opinio sobre esse assunto e sobre se a questo significativa e produtiva. Mas o fato que o formalismo para algoritmos que introduzimos e desenvolvemos no ltimo captulo a mquina de Turing uma pea de hardware no programvel, especializada em resolver um problema em particular, com instrues que so construdas de fbrica10.
7 8 9

Results, devia ser traduzidos por resultados, simplesmente, e no resultante. "Pumping". Ver um exemplo no livro do Robinson Moreira Tenrio com a rika. "hard-wired at the factory"

10

Devemos agora pegar o ponto de vista oposto. Devemos discutir que mquinas de Turing tambm so softwares. Isto , mostrar que h uma certa mquina de Turing genrica que pode ser programada, mais ou menos da mesma maneira como pode s-lo um computador de propsito geral, para solucionar qualquer problema que possa ser resolvido por mquina de Turing. O programa que faz essa mquina genrica comportar-se como uma mquina especfica M deve ser uma descrio de M. Em outras palavras, devemos pensar o formalismo das mquinas de Turing como uma linguagem de programao na qual podemos escrever programas. Programas escritos nessa linguagem podem ento ser interpretados por uma mquina de Turing universal o que significa dizer, outro programa na mesma linguagem. A idia de que um programa gravado em uma linguagem pode interpretar qualquer programa na mesma linguagem no uma idia muito nova ela base do mtodo clssico para processadores de linguagem de rotina de partida (bootstrapping)11. Mas, a fim de continuar com nosso projeto neste livro, devemos tomar este ponto preciso no contexto das mquinas de Turing. Para comear, devemos apresentar um modo geral de especificar as mquinas de Turing, de modo que suas descries possam ser utilizadas com entradas para outras mquinas de Turing. Ou seja, devemos definir uma linguagem cujas strings sejam todas representaes legais das mquinas de Turing. Um problema j se manifesta sozinho: independentemente do tamanho do alfabeto que escolhermos para essa representao, haver mquinas de Turing que tm mais estados e mais smbolos de fita como strings sobre um alfabeto fixo. Adotamos a seguinte conveno: a string representando um estado da mquina de Turing tem a forma {q}{0,1}*; isto , a letra q, seguida por uma string binria. Similarmente, um smbolo de fita sempre representado como uma string em {a}{0,1}*. Supondo que M = (K, , , s, H) seja uma mquina de Turing e que i e j sejam os menores inteiros, tal que 2i K e 2j + 2. Ento, cada estado em K ser representado como um q seguido por uma string binria de comprimento i; cada smbolo em ser, do mesmo modo, representado como a letra a seguida por uma string de j bits. As direes da cabea e tambm sero tratadas como smbolos de fita honorrios (eles eram a razo para o termo +2 na definio de j). Fixamos as representaes dos smbolos especiais , , e para serem os quatro lexicograficamente menores smbolos, respectivamente: ser sempre representado como a0j, como a0j-1, como a0j-210 e a0j-211. O estado inicial ser sempre representado como o primeiro estado lexicogrfico, q0i. Note que requeremos o uso de zeros iniciais nas strings que se seguem aos smbolos a e q, para tornar o comprimento total compatvel com o nvel exigido.
Nota do autor: Os implementadores de uma linguagem muitas vezes escrevem tradutores para uma linguagem de programao na mesma linguagem de programao. Mas como o tradutor traduz a si proprio? Um modo de fazer isso o seguinte: escrever o tradutor em um segmento simples da mesma linguagem, deixando de fora os recursos mais sofisticados ( e difceis de traduzir) da linguagem. Ento escreva um tradutor para este fragmento - uma tarefa muito simplificada- em uma verso ainda mais reduzida da linguagem. Continue desse modo at que a sua linguagem seja to simples e explicita que parea linguagem assembly e assim possa ser traduzida diretamente.
11

Devemos denotar a representao de toda mquina de Turing M como M . M consiste da tabela de transio . Isto , ela uma seqncia de strings na forma (q, a, p, b), com q e p representaes de estados e a e b de smbolos, separados por vrgulas e includos entre parnteses. Adotamos a conveno de que os qudruplos so relacionados em uma ordem lexicogrfica crescente, comeando com (s, ). O conjunto de estados de parada H ser determinado indiretamente pela falta de seus estados como primeiros componentes em qualquer qudruplo de M. Se M decide uma linguagem e, portanto, H = {y,n}, adotaremos a conveno de que y , lexicograficamente, o menor dos dois estados de parada. Dessa maneira, qualquer mquina de Turing pode ser representada. Devemos utilizar o mesmo mtodo para representar strings no alfabeto da mquina de Turing. Qualquer string w * ter uma nica representao, tambm denotada w, a saber, a justaposio das representaes de seus smbolos.

Exemplo 1: Considere a mquina de Turing M = (K, , , s, {h}), onde K = {s, q, h}, = {, , a) e dado nessa tabela. Estado s s s q q q Smbolo a a (q, ) (h, ) (s,) (s, a) (s, ) (q, )

Uma vez que h trs estados em K e trs smbolos em , temos i = 2 e j = 3. Estes so os menores inteiros, tal que 2i 3 e 2j 3 + 2. Os estados e smbolos so representados como segue: estado/smbolo S Q H A representao q00 q01 q11 a000 a001 a010 a011 a100

Portanto, a representao da string aa a aa a = a001a100a100a000a100. A representao M da mquina de Turing M a seguinte string: M = (q00, a100, q01, a000), (q00, a000, q11, a000), (q00, a001, q00, a011), (q01, a100, q00, a011), (q01, a000, q00, a011), (q01, a001, q01, 011). Agora estamos prontos para discutir uma mquina de Turing Universal U, que utiliza codificaes de outras mquinas como programas para direcionar sua operao. Intuitivamente, U tem dois argumentos: uma descrio de uma mquina M, M, e uma descrio de uma string de entrada w , w. Queremos que U tenha a seguinte propriedade: U pra na entrada M w, se, e somente se, M parar na entrada w. Para utilizar a notao funcional para mquinas de Turing, devemos desenvolver no ltimo captulo, U (M w) = M(w). De fato, descrevemos no uma mquina de uma nica fita U, mas uma mquina de 3 fitas U intimamente relacionada (ento U ser a mquina de Turing de uma nica fita que simula U). Especificamente, U utiliza suas trs fitas como segue: a primeira contm a codificao do contedo da fita atual de M; a segunda contm a codificao do prprio M; e a terceira fita contm a codificao do estado M no atual ponto da computao simulada. A mquina U iniciada com alguma string M w em sua primeira fita e as outras duas fitas com espaos em branco. (No importa como U se comporta, se sua string de entrada no est nessa forma). Primeiro, U move M na Segunda fita e desloca w para baixo, para o final esquerdo da primeira fita, precedendo-a com . Portanto, neste ponto a primeira fita contm w. U grava na terceira fita a codificao do estado inicial s de M, sempre q0i (U pode facilmente determinar i e j, examinando M). Agora U passa a simular os passos da computao de M. Entre esses passos simulados, U manter as cabeas da Segunda e terceira fitas nos seus finais esquerdos, e a cabea da primeira fita varre o a da verso codificada do smbolo que M estaria varrendo no tempo correspondente. U simula um passo de M como segue: ele varre sua segunda fita at encontrar um qudruplo cujo primeiro componente corresponde ao estado codificado gravado em sua terceira fita e cujo segundo componente corresponde ao smbolo codificado lida na primeira fita. Se encontra esse qudruplo, ele muda o estado para o terceiro componente. Se o quarto componente codifica um smbolo do alfabeto da fita de M, esse smbolo gravado na primeira fita. Se o quarto componente a0j-210, (a codificao de ), ento U move sua primeira cabea para o primeiro smbolo a esquerda e, se for a codificao de , para a direita. Se um encontrado, U deve convert-lo para a0j, o cdigo de um espao em branco de M.

Se em algum passo a combinao de estado smbolo no encontrada na Segunda fita, isso significa que o estado um estado de parada. U tambm pra em um estado apropriado. Isso completa nossa descrio da operao de U. 4. Indecidibilidade Problema da Parada Enumerabilidade de mquinas de Turing Recurso Conjuntos recursivos e recursivamente enumerveis Teorema de Gdel e Gdelizao 4.1. O PROBLEMA DA PARADA Suponha que voc tenha gravado um programa em sua linguagem de programao favorita, que realiza o seguinte feito notvel: pega como entrada qualquer programa P, gravado na mesma linguagem, e uma entrada X desse programa. Utilizando alguma engenhosa anlise, seu programa sempre determina corretamente se o programa P ir parar na entrada X (ele retorna sim se isso acontece) ou se ele iria executar eternamente (ele retorna no). Voc chamou esse programa de halts(P,X). Este um programa inestimvel. Ele descobre todos os tipos de bugs sutis que fazem outros programas executar eternamente em certas entradas. Utilizando esse programa, voc pode conduzir com xito muitas coisas notveis. Eis um exemplo relativamente sutil: voc pode utiliz-lo para escrever outro programa, com o nefasto nome de diagonal(X) (lembre-se da prova por diagonalizao que 2N no contvel na Seo 1.5): diagonal (X) a: se halts(X,X), ento v para a, seno pre Note o que diagonal (X) faz: se seu programa halts decide que o programa X iria parar se lhe fosse apresentado ele prprio como entrada, ento diagonal(X) faz um loop sem fim; caso contrrio, ele pra. E agora vem a questo inexplicvel: a funo diagonal(diagonal) pra? Ela pra se, e somente se, a chamada halts(diagonal, diagonal) retorna no; em outras palavras, ela pra se, e somente se, ela no parar. Isso uma contradio: devemos concluir que a nica hiptese com que iniciamos esse caminho falsa, que o programa halts(P,X) no existe. Isto , no pode haver programa ou algoritmo para resolver o problema que halts resolveria: dizer se programas arbitrrios iriam parar ou entra em loop. Esse tipo de argumento deve ser familiar apenas pela sua experincia com cincias da computao, mas tambm pela cultura geral do sculo XX. A questo que agora introduzimos toda a parafernlia necessria para

10

apresentar uma verso formal, matematicamente rigorosa, desse paradoxo. Temos uma completa notao para algoritmos, um tipo de linguagem de programao: a mquina de Turing. De fato, na ltima seo introduzimos uma nova caracterstica de que precisamos: desenvolvemos uma estrutura que permite a nosso programas manipular outros programas e suas entradas exatamente como o nosso o fictcio halts(P,X) faz. J estamos prontos, portanto, para definir uma linguagem que no recursiva e provar que ela no o . Suponha que H = {M w| a mquina de Turing M pra na string de entrada w} Note primeiro que H enumervel recursivamente: ela precisamente a linguagem semidecidida por nossa mquina de Turing universal U na seo anterior. De fato, na entrada mw, U pra precisamente quando a entrada est em H. Alm disso, se H recursiva, ento cada linguagem enumervel recursivamente recursiva. Em outras palavras, H tem a chave para a pergunta que fizemos na Seo 4.212, se todas as linguagens enumerveis recursivamente so tambm decidveis por Turing: a resposta positiva se, e somente se, H recursiva. Para tanto, suponha que H de fato decidida por alguma mquina de Turing M0. Ento, dada qualquer mquina de Turing M particular que semidecide uma linguagem L(M), podemos projetar uma mquina de Turing M que decide L(M) como segue: primeiro, M transforma sua fita de entrada de w para M w e, ento, simula M0 nessa entrada. Por hiptese, M0 decidir corretamente se M aceita w ou no. Antecipando as questes tratadas no Captulo 7, podemos dizer que h redues de todas as linguagens enumerveis recursivamente para H, e , portanto, H completo para a classe de linguagens enumerveis recursivamente. Mas podemos mostrar, formalizando o argumento para halts(P,X) acima, que H no recursiva. Primeiro, se H fosse recursiva, ento H1 = {M: a mquina de Turing M pra na string de entrada M} Tambm seria recursiva. (H1, significa a parte halts(X,X) do programa diagonal). Se existisse uma mquina de Turing M0 que pudesse decidir H, ento uma mquina de Turing M1 que decidisse H1 necessitaria, to somente, transformar sua string de entrada M em M M e, ento, passar o controle para M0. Portanto, suficiente mostrar que H1 no recursiva. Segundo, se H1, fosse recursiva, ento seu complemento tambm seria recursivo: H1 = {w | ou w no a codificao de uma mquina de Turing ou w a codificao de M de uma mquina de Turing M que no pra em M}.

12

A classe das linguagens recursivamente enumerveis fechada sob o complemento

11

Isso assim, porque a classe de linguagens recursivas fechada sob complemento (Teorema 4.2.2). Inicialmente, H1 a linguagem diagonal, anloga ao nosso programa diagonal e o ltimo ato da prova. Mas H1, no pode mesmo ser enumervel recursivamente supondo que sozinho seja recursivo. Vamos supor que M* estava em uma mquina de Turing que semidecide H1. Est M* em H1? Por definio de H1, M* H1 se, e somente se, M* no aceita a string de entrada M*. Mas M* suposto para semidecidir H1, assim, M* H1 se, e somente se, M* aceita M*. Temos concludo que M* aceita M* se, e somente se, M* no aceita M*". Isso absurdo, assim como a suposio de que M0 existe deve ter sido um erro. Vamos resumir o desenvolvimento desta seo. Queramos descobrir se cada linguagem enumervel recursivamente recursiva. Observamos que isso seria verdadeiro se e somente se, a particular linguagem enumervel recursivamente H fosse recursiva. De H deveramos, em dois passos, a linguagem H1, a qual tem de ser recursiva a fim de que H seja recursiva. Mas a suposio de que H1 recursiva conduz a uma contradio lgica, por diagonalizao. Provamos, desse modo, o seguinte e mais importante teorema: Teorema 1: A linguagem H no recursiva; portanto, a classe de linguagens recursivas um estrito subconjunto da classe das linguagens enumerveis recursivamente. Tnhamos dito anteriormente que esse argumento uma instncia do princpio de diagonalizao utilizado na Seo 1.5 para mostrar que 2N no contvel. Para ver por que e para sublinhar mais uma vez a essncia da prova, vamos definir uma relao binria R em strings sobre o alfabeto utilizando a codificao de mquinas de Turing: (u, w) R se e somente se u = M para alguma mquina de Turing M que aceita w. (R uma verso de H.) Agora, supondo que, para cada string u, Ru = {w: (u, w) R} (os Rus correspondem s linguagens enumerveis recursivamente) e considerando a diagonal de R, isto , D = {w: (w, w) R} (D H1), pelo princpio da diagonalizao, D Ru para todo u; isto , H1 uma linguagem diferente de qualquer linguagem enumervel recursivamente. E por que D Ru para qualquer u? Porque D difere, exatamente pela sua construo de cada Ru (e, portanto, de cada linguagem enumervel recursivamente no mnimo uma string - a saber, u.

12

O Teorema 1 responde negativamente a primeira das duas questes que apresentamos no final da Seo 4.2 (cada linguagem enumervel recursivamente tambm recursiva? e a classe de linguagens enumerveis recursivamente fechada sob complemento?). Mas a mesma prova fornece a resposta para a outra questo. fcil ver que H1, como H, enumervel recursivamente, e mostramos que H1 no enumervel recursivamente. Portanto, tambm provamos o seguinte resultado: Teorema 2: A classe de linguagens enumerveis recursivamente no fechada sob complemento. ------------Os textos dados na ltima aula apresentam algumas outras discusses e tambm citam outras colocaes aqui dadas. Os resultados vistos necessitam uma leitura atenta e todos eles remetem questes que possuem profundas ligaes com a lgica. Mas...vejamos Marilena Chau: "O que a Lgica?13Como indica o termo grego que foi dado ao conjunto descritos lgicos de Aristteles, rganon, a lgica o instrumento do pensamento, para pensarmos corretamente. No se referindo a nenhum ser, a nenhuma coisa, a nenhum objeto, a lgica a lgica no se refere a nenhum contedo, mas forma ou s formas do pensamento. Por isso, diz-se que, com Aristteles surgem a Lgica Formal." Poucas modificaes foram feitas Lgica depois de Aristteles. Mas no incio do sculo XX houve uma verdadeira revoluo na Lgica e na Matemtica. A Lgica clssica, formal ou tradicional 14 mais do que o estudo e construes de tabelas-verdade. Constitui um sistema composto por 3 princpios: 1. Princpio da No Contradio: (pp) Uma proposio no pode ser verdadeira e (:conjuno) falsa ao mesmo tempo, e da (pp) sempre verdadeira, conforme se pode "ver " em uma tabela-verdade. 2. Princpio do Terceiro Excludo: p p Neste caso, a disjuno (ou: ) entre p e a sua negao sempre verdadeira e da est excludo um terceiro valor verdade, s temos 2 valores para a veracidade de uma proposio: p falsa ou p verdade. 3. Princpio da Dupla Negao: p p A negao de uma verdade uma falsidade e a negao duas vezes leva a afirmao simples. Conforme disse Aristteles no a Lgica que julga se uma afirmao simples Verdade ou Falsa. Por exemplo, na Aritmtica que decidimos que a seguinte sentena p:"17 um nmero primo." , verdade. na gramtica portuguesa que decidimos que a sentena simples q: "A palavra livro verbo" falsa. Mas na
13
14

Na classificao aristotlica a lgica no nenhuma cincia. Existem outras lgicas.

13

lgica que decidimos que a conjuno pq :17 um nmero primo e a palavra livro verbo" falsa. A partir dos princpios da Lgica Clssica e da definio das operaes do e:; ou:; se...ento; e : se e somente se, construdo um sistema formal que constitui a Lgica Clssica Elementar ou o Clculo de Predicados de Primeira Ordem com igualdade, juntamente com as proposies quantificadas com os quantificadores universal: :Para Todo e : existe pelo menos um, o existencial. O Clculo consiste em estabelecer o valor das proposies compostas pelos operadores acima citados. Assim podemos dizer que a Lgica trata das inferncias vlidas, ou seja, das inferncias cujas concluses tm que ser verdadeiras, caso as premissas o sejam. O Clculo das Proposies aquele que lida apenas com os operadores lgicos, a negao sem incluir os quantificadores. A revoluo da Lgica foi marcada por Gdel, conforme est resumido nos " Aspectos histricos"do Livro Teoria da Computao do Paulo e Tiaraju. Esta revoluo, juntamente com o advento dos computadores, numa juno entre teoria e tecnologia foi fator decisivo para todo desenvolvimento que vimos neste sculo, desde o avio, primeiro objeto, mais "pesado"do o ar, a voar e sairmos do cho, at s viagens pelo mundo todo na internet, sem sairmos do cho. Questes Bsicas para o debate. Considere as seguintes afirmaes: I. O grande significado do Teorema de Gdel,... de carter epistemolgico: no podemos identificar os raciocnios rigorosos, matemticos, com o raciocnio formal. A natureza, que inclui o homem, tem a contradio como qualidade, a contradio que origina o seu movimento e produz a histria. II. Se a matemtica fosse redutvel lgica e se se pudesse encontrar o tal mtodo para determinar a verdade ou falsidade de qualquer sentena da lgica formal, ento qualquer sentena matemtica, ou mais forte ainda, qualquer afirmao de contedo sobre a realidade formulada em linguagem matemtica, poderia ser provada verdadeira ou falsa.... Ora as formulaes de Gdel, destruram tais pretenses. III. Mas as atenes se deslocaram, ento, do conceito de verdade para conceito de demonstrabilidade. O problema que ainda restava solucionar era: haveria um mtodo nico, com o qual todas as sentenas matemticas demonstrveis poderiam ser demonstradas de um conjunto de axiomas lgicos? IV. Nos anos seguintes Kleene, Church e Barkley desenvolveram uma linguagem formal, consistente, qual deram o nome de clculo Lambda.(clculo)... Foi demonstrado (Kleene) que uma extensa classe de funes, inclusive a empregadas por Gdel, na sua famosa prova, era expressvel no clculo lambda. V. A seguir Church argumentou que, se uma funo matemtica pode ser totalmente computvel, ento ela pode ser definida no clculo. Seu trabalho consistiu, ento, em mostrar que se existir uma funo matemtica expressvel no clculo que no computvel, ento no existir um mtodo para decidir se uma sentena matemtica demonstrvel ou no. Como, em 1936, o mesmo Church publicou uma frmula lgica no computvel no clculo, a ltima esperana hilbertiana encontrar um mtodo nico para demonstrar, a partir de um certo conjunto de axiomas, todas as sentenas matemtica pereceu. .Ver [1]. 14

VI.

Mas por outro lado, a mquina de Turing abriu a porta para um novo ramo de cincia determinstica. ( grifo meu). A mquina um modelo no qual os procedimentos mais complexos poderiam ser construdos a partir de tijolos elementares: estados e posies, leitura e gravao. Isto sugeriu um jogo matemtico maravilhoso, o de expressar qualquer mtodo definido em uma forma padro . Hodges em [1]. a) A afirmao "todo procedimento efetivo pode ser modelado numa mquina de Turing" na verdade, uma hiptese ou uma tese? b) Dado que a matemtica no se reduz lgica, ser que a computao se reduz matemtica? Justifique sua opinio. c) Por que Hodges escreveu qualquer mtodo definido entre aspas? O que ele quis dizer com isto? ( Eu odiava este tipo de pergunta em literatura! A prova no de literatura. Sejam objetivos, coerentes e sintticos, isto , voc pode usar 2 ou 3 palavras ou linhas). d) Qual as relaes que voc faz entre Lgica, Matemtica e Mquina de Turing, relacione com pelo menos trs dos itens acima. Regras do Debate propriamente ditas: Cada aluno, individualmente expor sua resposta/idia, durante at 3 minutos. No importa, na primeira fase, se a sua resposta/idia a mesma de outro colega. Quando houver a diviso de grupos, as idias exposta atravs de cada membro do grupo devem ser de acordo com o direcionamento do grupo; isto , no vale dar "ponto" para o outro grupo. Quando houver opinies contrrias dentro do mesmo grupo, haver uma pausa, de 5 a 10 minutos, para reordenamento de idias no grupo. A professora ser a mediadora e entrevistadora do debate. Aceito outras sugestes para o debate at dia 08/12/99 atravs de jussaram@mackenzie.com.br Foi um prazer t-los como alunos.

15