Você está na página 1de 201

1

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

1 INTRODUO E CONCEITOS BSICOS


Inicia com uma breve histria do surgimento e do desenvolvimento dos conceitos, resultados e formalismos nos quais a Teoria da Computao baseada.

Formalizao dos conceitos de programa e de mquina


Existem diferentes computadores, com diferentes arquiteturas, e existem diversos tipos de linguagens de programao, Modelos matemticos simples. Programas e mquinas so tratados como entidades distintas, mas complementares e necessrias para a definio de computao.

1.1 Notas Histricas

Cincia da Computao o conhecimento sistematizado relativo computao. Na antiga Grcia (sculo III A.C., no desenho de algoritmos por Euclides) Na Babilnia (complexidade\reducibilidade problemas). Interesse atual possui duas nfases:

nfase terica - idias fundamentais e modelos computacionais: da biologia (modelos para redes de neurnios), da eletrnica (teoria do chaveamento), da matemtica (lgica), da lingstica (gramticas para linguagens naturais). nfase prtica - projeto de sistemas computacionais aplicando a teoria prtica.

No incio do sculo XX, diversas pesquisas foram desenvolvidas com o objetivo de definir um modelo computacional suficientemente genrico, capaz de implementar qualquer Funo Computvel.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 1

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Um marco inicial da Teoria da Computao - David Hilbert, Entscheidungsproblem, o qual consistia em encontrar um procedimento para demonstrar se uma dada frmula no clculo de preposies de primeira ordem era vlida ou no. (Frmula do clculo de predicados no qual a quantificao restrita s variveis individuais) Em 1931, Kurt Gdel - Incompleteness Theorem (teorema da no completude), onde demonstrou que tal problema (mecanizao do processo de prova de teoremas) no tinha soluo. A classe de funes usada por Gdel foi a das funes primitivas recursivas definidas anteriormente por Dedekind em 1888. Embora no tenha sido proposital, Gdel foi (aparentemente) o primeiro a identificar um formalismo para definir a noo de procedimento efetivo. Em 1936, Church usou dois formalismos para mostrar que o problema de Hilbert no tem soluo: -calculus (Church, 1936) e funes recursivas (Kleene, 1936).
Procedimentos efetivos - So caracterizaes to gerais da noo do efetivamente computvel quanto consistentes com o entendimento intuitivo usual (Church).

Turing props, em 1936, um formalismo para a representao de procedimentos efetivos. Esse foi o primeiro trabalho a identificar programas escritos para uma mquina computacional autmata, como noes intuitivas de efetividade.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 2

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Desde ento, muitos outros formalismos foram propostos, os quais possuem o mesmo poder computacional que as funes recursivas (ou Clculo Lambda): Mquina de Turing (1936); Sistema Cannico de Post (1943); Algoritmo de Markov e a Linguagem Snobol (1954); Mquinas de Registradores (1963); RASP (Random Acess Stored Programs - 1964). Programa definido como sendo um procedimento efetivo, pode ser descrito usando qualquer dos formalismos equivalentes. Ou seja, qualquer destes formalismos permite descrever todos os procedimentos possveis que podem ser executados em um computador.

1.2 Abordagem
A abordagem desse livro combina a abordagem histrica com abordagens prximas dos sistemas computacionais modernos. Parte dessa abordagem inspirada, entre outros, no trabalho de Richard Bird em Programs and Machines- An Introduction to the Theory of Computation ([BIR76]).

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 3

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

1.3 Conceitos Bsicos


Linguagem um conceito fundamental no estudo da Teoria da Computao, pois trata-se de uma forma precisa de expressar problemas, permitindo um desenvolvimento formal adequado ao estudo da computabilidade. O dicionrio Aurlio define linguagem como: "o uso da palavra articulada ou escrita como meio de expresso e comunicao entre pessoas". Esta definio no suficientemente precisa para permitir o desenvolvimento matemtico de uma teoria sobre linguagens. As definies que seguem so construdas usando como base a noo de Smbolo ou Caractere, que uma entidade abstrata bsica, no sendo definida formalmente. Letras e dgitos so exemplos de smbolos freqentemente usados. Definio 1.1 Alfabeto. Um Alfabeto um conjunto finito de smbolos ou caracteres. um conjunto infinito no um alfabeto: o conjunto vazio um alfabeto. Exemplo 1.1 Os seguintes conjuntos so exemplos de alfabetos: {a, b, c}; conjunto vazio. Os seguintes conjuntos no so exemplos de alfabetos: conjunto dos nmeros naturais; {a, b, aa, ab, ba, bb, aaa,...}.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 4

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 1.2 Cadeia de Smbolos, Palavra. Uma Cadeia de Smbolos sobre um conjunto uma seqncia de zero ou mais smbolos (do conjunto) justapostos. Uma Cadeia de Smbolos Finita usualmente denominada de Palavra. denota a cadeia vazia ou palavra vazia. Se representa um conjunto de smbolos (um alfabeto), * => o conjunto de todas as palavras possveis sobre ; + denota * - { }. Definio 1.3 Comprimento ou Tamanho de uma Palavra. O Comprimento ou Tamanho de uma palavra w, representado por w, o nmero de smbolos que compem a palavra. Definio 1.4 Prefixo, Sufixo, Subpalavra. Um Prefixo (respectivamente, Sufixo) de uma palavra qualquer seqncia inicial (respectivamente, final) de smbolos da palavra. Uma Subpalavra de uma palavra qualquer seqncia de smbolos contga da palavra. Exemplo 1.2 Palavra, Prefixo, Sufixo, Tamanho.
a) b) abcb uma palavra sobre o alfabeto {a, b, c}; Se = {a, b}, ento: + = {a, b, aa, ab, ba, bb, aaa,...} * = { , a, b, aa, ab, ba, bb, aaa,...} abcb = 4 e = 0; Relativamente palavra abcb, tem-se que: , a, ab, abc, abcb so os prefixos; , b, cb, bcb, abcb so os respectivos sufixos. Qualquer prefixo ou sufixo de uma palavra uma sub-palavra.

c) d)

e)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 5

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 1.5 Linguagem Formal Uma Linguagem Formal ou simplesmente Linguagem um conjunto de palavras sobre um alfabeto. Exemplo 1.3 Linguagem Formal. Suponha o alfabeto = {a, b}. Ento: a) O conjunto vazio e o conjunto formado pela palavra vazia so linguagens sobre . Obviamente, { } { }. b) O conjunto de palndromos (palavras que tm a mesma leitura da esquerda para a direita e vice-versa) sobre um exemplo de linguagem infinita. , a, b, aa, bb, aaa, aba, bab, bbb, aaaa,... Definio 1.6 Concatenao de Palavras. A Concatenao de Palavras uma operao binria, definida sobre uma linguagem L, a qual associa a cada par de palavras uma palavra formada pela justaposio da primeira com a segunda tal que: no necessariamente fechada em L; a concatenao de duas palavras de uma linguagem no necessariamente resulta em uma palavra da linguagem. associativa; v(wt) = (vw)t = vwt possui elemento neutro esquerda e direita, o qual a palavra vazia. w = w = w Exemplo 1.4 Concatenao de Palavras. Suponha o alfabeto = {a, b}. Ento, para as palavras v = baaaa e w = bb, tem-se que: vw = baaaabb v = v = baaaa
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 6

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 1.7 Concatenao Sucessiva de uma Palavra. A Concatenao Sucessiva de uma Palavra (com ela mesma) ou simplesmente Concatenao Sucessiva, representada na forma de um expoente (suponha w uma palavra): wn onde n o nmero de concatenaes sucessivas,

definida indutivamente a partir da operao de concatenao binria, como segue: w0 = ; wn = wn-1w, para n > 0. Exemplo 1.5 Concatenao Sucessiva. Sejam w uma palavra e a um smbolo. Ento: w3 = www w1 = w a5 = aaaaa an = aaa...a (o smbolo a repetido n vezes)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 7

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

1.4 Exerccios
Exerccio 1.1 Elabore uma linha de tempo sobre o desenvolvimento do conceito de funo computvel. Exerccio1.2 Qual o marco inicial da Teoria da Computao? Exerccio 1.3 Em que se consistia o problema de Hilbert Entscheidungsproblem e por que ele sem soluo? Exerccio 1.4 Qual a importncia da Hiptese de Church e porque ela no demonstrvel? Exerccio 1. 5 Marque os conjuntos que so alfabetos: a) Conjunto dos nmeros naturais; [ ] b) c) d) e) f) g) h) i) Conjunto dos nmeros primos; [ ] Conjunto das letras do alfabeto brasileiro; [ ] Conjunto dos algarismos arbicos; [ ] Conjunto dos algarismos romanos; [ ] Conjunto { a, b, c, d }; [ ] Conjunto das partes de { a, b, c }; [ ] Conjunto das vogais; [ ] Conjunto das letras gregas. [ ]

Exerccio 1.6 D os possveis prefixos e sufixos de cada uma das seguintes palavras: a) teoria b) universidade c) aaa d) abccba e) abcabc Exerccio 1.7 Demonstre ou negue as seguintes propriedades algbricas da operao de concatenao de palavras: a) Fechamento b) Comutatividade c) Existncia de elemento neutro d) Associatividade Exerccio 1.8 Quando se pode dizer que a estrutura algbrica da operao de concatenao de palavras de uma linguagem anloga estrutura da operao de adio nos naturais? Teorema 4. ____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 8

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Teorema 4.2 PROGRAMAS, MQUINAS E COMPUTAES

2.1 Programas 2.1.1 Programa Monoltico 2.1.2 Programa Iterativo 2.1.3 Programa Recursivo 2.2 Mquinas 2.3 Computaes e Funes Computadas 2.3.1 Computao 2.3.2 Funo Computada 2.4 Equivalncias de Programas e Mquinas 2.4.1 Equivalncia Forte de Programas 2.4.2 Equivalncia de Programas 2.4.3 Equivalncia de Mquinas 2.5 Verificao da Equivalncia Forte de Programas 2.5.1 Mquina de Traos 2.5.2 Instrues Rotuladas Compostas 2.5.3 Equivalncia Forte de Programas Monolticos 2.6 Concluso

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 9

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Teorema 4.2 PROGRAMAS, MQUINAS E COMPUTAES

Definio 4.Formalizao dos conceitos

Existem diferentes computadores, com diferentes arquiteturas e existem diversos tipos de linguagens de programao, Modelos matemticos simples. Programas e mquinas so tratados como entidades distintas, mas complementares e necessrias para a definio de computao. O conceito de programa um conjunto de operaes e testes compostos de acordo com uma estrutura de controle. O tipo de estrutura de controle associada determina uma classificao de programas como: monoltico: baseada em desvios condicionais e incondicionais; iterativo: possui estruturas de iterao de trechos de programas; recursivo: baseado em sub-rotinas recursivas. O conceito de mquina interpreta os programas de acordo com os dados fornecidos. capaz de interpretar um programa desde que possua uma interpretao para cada operao ou teste que constitui o programa.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 10

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Computao e funo computada. Computao um histrico do funcionamento da mquina para o programa, considerando um valor inicial. Funo computada uma funo (parcial) induzida a partir da mquina e do programa dados. definida sempre que, para um dado valor de entrada, existe uma computao finita (a mquina pra).
Definio 4.Equivalncia de programas e de mquinas

programas equivalentes fortemente: se as correspondentes funes computadas coincidem para qualquer mquina; programas equivalentes: se as correspondentes funes computadas coincidem para uma dada mquina; mquinas equivalentes: se as mquinas podem simular umas s outras. Resumo:
Programa Mquina

Computao

Funo Computada

Equivalncia de Programas

Equivalncia de Mquinas

Classe de Funes Computveis

Mquina Universal

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 11

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

2.1 Programas
Um programa pode ser descrito como um conjunto estruturado de instrues que capacitam uma mquina aplicar sucessivamente certas operaes bsicas e testes em uma parte determinada dos dados iniciais fornecidos, at que esses dados tenham se transformado numa forma desejvel. Estrutura de controle de operaes e testes. Estruturao Monoltica. baseada em desvios condicionais e incondicionais, no possuindo mecanismos explcitos de iterao, sub-diviso ou recurso. Estruturao Iterativa. Possui mecanismos de controle de iteraes de trechos de programas. No permite desvios incondicionais. Estruturao Recursiva. Possui mecanismos de estruturao em sub-rotinas recursivas. Recurso uma forma indutiva de definir programas. Tambm no permite desvios incondicionais.
Definio 4.Composio

de Instrues Composio Seqencial. A execuo da operao ou teste subseqente somente pode ser realizada aps o encerramento da execuo da operao ou teste anterior. Composio No-Determinista. Uma das operaes (ou testes) compostas escolhida para ser executada. Composio Concorrente. As operaes ou testes compostos podem ser executados em qualquer ordem, inclusive simultaneamente. Ou seja, a ordem de execuo irrelevante.

No necessrio saber qual a natureza precisa das operaes e dos testes que constituem as instrues. Sero conhecidas pelos seus nomes. Identificadores de Operaes: F, G, H, ... Identificadores de Testes: T1, T2, T3, ... um teste uma operao de um tipo especial a qual produz somente um dos dois possveis valores verdade, ou seja, verdadeiro ou falso, denotados por: v e f, respectivamente. uma operao que no faz coisa alguma, denominada: operao vazia, denotada pelo smbolo .
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 12

Instrues: Operaes e Testes.

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.1.1 Programa Monoltico

Um programa monoltico estruturado, usando desvios condicionais e incondicionais, no fazendo uso explcito de mecanismos auxiliares de programao. A lgica distribuda por todo o bloco (monlito) que constitui o programa. Fluxogramas uma das formas mais comuns de especificar programas monolticos; um diagrama geomtrico construdo a partir de componentes elementares denominados

partida

parada

operao

teste

No caso da operao vazia , o retngulo correspondente operao pode ser omitido, resultando simplesmente em uma seta.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 13

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 2.1 Fluxograma


partida

T1 f G

T2 v parada

Definio 4.Instrues rotuladas

Fluxogramas podem ser reescritos na forma de texto, usando instrues rotuladas. So utilizados rtulos. Uma instruo rotulada pode ser: a) Operao. Indica a operao a ser executada seguida de um desvio incondicional para a instruo subseqente. b) Teste. Determina um desvio condicional, ou seja, que depende da avaliao de um teste. c) Uma parada especificada usando um desvio incondicional para um rtulo sem instruo correspondente. d) Assume-se que a computao sempre inicia no rtulo 1: 1: 2: 3: 4: faa F v_para 2 se T1 ento v_para 1 seno v_para 3 faa G v_para 4 se T2 ento v_para 5 seno v_para 1 Figura 2.3 Instrues rotuladas

Formalizao de Programa Monoltico


____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 14

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

A definio formal de Programa Monoltico melhor descrita, usando a notao de instrues rotuladas do que diagramas geomtricos. Definio 2.1 Rtulo, Instruo Rotulada. a) Um Rtulo ou Etiqueta uma cadeia de caracteres finita constituda de letras ou dgitos. b) Uma Instruo Rotulada i uma seqncia de smbolos de uma das duas formas a seguir (suponha que F e T so identificadores de operao e teste, respectivamente e que r1, r2 e r3 so rtulos): b.1) Operao r1: faa F v_para r2 b.2) Teste r1: se T ento v_para r2 seno v_para r3 Exemplo: r1: faa v_para r2 Definio 2.2 Programa Monoltico. Um Programa Monoltico P um par ordenado P = (I, r) onde: I Conjunto de Instrues Rotuladas o qual finito; r Rtulo Inicial o qual distingue a instruo rotulada inicial em I. Sabe-se que no conjunto dos Rtulos I no existem duas instrues diferentes com um mesmo rtulo; um rtulo referenciado por alguma instruo o qual no associado a qualquer instruo rotulada dito um Rtulo Final. A definio de Programa Monoltico requer a existncia de pelo menos uma instruo, identificada pelo rtulo inicial.

Observao 2.3 Programa Monoltico Fluxograma. Como um programa monoltico definido usando a noo de fluxograma, ambos os termos so identificados e usados indistintamente.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 15

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

2.1.2 Programa Iterativo

Programas iterativos so baseados em trs mecanismos de composio (seqenciais) de programas, os quais podem ser encontrados em um grande nmero de linguagens de alto nvel, como, por exemplo, Algol 68, Pascal, e Fortran 90.
seqencial: composio de dois programas, resultando em um terceiro, cujo efeito a execuo do primeiro e, aps, a execuo do segundo programa componente; condicional: composio de dois programas, resultando em um terceiro, cujo efeito a execuo de somente um dos dois programas componentes, dependendo do resultado de um teste; enquanto: composio de um programa, resultando em um segundo, cujo efeito a execuo, repetidamente, do programa componente enquanto o resultado de um teste for verdadeiro. at: anloga composio enquanto, excetuando que a execuo do programa componente ocorre enquanto o resultado de um teste for falso.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 16

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Formalizao de Programa Iterativo


Definio 2.4 Programa Iterativo Um Programa Iterativo P indutivamente definido por: a) A operao vazia constitui um programa iterativo; b) Cada identificador de operao constitui um programa iterativo; c) Composio Seqencial. V;W

T ento V seno W) e) Composio Enquanto. enquanto T faa (V)


resulta no programa que testa T e executa V, repetidamente, enquanto o resultado do teste for o valor verdadeiro. f) Composio At. at T faa (V) resulta no programa que testa T e executa V, repetidamente, enquanto o resultado do teste for o valor falso. Os parnteses foram utilizados nas clusulas das demais composies para possibilitar a interpretao, de forma unvoca, por partes consistentes. enquanto T faa V;W admite duas interpretaes distintas,

d) Composio Condicional (se

(enquanto T faa V);W enquanto T faa (V;W)

Figura 2.4 - Fluxograma que simula a composio enquanto

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 17

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLOS de Programas Iterativos a) A operao vazia constitui um programa iterativo


b) O programa abaixo do tipo iterativo. O uso de certa forma abusivo de linhas e identao objetiva facilitar a identificao visual da estruturao do programa.

(se T1 ento enquanto T2 faa (at T3 faa (V;W)) seno ()) Os programas tipo while de Bird so exemplos de programas iterativos. A traduo de Programas iterativos para Monolticos muito intuitiva, da mesma forma que a traduo de programa while para fluxograma intuitiva. Tem-se que a classe de funes computadas por programas while uma subclasse das funes computadas por fluxogramas.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 18

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.1.3 Programa Recursivo


Eu sou voc amanh, digo, uma recurso adiante

Recurso uma forma indutiva de definir programas. Sub-rotinas permitem a estruturao hierrquica de programas, possibilitando nveis diferenciados de abstrao.
Conjunto de Identificadores de Sub-Rotinas - R1, R2, ..

Definio 2.5 Expresso de Sub-Rotinas. Uma Expresso de Sub-Rotinas (Expresso) E, definida indutivamente por:
a) A operao vazia constitui uma expresso de sub-rotinas. b) Cada identificador de operao constitui uma expresso de sub-rotinas. c) Cada identificador de sub-rotina constitui uma expresso de sub-rotinas. d) A Composio Seqencial. Para D1 e D2 expresses de sub-rotinas, a composio seqencial denotada por: D1;D2 resulta em uma expresso de subrotina cujo efeito a execuo de D1 e, aps, a execuo de D2. e) A Composio Condicional. Se D1 e D2 so expresses de sub-rotinas e T um identificador de teste, ento a composio condicional denotada por: (se T ento D1 seno D2) resulta em uma expresso cujo efeito a execuo de D1 se T verdadeiro ou D2 se T falso.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 19

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 2.6 - Programa Recursivo. Um Programa Recursivo P tem a seguinte forma:

P E0 onde R1 def E1, R2 def E2, ..., Rn def En


onde (suponha k {1, 2, ..., n}): E0 Expresso Inicial a qual uma expresso de sub-rotinas; Ek Expresso que Define Rk, a expresso que define a sub-rotina identificada por Rk. A operao vazia constitui um programa recursivo que no faz coisa alguma. EXEMPLO 2.6 Programa Recursivo.

P R;S onde R def F;(se T ento R seno G;S), S def (se T ento seno F;R)
Figura 2.6 - Programa recursivo A computao de um programa recursivo consiste na avaliao da expresso inicial onde cada identificador de sub-rotina referenciado substitudo pela correspondente expresso que o define, e assim sucessivamente, at que seja substitudo pela expresso vazia , determinando o fim da recurso. At agora, foram definidos trs tipos de programas. Entretanto, esses programas so incapazes de descrever uma computao, pois no se tem a natureza das operaes ou dos testes, mas apenas um conjunto de identificadores. A natureza das operaes e testes especificada na definio de mquina.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 20

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.2 Mquinas
A mquina deve suprir todas as informaes necessrias para que a computao de um programa possa ser descrita:
cada identificador de operao deve caracterizar uma transformao na estrutura da memria da mquina; cada identificador de teste interpretado pela mquina deve ser associado a uma funo verdade; nem todo identificador de operao ou teste definido em uma mquina; para cada identificador de operao ou teste definido em uma mquina, existe somente uma funo associada; deve descrever o armazenamento ou a recuperao de informaes na estrutura de memria.

Uma Mquina uma 7-upla


V X Y M = (V, X, Y, X, Y, F, T) Conjunto de Valores de Memria; Conjunto de Valores de Entrada; Conjunto de Valores de Sada;

X Funo de Entrada tal que: X: X V Y Funo de Sada tal que: Y : V Y F Conjunto de Interpretaes de Operaes tal que, para cada identificador de operao F interpretado por M, existe uma nica funo: F: V V em F T Conjunto de Interpretaes de Testes tal que, para cada identificador de teste T interpretado por M, existe uma nica funo: T: V {verdadeiro, falso} em T

EXEMPLO 2.7 Mquina de Dois Registradores.


____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 21

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Suponha uma especificao de uma mquina com dois registradores a e b os quais assumem valores em N, com duas operaes e um teste: subtrao de 1 em a, se a > 0; adio de 1 em b; teste se a zero. Os valores de entrada so armazenados em a (zerando b) e a sada retorna o valor de b.
dois_reg = (N2, N, N, armazena_a, retorna_b, {subtrai_a, adiciona_b}, {a_zero})

N2, N, N - Conjuntos de Memria, Entrada e Sada armazena_a: N N2 tal que, n N, armazena_a(n) = (n, 0) retorna_b: N2 N tal que, (n, m) N2, retorna_b(n, m) = m subtrai_a: N2 N2 tal que, (n, m) N2,
subtrai_a(n, m) = (n-1, m), se n 0; subtrai_a(n, m) = (0, m), se n = 0

adiciona_b: N2 N2 tal que, (n,m)N2, adiciona_b(n,m) =(n, m+1) a_zero: N2 {verdadeiro, falso} tal que, (n, m) N2,
a_zero(n, m) = verdadeiro, se n = 0; a_zero(n, m) = falso, se n 0.

Afirma-se que P um programa para mquina M se cada identificador de teste e operao em P tiver uma correspondente funo de teste e operao em M, respectivamente.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 22

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 2.8

Programa para uma Mquina.

Sejam M = (V, X, Y, X, Y, F, T) uma mquina P um programa onde PF e PT so os conjuntos de identificadores de operaes e de testes de P, respectivamente. P um Programa para a Mquina M se, e somente, se: para qualquer F PF, existe uma nica funo F:VV em F; para qualquer T PT, existe uma nica funo T: V {verdadeiro, falso} em T. EXEMPLO 2.8 Programas para a Mquina de Dois Registradores. Programa Iterativo itv_ba at a_zero faa (subtrai_a;adiciona_b)
Figura 2.8 Programa iterativo para a mquina de dois registradores

Programa Recursivo rec_ba rec_ba R onde R def (se a_zero ento seno S;R), S def subtrai_a;adiciona_b
Figura 2.9 Programa recursivo para a mquina de dois registradores

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 23

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

2.3 Computaes e Funes Computadas


Ser visto como as definies de programas e mquinas caminham juntas para a definio de computao. Uma computao um histrico do funcionamento da mquina para o programa, considerando um valor inicial. Uma vez definida a noo de computao, pode-se inferir a natureza da funo computada, por um dado programa, em uma dada mquina.

2.3.1 Computao Uma computao de um programa monoltico em uma mquina um histrico das instrues executadas e o correspondente valor de memria. O histrico representado na forma de uma cadeia de pares onde: cada par reflete um estado da mquina para o programa, ou seja, a instruo a ser executada e o valor corrente da memria; a cadeia reflete uma seqncia de estados possveis a partir do estado inicial, ou seja, instruo (rtulo) inicial e valor de memria considerado.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 24

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 2.9 Computao de Programa Monoltico em uma Mquina.

Sejam M = (V, X, Y, X, Y, F, T) uma mquina P = (I, r) um programa monoltico para M onde L o seu correspondente conjunto de rtulos.

Uma Computao do Programa Monoltico P na Mquina M uma cadeia (finita ou infinita) de pares de L V:
onde (s0, v0) tal que s0 = r o rtulo inicial do programa P e v0 o valor inicial de memria para cada par (sk, vk) da cadeia, onde k {0, 1, 2, ...}, tem-se que (suponha que F um identificador de operao, T um identificador de teste e r', r" so rtulos de L): a) Operao. Se sk o rtulo de uma operao da forma:

(s0, v0)(s1, v1)(s2, v2)...

sk: faa F v_para r' ento (sk+1, vk+1) = (r', F(vk)) sk: faa v_para r' ento (sk+1, vk+1) = (r', vk)

b) Teste. Se sk o rtulo de um teste da forma:

sk: se T ento v_para r' seno v_para r"


ento (sk+1, vk+1) = ( ? , vk) sk+1 = r' se T(vk) = verdadeiro; sk+1 = r" se T(vk) = falso. Uma Computao dita Finita se a cadeia que a define finita e dita Infinita se a cadeia que a define infinita. para um dado valor inicial de memria, a correspondente cadeia de computao nica, ou seja, a computao determinstica; um teste no altera o valor corrente da memria; em uma computao infinita, rtulo algum da cadeia final.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 25

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 2.9 Computao Finita de Programa Monoltico na Mquina de Dois Registradores. programa monoltico mon_ba para a mquina dois_reg Programa Monoltico mon_ba 1: se a_zero ento v_para 9 seno v_para 2 2: faa subtrai_a v_para 3 3: faa adiciona_b v_para 1 Para o valor inicial de memria (3, 0), a computao finita :
(1, (3, 0)) (2, (3, 0)) (3, (2, 0)) (1, (2, 1)) (2, (2, 1)) (3, (1, 1)) (1, (1, 2)) (2, (1, 2)) (3, (0, 2)) (1, (0, 3)) (9, (0, 3)) instruo inicial e valor de entrada armazenado em 1, como a 0, desviou para 2 em 2, subtraiu do registrador a e desviou para 3 em 3, adicionou no registrador b e desviou para 1 em 1, como a 0, desviou para 2 em 2, subtraiu do registrador a e desviou para 3 em 3, adicionou no registrador b e desviou para 1 em 1, como a 0, desviou para 2 em 2, subtraiu do registrador a e desviou para 3 em 3, adicionou no registrador b e desviou para 1 em 1, como a = 0, desviou para 9

EXEMPLO 2.10 Computao Infinita de Programa Monoltico na Mquina de Dois Registradores. programa monoltico comp_infinita para a mquina dois_reg. Programa Monoltico comp_infinita 1: faa adiciona_b v_para 1 Para o valor inicial de memria (3, 0), a computao infinita
(1, (3, 0)) (1, (3, 1)) (1, (3, 2)) (1, (3, 3)) ... instruo inicial e valor de entrada armazenado adicionou no registrador b e permanece em 1 adicionou no registrador b e permanece em 1 adicionou no registrador b e permanece em 1 repete 1, adicionando no registrador b, indefinidamente

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 26

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

A computao de um programa recursivo em uma mquina anloga de um monoltico. O histrico representado na forma de uma cadeia de pares onde: cada par reflete um estado da mquina para o programa, ou seja, a expresso de sub-rotina a ser executada e o valor corrente da memria; a cadeia reflete uma seqncia de estados possveis a partir do estado inicial. A Computao dita Finita ou Infinita, se a cadeia que a define finita ou infinita, respectivamente. para um dado valor inicial de memria, a correspondente cadeia de computao nica, ou seja, a computao determinstica; um teste ou uma referncia a uma sub-rotina no alteram o valor corrente da memria; em uma computao finita, a expresso ocorre no ltimo par da cadeia e no ocorre em qualquer outro par; em uma computao infinita, expresso alguma da cadeia .

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 27

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 2.10 Computao de Programa Recursivo em uma Mquina. Sejam M = (V, X, Y, X, Y, F, T) uma mquina P um programa recursivo para M tal que: P E0 onde R1 def E1, R2 def E2,...,Rn def En Uma Computao do Programa Recursivo P na Mquina M uma cadeia de pares da forma: onde (D0, v0) tal que D0 = E0; e v0 o valor inicial de memria; para cada par (Dk, vk) da cadeia, onde k {0, 1, 2, ...}, tem-se que (suponha que F um identificador de operao, T um identificador de teste e C, C1, C2 so expresses de sub-rotina): Caso 1. Se Dk uma expresso de sub-rotina da forma: ento (Dk+1, vk+1) = (C, vk) Caso 2. Se Dk uma expresso de sub-rotina da forma: ento (Dk+1, vk+1) = (C, F(vk)) Caso 3. Se Dk uma expresso de sub-rotina da forma: ento (Dk+1, vk+1) = (Ei;C, vk) Caso 4. Se Dk uma expresso de sub-rotina da forma: ento (Dk+1, vk+1) = (C1;(C2;C), vk) Caso 5. Se Dk uma expresso de sub-rotina da forma:

(D0, v0) (D1, v1) (D2, v2)...

Dk = (;C) Dk = F;C Dk = Ri;C

Dk =(C1;C2);C

Dk = Ek = (se T ento C1 seno C2);C

ento (Dk+1, vk+1) = ( ? , vk ) Dk+1 = C1;C se T(vk) = verdadeiro Dk+1 = C2;C se T(vk) = falso

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 28

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 2.11 Computao Infinita de Programa Recursivo. programa recursivo qq_mquina um programa para qualquer mquina Programa Recursivo qq_mquina qq_mquina R onde R def R Para qualquer valor inicial de memria, a correspondente computao sempre infinita e a cadeia: (R, v0)(R, v0)(R, v0)... EXEMPLO 2.12 Computao Finita de Programa Recursivo na Mquina de Um Registrador. Para um dado conjunto A, a Funo Identidade em A aquela que associa, a cada elemento do conjunto, o prprio elemento, ou seja: idA: A A , tal que, para qualquer a A, tem-se que idA(a) = a. Considera a Mquina de um Registrador um_reg um_reg = (N, N, N, idN, idN, {ad, sub}, {zero}) N, N, N Conjuntos de Memria, Entrada e Sada idN: N N a funo identidade em N ad: N N tal que, n N, ad(n) = n+1 sub: N N tal que, n N, sub(n) = n-1 sub(n) = n-1, se n 0; sub(n) = 0, se n = 0 zero: N {verdadeiro, falso} tal que, n N, zero(n) = verdadeiro, se n = 0; zero(n) = falso, caso contrrio. Considere o programa recursivo duplica para a mquina um_reg .
Programa Recursivo duplica duplica R onde R def (se zero ento seno sub;R;ad;ad)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 29

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Para o valor inicial de memria 3, a computao finita


(R;, 3) valor de entrada armazenado ((se zero ento seno (sub;R;ad;ad));, 3) caso 3 ((sub;R;ad;ad);, 3) como n 0, executa seno (sub;(R;ad;ad);, 3) caso 4, composio seqencial ((R;ad;ad); , 2) subtraiu 1 da memria (R;(ad;ad);, 2) caso 4, composio seqencial ((se zero ento seno (sub;R;ad;ad));(ad;ad);, 2) caso 3 ((sub;R;ad;ad);(ad;ad);, 2) como n 0, executa seno (sub;(R;ad;ad);(ad;ad);, 2) caso 4, composio seqencial ((R;ad;ad);(ad;ad);, 1) subtraiu 1 da memria (R;(ad;ad);(ad;ad);, 1) caso 4, composio seqencial ((se zero ento seno(sub;R;ad;ad));(ad;ad);(ad;ad);, 1) caso 3 ((sub;R;ad;ad));(ad;ad);(ad;ad);, 1) como n 0, executa seno (sub;(R;ad;ad); (ad;ad);(ad;ad);, 1) caso 4, composio seqencial ((R;ad;ad);(ad;ad);(ad;ad);, 0) subtraiu 1 da memria (R;(ad;ad);(ad;ad);(ad;ad);, 0) caso 4, composio seqencial ((se zero ento seno (sub;R;ad;ad));(ad;ad);(ad;ad);(ad;ad);, 0) caso 3 (;(ad;ad);(ad;ad);(ad;ad);, 0) como n = 0, executa ento ((ad;ad);(ad;ad);(ad;ad);, 0) caso 1 (ad;(ad;(ad;ad);(ad;ad);), 0) caso 4, composio seqencial ((ad;(ad;ad);(ad;ad);), 1) adicionou 1 na memria (ad;((ad;ad);(ad;ad);), 1) caso 4, composio seqencial (((ad;ad);(ad;ad);), 2) adicionou 1 na memria (ad;(ad;(ad;ad);), 2) caso 4, composio seqencial ((ad;(ad;ad);), 3) adicionou 1 na memria (ad;((ad;ad);), 3) caso 4, composio seqencial (((ad;ad);), 4) adicionou 1 na memria (ad;((ad);), 4) caso 4, composio seqencial (((ad);), 5) adicionou 1 na memria (ad;(), 5) caso 4, composio seqencial ((), 6) adicionou 1 na memria (, 6) fim da recurso Figura 2.17 Computao finita na mquina de um registrador Note-se que o valor final na memria o valor inicial duplicado. Observe-se que, usando a noo de recurso, no foi necessrio usar duas clulas de memria, uma para controlar o ciclo e outra para calcular o resultado. A facilidade de recurso usada para determinar quantas vezes a operao ad necessita ser executada.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 30

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.3.2 Funo Computada


A computao de um programa deve ser associada a uma entrada e a uma sada. Adicionalmente, espera-se que a resposta (sada) seja gerada em um tempo finito. Essas noes induzem a definio de funo computada. A funo computada por um programa monoltico sobre uma mquina: a computao inicia na instruo identificada pelo rtulo inicial, com a memria contendo o valor inicial resultante da aplicao da funo de entrada sobre o dado fornecido; executa, passo a passo, testes e operaes, na ordem determinada pelo programa, at atingir um rtulo final, quando pra; o valor da funo computada pelo programa o valor resultante da aplicao da funo de sada ao valor da memria quando da parada. Definio 2. 11 Funo Computada por um Programa Monoltico em uma Mquina. Sejam M = (V, X, Y, X, Y, F, T) uma mquina P um programa monoltico para M. A Funo Computada pelo Programa Monoltico P na Mquina M denotada por: uma funo parcial definida para x X se a cadeia: (s0, v0)(s1, v1)...(sn, vn) uma computao finita de P em M, onde o valor inicial da memria dado pela funo de entrada, ou seja, v0 = X(x). Neste caso, a imagem de x dada pela funo de sada aplicada ao ltimo valor da memria na computao, ou seja:

P, M: X Y

P, M(x) = Y(vn)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 31

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 2.13 Funo Computada por Programa Monoltico na Mquina de Dois Registradores. Considere o programa monoltico mon_ba para a mquina dois_reg . A correspondente funo computada a funo identidade, mon_ba, dois_reg: N N tal que, para qualquer n N, tem-se que: mon_ba, dois_reg(n) = n Por exemplo, para o valor entrada de 3, tem-se que: X(3) = (3, 0); mon_ba, dois_reg(3) = Y(0, 3) = 3. Portanto, mon_ba, dois_reg definida para 3. EXEMPLO 2.14 Funo Computada por Programa Monoltico na Mquina de Dois Registradores. Considere o programa monoltico comp_infinita para a mquina dois_reg. A funo computada comp_infinita, dois_reg: N N, para a entrada de valor 3: X(3) = (3, 0); Como a cadeia infinita, a funo computada no definida para o valor de entrada 3.

A funo computada por um programa recursivo sobre uma mquina anloga de um monoltico:
a computao inicia na expresso inicial com a memria contendo o valor inicial resultante da aplicao da funo de entrada sobre o dado fornecido; executa, passo a passo, testes e operaes, na ordem determinada pelo programa, at que a expresso de sub-rotina resultante seja a expresso vazia, quando pra; o valor da funo computada pelo programa o valor resultante da aplicao da funo de sada ao valor da memria quando da parada.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 32

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 2.12 Funo Computada por um Programa Recursivo em uma Mquina. Sejam M = (V, X, Y, X, Y, F, T) uma mquina P um programa recursivo para M. A Funo Computada pelo Programa Recursivo P na Mquina M denotada por: uma funo parcial definida para x X se a seguinte cadeia uma computao finita de P em M: (D0, v0) (D1, v1)...(Dn, vn) onde: D0 = E0 expresso inicial de P v0 = X(x) En = Neste caso, tem-se que: P, M(x) = Y(vn) EXEMPLO 2.15 Funo Computada por Programa Recursivo. Considere o programa recursivo qq_mquina e uma mquina M = (V, X, Y, X, Y, F, T) qualquer. A correspondente funo computada : qq_mquina, M: X Y e indefinida para qualquer entrada. EXEMPLO 2.16 Funo Computada por Programa Recursivo na Mquina de Um Registrador. Considere o programa recursivo duplica para a mquina um_reg. A correspondente funo computada : duplica, um_reg: N N e tal que, para qualquer n N: duplica, um_reg(n) = 2n.

P, M: X Y

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 33

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

2.4 Equivalncias de Programas e Mquinas

Relao Equivalncia Forte de Programas. Um par de programas pertence relao se as correspondentes funes computadas coincidem para qualquer mquina; Relao Equivalncia de Programas em uma Mquina. Um par de programas pertence relao se as correspondentes funes computadas coincidem para uma dada mquina; Relao Equivalncia de Mquinas. Um par de mquina pertence relao se as mquinas podem se simular mutuamente. A simulao de uma mquina por outra pode ser feita usando programas diferentes. A Relao Equivalncia Forte de Programas especialmente importante pois, ao agrupar diferentes programas em classes de equivalncias de programas cujas funes coincidem, fornece subsdios para analisar propriedades de programas como complexidade estrutural. Um importante resultado que programas recursivos so mais gerais que os monolticos, os quais, por sua vez, so mais gerais que os iterativos. Igualdade de Funes Parciais. Duas funes parciais f, g: X Y so ditas iguais, ou seja, f = g, se, e somente se, para cada x X: ou f(x) e g(x) so indefinidas; ou ambas so definidas e f(x) = g(x). Composio Sucessiva de Funes. Para uma dada funo f: S S, a composio sucessiva de f com ela prpria denotada usando n expoente, f = f f... f (n vezes)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 34

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.4.1 Equivalncia Forte de Programas


Definio 2.13 Relao Equivalncia Forte de Programas, Programas Equivalentes Fortemente. Sejam P e Q dois programas arbitrrios, no necessariamente do mesmo tipo. Ento o par (P, Q) est na Relao Equivalncia Forte de Programas, denotada por: P Q se, e somente se, para qualquer mquina M, as correspondentes funes parciais computadas so iguais, P, M = Q, M. Neste caso, P e Q so ditos Programas Equivalentes Fortemente. EXEMPLO 2.17 Programas Equivalentes Fortemente. Considere os quatro programas na figura abaixo. Os programas monolticos P1 e P2 , o iterativo P3 e o recursivo P4 so todos equivalentes fortemente.
partida partida

T f parada

T f parada

Programa Monoltico P1

T f parada

Programa Monoltico P2

Programa Iterativo P3 enquanto T faa (F) Programa Recursivo P4 P4 R onde R def (se T ento F;R seno )
Figura 2.18 Quatro equivalncias forte de programas

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 35

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Programa monoltico
partida

Programa Monoltico P1
1:seTento v_para2 seno v_para3 2:faa F v_para 1

T f parada

conjunto de instrues rotuladas

Programa Monoltico P1

Sejam M = (V, X, Y, X, Y, F, T) uma mquina arbitrria x X tal que X(x) = v. Se P1, M definida para x computao dada pela cadeia: (1, v) (2, v) (1, F(v)) (2, F(v)) (1, F2(v)) (2, F2(v)) ...(1, Fn(v)) (3, Fn(v)) supondo que n o menor natural tal que T(Fn(v)) = falso. Neste caso: P1, M(x) = Y(Fn(v))

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 36

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Programa Recursivo P4 P4 R onde R def (se T ento F;R seno ) Se P4, M definida para x, Computao dada por:
(R, v) ((se T ento F;R seno ), v) (F;R, v) (R, F(v)) ((se T ento F;R seno ), F(v)) (F;R, F(v))

(R, F2(v)) ((se T ento F;R seno ), F2(v)) (F;R, F2(v)) ... (R, Fn(v)) ((se T ento F;R seno ), Fn(v)) (, Fn(v)) supondo que n o menor natural tal que T(Fn(v)) = falso. Neste caso: P4, M(x) = Y(Fn(v))

Portanto, P1 P4 pois, para qualquer mquina M, tem-se que: P1, M = P4, M

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 37

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Relao Equivalncia Forte de Programas

permite identificar diferentes programas em uma mesma classe de equivalncia, ou seja, identificar diferentes programas cujas funes computadas coincidem, para qualquer mquina; as funes computadas por programas equivalentes fortemente tm a propriedade de que os mesmos testes e as mesmas operaes so efetuados na mesma ordem, independentemente do significado dos mesmos; fornece subsdios para analisar a complexidade estrutural de programas. Por exemplo, analisando os programas monolticos equivalentes fortemente P1 e P2 pode-se concluir que P1 estruturalmente "mais otimizado" que P2, pois contm um teste a menos.
p a rtida p a rtida

T f p a ra da

T f p a ra da

P ro g ra m a M o n o ltic o P1

T f p a ra da

P ro g ra m a M o n o ltic o P2

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 38

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

para todo programa iterativo, existe um programa monoltico fortemente equivalente; para todo programa monoltico, existe um programa recursivo fortemente equivalente.
Entretanto, a inversa no necessariamente verdadeira, ou seja, relativamente Relao Equivalncia Forte de Programas, programas recursivos so mais gerais que os monolticos, os quais, por sua vez, so mais gerais que os iterativos, induzindo uma hierarquia de classes de programas

Pr og ramas Progr amas Progr am as

Re cursiv o s Monolt icos It e rat iv os

Hierarquia induzida pela Relao Equivalncia Forte de Programas

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 39

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Teorema 2.14 Equivalncia Forte de Programas: Monoltico. Iterativo

Para qualquer programa iterativo P , existe um programa monoltico P, tal que P P. Prova: Seja Pi um programa iterativo qualquer. Seja Pm um programa monoltico indutivamente construdo como segue: a) Para a operao vazia corresponde o fluxograma elementar: b) Para cada identificador de operao fluxograma elementar:
F
F

de

Pi

corresponde o seguinte

c) Composio Seqencial.

V;W d) Composio Condicional.

(se T ento V seno W) e) Composio Enquanto. enquanto T faa (V) f) Composio At. at T faa (V)
v T f V

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 40

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Teorema 2.15 Equivalncia Forte de Programas:

Monoltico

Recursivo.

Para qualquer programa monoltico Pm, existe um programa recursivo Pr, tal que Pm Pr. Prova: Seja Pm um programa monoltico qualquer onde L = {r1, r2, ..., rn} o correspondente conjunto de rtulos. Suponha que, em Pm, rn o nico rtulo final. Ento Pr um programa recursivo construdo a partir de Pm e tal que: Pr R1 onde R1 def E1, R2 def E2, ...,Rn def para k {1, 2, ..., n-1}, Ek definido como segue:
a)

Operao. Se rk da forma: rk: faa F v_para rk' ento Ek a seguinte expresso de sub-rotinas: F;Rk'

b) Teste. Se rk da forma: rk: se T ento v_para rk' seno v_para rk" ento Ek a seguinte expresso de sub-rotinas: (se T ento Rk' seno Rk") Corolrio 2.16 Equivalncia Forte de Programas: Iterativo Recursivo. Para qualquer programa iterativo Pi, existe um programa recursivo Pr, tal que Pi Pr. Teorema 217 Equivalncia Forte de Programas: Recursivo Monoltico. Dado um programa recursivo Pr qualquer, no necessariamente existe um programa monoltico Pm, tal que Pr Pm.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 41

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

PROVA: (Por Absurdo). Para provar, suficiente apresentar um programa recursivo que, para uma determinada mquina, no apresente programa monoltico fortemente equivalente. Considere o programa recursivo duplica e a mquina um_reg. A funo computada duplica, um_reg: N N, para qualquer n N: duplica, um_reg(n) = 2n Suponha que existe um programa monoltico Pm que computa a mesma funo, ou seja, que Pm, um_reg: N N e: duplica, um_reg = Pm, um_reg Suponha que Pm constitudo de k operaes ad. Suponha n N tal que n k. Ento, para que Pm, um_reg (n) = 2n, necessrio que Pm execute n vezes a operao ad. Mas, como n k, ento pelo menos uma das ocorrncias de ad ser executada mais de uma vez, ou seja, existe um ciclo em Pm. Na funo computada por dois programas equivalentes fortemente, os mesmos testes e as mesmas operaes so efetuados na mesma ordem; portanto, o programa monoltico correspondente no pode intercalar testes de controle de fim de ciclo na seqncia de operaes ad (no programa recursivo, as operaes ad no so intercaladas por qualquer outra operao ou teste) . Portanto, a computao resultante infinita e a correspondente funo no definida para n, o que um absurdo, pois suposto que os dois programas so equivalentes fortemente. Logo, no existe um programa monoltico fortemente equivalente ao programa recursivo duplica.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 42

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

COMENTRIOS:
Para melhor entender o esse resultado: um programa de qualquer tipo no pode ser modificado dinamicamente, durante uma computao; um programa, para ser fortemente equivalente a outro, no pode conter ou usar facilidades adicionais como memria auxiliar ou operaes ou testes extras; para que um programa monoltico possa simular uma recurso sem um nmero finito e predefinido de quantas vezes a recurso pode ocorrer, seriam necessrias infinitas opes de ocorrncias das diversas operaes ou testes envolvidos na recurso em questo; infinitas opes implicam um programa infinito, o que contradiz a definio de programa monoltico, o qual constitudo por um conjunto finito de instrues rotuladas.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 43

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Teorema 2.18 Equivalncia Forte de Programas: Iterativo. Monoltico

Dado um programa monoltico Pm qualquer, no necessariamente existe um programa iterativo Pi, tal que Pm Pi.
PROVA: (Por Absurdo). Para provar, suficiente apresentar um programa monoltico que, para uma determinada mquina, no apresente programa iterativo fortemente equivalente. Considere o programa monoltico par e a mquina um_reg
partida

ad

zero

sub

zero

sub

parada

a funo computada par, um_reg: N N tal que, para qualquer n N: par, um_reg(n) = 1, se n par; par, um_reg(n) = 0, se n mpar. Ou seja, retorna o valor 1 sempre que a entrada par, e zero, caso contrrio.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 44

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Suponha que existe um programa iterativo Pi que computa a mesma funo, ou seja, que Pi, um_reg: N N e: par, um_reg = Pi, um_reg Suponha que Pi constitudo de k operaes sub. n N tal que n k. Ento, necessrio que Pi execute n vezes a operao sub. Mas, como n k, ento pelo menos uma das ocorrncias de sub ser executada mais de uma vez, ou seja, existe um ciclo iterativo (do tipo enquanto ou at) em Pi. Em qualquer caso, o ciclo terminar sempre na mesma condio, independentemente se o valor for par ou mpar. Portanto, a computao resultante incapaz de distinguir entre os dois casos, o que um absurdo, pois suposto que os dois programas so equivalentes fortemente. Logo, no existe um programa iterativo fortemente equivalente ao programa monoltico par.

Observao 2.19: Poder Computacional dos Diversos Tipos de Programas.

Os teoremas acima podem dar a falsa impresso de que o poder computacional da classe dos programas recursivos maior que a dos monolticos que, por sua vez, maior que a dos iterativos. importante constatar que as trs classes de formalismos possuem o mesmo poder computacional, ou seja: para qualquer programa recursivo (respectivamente, monoltico) e para qualquer mquina, existe um programa monoltico (respectivamente, iterativo) e existe uma mquina tal que as correspondentes funes computadas coincidem. Para efeito de anlise de poder computacional, pode-se considerar mquinas distintas para programas distintos e no necessariamente existe uma relao entre as operaes e testes (e a ordem de execuo) dos programas.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 45

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

2.4.2 Equivalncia de Programas


Definio 2.20 Relao Equiv de Programas em uma Mquina Uma noo de equivalncia mais fraca Sejam P e Q dois programas arbitrrios, no necessariamente do mesmo tipo e uma mquina M qualquer. Ento o par (P, Q) est na Relao Equivalncia de Programas na Mquina M, denotado por: P M Q se, e somente se, as correspondentes funes parciais computadas so iguais, ou seja: P, M = Q, M Neste caso, P e Q so ditos Programas Equivalentes na Mquina M, ou simplesmente Programas M-Equivalentes. Existem mquinas nas quais no se pode provar a existncia de um algoritmo para determinar se, dados dois programas, eles so ou no M-equivalentes.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 46

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.4.3 Equivalncia de Mquinas


Definio 2.21 Simulao Forte de Mquinas Sejam M = (VM, X, Y, XM, YM, FM, TM) e N = (VN, X, Y, XN, YN, FN, TN) duas mquinas arbitrrias. N Simula Fortemente M se, e somente se, para qualquer programa P para M, existe um programa Q para N, tal que as correspondentes funes parciais computadas coincidem, ou seja: P, M = Q, N

importante observar que a igualdade de funes exige que os conjuntos de domnio e contra-domnio sejam iguais. Pode-se contornar essa dificuldade, tornando menos restritiva a definio de simulao, atravs da noo de codificaes.

Definio 2.22 Simulao de Mquinas Sejam M = (VM, XM, YM, XM, YM, FM, TM) e N = (VN, XN, YN, XN, YN, FN, TN) duas mquinas arbitrrias. N Simula M se, e somente se, para qualquer programa P para M, existe um programa Q para N e existem Funo de Codificao c: XM XN Funo de Decodificao d: YN YM tais que: P, M = d Q, N c Definio 2.23 Relao Equivalncia de Mquinas Sejam M e N duas mquinas arbitrrias. Ento o par (M, N) est na Relao Equivalncia de Mquinas, se, e somente se: M simula N e N simula M.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 47

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

2.5 Verificao da Equivalncia Forte de Programas


Mostra-se que existe um algoritmo para decidir a equivalncia forte entre programas monolticos. Como todo programa iterativo possui um programa monoltico equivalente fortemente, o mesmo pode ser afirmado para programas iterativos. A verificao de que dois programas monolticos so equivalentes fortemente usa os seguintes conceitos: a) Mquina de Traos. Produz um rastro ou histrico (denominado trao) da ocorrncia das operaes do programa. Neste contexto, dois programas so equivalentes fortemente se so equivalentes em qualquer mquina de traos. Programa Monoltico com Instrues Rotuladas Compostas. Instrues rotuladas compostas constituem uma forma alternativa de definir programas monolticos. Basicamente, uma instruo rotulada composta um teste da seguinte forma :

b)

r1: seT ento faa F v_para r2 seno faa G v_para r3

De fato, usando mquinas de traos, fcil verificar que, para um dado fluxograma, possvel construir um programa equivalente fortemente, usando instrues rotuladas compostas. Instrues rotuladas compostas induzem a noo de rtulos equivalentes fortemente, a qual usada para determinar se dois programas so ou no equivalentes fortemente.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 48

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.5.1 Mquina de Traos


Uma mquina de traos no executa as operaes propriamente ditas, mas apenas produz um histrico ou rastro da ocorrncia destas, denominado de trao. Essas mquinas so de grande importncia para o estudo da equivalncia de programas pois, se dois programas so equivalentes em qualquer mquina de traos, ento so equivalentes fortemente. Definio 2.24 Mquina de Traos. Uma Mquina de traos uma mquina onde: Op*conjunto de palavras de operaes onde Op = {F, G, ...} o qual corresponde, simultaneamente, aos conjuntos de valores de memria, de entrada e de sada; idOp*funo identidade em Op*, a qual corresponde, simultaneamente, s funes de entrada e sada; F conjunto de interpretaes de operaes onde, para cada identificador de operao F de Op, a interpretao F: Op* Op* tal que, para qualquer w Op*, F(w) resulta na concatenao do identificador F direita de w, ou seja: F(w) = wF T conjunto de interpretaes de testes, tal que, para cada identificador de teste T: T: Op* {verdadeiro, falso} funo de T efeito de cada operao interpretada por uma mquina de traos simplesmente o de acrescentar o identificador da operao direita do valor atual da memria. a funo computada consiste em um histrico das operaes executadas durante a computao. M = (Op*, Op*, Op*, idOp*, idOp*, F, T)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 49

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 2.25 Funo Induzida por um Trao em uma Mquina Sejam M = (V, X, Y, X, Y, F, T) uma mquina,
Op = {F, G, H, ...} o conjunto de operaes interpretadas em F e

w = FG...H um trao possvel de M, ou seja, w Op*. A Funo Induzida pelo Trao w na Mquina M, denotada por: [w, M]: X V a funo (total): [w, M] = H ... G F X A funo [w, M] aplicada a uma entrada x X denotada por: [wx, M] = H ... G F X(x)
Portanto, a funo induzida por um trao nada mais do que a funo resultante da composio das interpretaes das diversas operaes que constituem o trao.

Teorema 2.26 Equivalncia Forte de Programas Equivalncia de Programas em Mquinas de Traos Sejam P e Q dois programas arbitrrios, no necessariamente do mesmo tipo. Ento: P Q se, e somente se, para qualquer mquina de traos M, P M Q. Corolrio 2.27 Equivalncia Forte de Programas Equivalncia de Programas em Mquinas de Traos. Sejam P e Q dois programas arbitrrios, no necessariamente do mesmo tipo. Ento: P Q se, e somente se, para qualquer mquina de traos M, P, M() = Q, M().

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 50

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.5.2 Instrues Rotuladas Compostas


Instrues rotuladas compostas possuem somente um formato, ao contrrio das instrues rotuladas, as quais podem ter dois formatos: de operao e de teste. Definio 2.28 Instruo Rotulada Composta. Uma Instruo Rotulada Composta uma seqncia de smbolos da seguinte forma (suponha que F e G so identificadores de operao e que T um identificador de teste): r1: se T ento faa F v_para r2 seno faa G v_para r3 r2 e r3 so ditos rtulos sucessores de r1; r1 dito rtulo antecessor de r2 e r3. Definio 2.29 Programa Monoltico com Instrues Rotuladas Compostas Um Programa Monoltico com Instrues Rotuladas Compostas P um par ordenado P = (I, r) onde: I Conjunto de Instrues Rotuladas Compostas, o qual finito; r Rtulo Inicial o qual distingue a instruo rotulada inicial em I. Adicionalmente, relativamente ao conjunto I, tem-se que: no existem duas instrues diferentes com um mesmo rtulo; um rtulo referenciado por alguma instruo o qual no associado a qualquer instruo rotulada dito um Rtulo Final. Para simplificar o entendimento da determinao da equivalncia forte de programas monolticos, considerado somente o caso particular em que os programas possuem um nico identificador de teste, denotado por T. Considerando-se um nico identificador de teste, uma instruo rotulada composta da forma: r1:se T ento faa F v_para r2 seno faa G v_para r3 pode ser abreviada simplesmente por: r1: (F, r2), (G, r3)
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 51

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 2.30 Algoritmo Fluxograma Rotuladas Compostas. Ns - componentes elementares de partida, parada e operao de um fluxograma algoritmo para traduzir um fluxograma P para um programa monoltico P' constitudo por instrues rotuladas compostas: a) Rotulao de Ns. Rotula-se cada n do fluxograma. Suponha que existe um nico componente elementar de parada, ao qual associado o identificador (palavra vazia). O rtulo correspondente ao n partida o Rtulo Inicial do programa P'. b) Instrues Rotuladas Compostas. A construo de uma instruo rotulada composta parte do n partida e segue o caminho do fluxograma. b.1) Teste. Para um teste, a correspondente instruo rotulada composta : r1: (F, r2), (G, r3) b.2) Operao. Para uma operao, a correspondente instruo rotulada composta : r1: (F, r2), (F, r2) b.3) Parada. Para uma parada, a correspondente instruo rotulada composta como segue: r: (parada, ), (parada, ) b.4) Testes Encadeados. No caso de testes encadeados, segue-se o fluxo at que seja encontrado um n, resultando na seguinte instruo rotulada composta: r1: (F, r2), (G, r3) b.5) Testes Encadeados em Ciclo Infinito. Para um ciclo infinito determinado por testes encadeados, a correspondente instruo rotulada composta : r1: (F, r2), (ciclo, ) Neste caso, deve ser includa, adicionalmente, uma instruo rotulada composta correspondente ao ciclo infinito: : (ciclo, ), (ciclo, )

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 52

INTRODUO

E
r1

CONCEITOS

BSICOS

________________________________________________________________________________________

Teste

r2

r3

r1 r1 r2
F

Testes Encadeados

Operao

r2

T f

r r4
H

r3

parada

Parada

r1

r2

T f f

Testes Encadeados em Ciclos Infinitos

Figura 2.23 Instrues rotuladas compostas


Rotuladas Compostas. EXEMPLO 2.18 Algoritmo Fluxograma Considere o programa monoltico especificado na forma de fluxograma cujos ns j esto rotulados:
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 53

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

partida

7
parada

correspondente programa com instrues rotuladas compostas representado abaixo supondo que 1 o rtulo inicial.
1: 2: 3: 4: 5: 6: 7: : (G, 2), (F, 3) (G, 2), (F, 3) (F, 4), (G, 5) (F, 4), (G, 5) (F, 6), (ciclo, ) (parada, ), (G, 7) (G, 7), (G, 7) (ciclo, ), (ciclo, )

Note-se que:
o rtulo 2 sucessor dele mesmo. O mesmo ocorre com os rtulos 4, 7 e ; existem dois caminhos no fluxograma que atingem o n parada. S um representado no conjunto de instrues rotuladas compostas. na instruo rotulada por 7, ocorre um ciclo infinito.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 54

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.5.3 Equivalncia Forte de Programas Monolticos


A unio disjunta de conjuntos garante que todos os elementos dos conjuntos componentes constituem o conjunto resultante, mesmo que possuam a mesma identificao. considera-se que os elementos so distintos, mesmo que possuam a mesma identificao. Exemplo: para os conjuntos A = {a, x} e B = {b, x}, o conjunto resultante da unio disjunta : {aA, xA, bB, xB} = {a, xA, b, xB} Corolrio 2.32 Equivalncia Forte: Unio Disjunta. Sejam: Q = (IQ, q) e R = (IR, r) dois programa monolticos especificados usando instrues rotuladas compostas Pq = (I, q) e Pr = (I, r) programas monolticos onde I o conjunto resultante da unio disjunta de IQ e IR. Ento: Pq Pr se, e somente se, Q R O algoritmo para verificao da equivalncia forte de Q e R resumese verificao se Pq e Pr so equivalentes fortemente. cadeia de conjunto: seqncia de conjuntos ordenada pela relao de incluso; programa monoltico simplificado: instrues rotuladas compostas que determinam ciclos infinitos so excludas (excetuando-se a instruo rotulada por , se existir). A simplificao baseia-se em cadeia de conjuntos; rtulos equivalentes fortemente: o algoritmo de verificao se Pq e Pr so equivalentes fortemente baseia-se em rtulos equivalentes fortemente de programas simplificados.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 55

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 2.33 Cadeia de Conjuntos, Cadeia Finita de Conjuntos, Limite de uma Cadeia Finita de Conjuntos. Uma seqncia de conjuntos A0A1... dita: a) uma Cadeia de Conjuntos se, para qualquer k 0: Ak Ak+1 b) uma Cadeia Finita de Conjuntos uma cadeia de conjuntos onde existe n, para todo k 0, tal que: An = An+k c) o Limite da Cadeia Finita de Conjuntos : lim Ak = An Lema 2.34 Identificao de Ciclos Infinitos em Programa Monoltico. lema fornece um algoritmo para determinar se existem ciclos infinitos em um conjunto de instrues rotuladas compostas. A idia bsica partir da instruo parada, rotulada por , determinando os seus antecessores. Por excluso, um instruo que no antecessor da parada determina um ciclo infinito. Seja I um conjunto de n instrues rotuladas compostas. Seja A0A1... uma seqncia de conjuntos de rtulos indutivamente definida como segue: A0 = {} Ak+1 = Ak {r r rtulo de instruo antecessora de alguma instruo rotulada por Ak} Ento A0A1... uma cadeia finita de conjuntos, e, para qualquer rtulo r de instruo de I, tem-se que (I, r) (I, ) se, e somente se, r lim Ak O Lema acima proporciona uma maneira fcil de determinar se algum rtulo caracteriza ciclos infinitos.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 56

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 2.19 Identificao de Ciclos Infinitos em Programa Monoltico. Considere o conjunto I de instrues rotuladas compostas representado na Figura abaixo
1: 2: 3: 4: 5: 6: 7: : (G, 2), (F, 3) (G, 2), (F, 3) (F, 4), (G, 5) (F, 4), (G, 5) (F, 6), (ciclo, ) (parada, ), (G, 7) (G, 7), (G, 7) (ciclo, ), (ciclo, )

A correspondente cadeia finita de conjuntos : A0 = {} A1 = {6, } A2 = {5, 6, } A3 = {3, 4, 5, 6, } A4 = {1, 2, 3, 4, 5, 6, } A5 = {1, 2, 3, 4, 5, 6, } Logo: lim Ak = {1, 2, 3, 4, 5, 6, } Simplificao de ciclos infinitos: (I, 7) (I, ), pois 7 lim Ak .

Portanto, pode-se simplificar um conjunto de instrues rotuladas compostas eliminando-se qualquer instruo de rtulo r que determine um ciclo infinito.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 57

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 2.35 Algoritmo de Simplificao de Ciclos Infinitos. Seja I um conjunto finito de instrues rotulas compostas. O Algoritmo de Simplificao de Ciclos Infinitos : a) determina-se a correspondente cadeia finita de conjuntos A0A1... como no lema 2.34; b) para qualquer rtulo r de instruo de I tal que r lim Ak, tem-se que: a instruo rotulada por r excluda; toda referncia a pares da forma (F, r) em I substituda por (ciclo, ); I = I {: (ciclo, ), (ciclo, )}. EXEMPLO 2.20:. 1: 2: 3: 4: 5: 6: : (G, 2), (F, 3) (G, 2), (F, 3) (F, 4), (G, 5) (F, 4), (G, 5) (F, 6), (ciclo, ) (parada, ), (ciclo, ) (ciclo, ), (ciclo, )

Lema 2.36 Rtulos Consistentes. Seja I um conjunto finito de instrues rotuladas compostas e simplificadas. Sejam r e s dois rtulos de instrues de I, ambos diferentes de . Suponha que as instrues rotuladas por r e s so da seguinte forma, respectivamente: r: (F1, r1), (F2, r2) s: (G1, s1), (G2, s2) Ento: r e s so consistentes se, e somente se, F1 = G1 e F2 = G2

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 58

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 2.37 Rtulos Equivalentes Fortemente. Seja I um conjunto finito de instrues rotuladas compostas e simplificadas. Sejam r e s dois rtulos de instrues de I. Suponha que as instrues rotuladas por r e s so da seguinte forma, respectivamente: r: (F1, r1), (F2, r2) s: (G1, s1), (G2, s2) Ento, r e s so Rtulos Equivalentes Fortemente se, e somente se: ou r = s = ; ou r e s so ambos diferentes de e consistentes, ou seja F1 = G1 e F2 = G2 Teorema 2.38 Determinao de Rtulos Equivalentes Fortemente. Seja I um conjunto de n instrues compostas e simplificadas. Sejam r e s dois rtulos de instrues de I. Define-se, indutivamente, a seqncia de conjuntos B0B1... por: B0 = {(r, s)} Bk+1 = {(r", s")r" e s"so rtulos sucessores de r e s, respectivamente, (r, s) Bk e (r", s") Bi , (0 i k)} Ento B0B1... uma seqncia que converge para o conjunto vazio, e r, s so rtulos equivalentes fortemente se, e somente se, qualquer par de Bk constitudo por rtulos consistentes.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 59

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 2.39
Algoritmo de Verificao da Equivalncia Forte de Programas Monolticos.

Sejam Q = (IQ, q) e R = (IR, r) dois programas monolticos especificados usando instrues rotuladas compostas e simplificado. Algoritmo de Verificao da Equivalncia Forte de Programas Monolticos Q e R determinado pelos passos: Passo 1. Sejam Pq = (I, q) e Pr = (I, r) programas monolticos onde I o conjunto resultante da unio disjunta de IQ e IR, excetuando-se a instruo rotulada , se existir, a qual ocorre, no mximo, uma vez em I. Passo 2. Se q e r so rtulos equivalentes fortemente, ento B0={(q, r)}. Caso contrrio, Q e R no so equivalentes fortemente, e o algoritmo termina. Passo 3. Para k 0, define-se o conjunto Bk+1, contendo somente os pares (q", r") de rtulos sucessores de cada (q', r') Bk, tais que: q' r'; q' e r' so ambos diferentes de ; os pares sucessores (q", r") no so elementos de B0, B1, ... , Bk. Passo 4. Dependendo de Bk+1, tem-se que: a) Bk+1 = : Q e R so equivalentes fortemente, e o algoritmo termina; b) Bk+1 : se todos os pares de rtulos de Bk+1 so equivalentes fortemente, ento v para o Passo 3; caso contrrio, Q e R no so equivalentes fortemente, e o algoritmo termina.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 60

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 2.21 Algoritmo de Verificao da Equivalncia Forte de Programas Monolticos. Considere os programas monolticos especificados na forma de fluxograma Q (Exemplo 2.18 Figura 2.25) e R (dado abaixo):
8
partida

10

11

12

13

parada

Figura 2.27 - Programa Monoltico R a) 1: 2: 3: 4: 5: 6: : A especificao do programa Q usando instrues rotuladas compostas, j simplificado, j foi feita na Figura 2.26. (G, 2), (F, 3) (G, 2), (F, 3) (F, 4), (G, 5) (F, 4), (G, 5) (F, 6), (ciclo, ) (parada, ), (ciclo, ) (ciclo, ), (ciclo, )

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 61

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

b) Em relao ao programa R, tem-se que: b.1) Conjunto de instrues rotuladas compostas. 8: 9: 10: 11: 12: 13: (G, 9), (F, 10) (G, 9), (F, 10) (F, 10), (G, 11) (F, 12), (F, 13) (parada, ), (F, 13) (F, 13), (F, 13)

b.2) Identificao de ciclos infinitos. A0 = {} A1 = {12, } A2 = {11, 12, } A3 = {10, 11, 12, } A4 = {8, 9, 10, 11, 12, } A5 = {8, 9, 10, 11, 12, } Portanto: lim Ak = {8, 9, 10, 11, 12, } (IR, 13) (I, ), pois 13 lim Ak. b.3) Simplificao de ciclos infinitos. 8: 9: 10: 11: 12: : (G, 9), (F, 10) (G, 9), (F, 10) (F, 10), (G, 11) (F, 12), (ciclo, ) (parada, ), (ciclo, ) (ciclo, ), (ciclo, )

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 62

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

c)

Relativamente aplicao do algoritmo, tem-se que:

Passo 1. Seja I a unio disjunta dos conjuntos IQ e IR, excetuando-se a instruo rotulada , como segue: 1: (G, 2), (F, 3) 2: (G, 2), (F, 3) 3: (F, 4), (G, 5) 4: (F, 4), (G, 5) 5: (F, 6), (ciclo, ) 6: (parada, ), (ciclo, ) 8: (G, 9), (F, 10) 9: (G, 9), (F, 10) 10:(F, 10), (G, 11) 11:(F, 12), (ciclo, ) 12:(parada, ), (ciclo, ) : (ciclo, ), (ciclo, )

Para verificar se Q R, suficiente verificar se (I, 1) (I, 8).


Passo 2. Como 1 e 8 so rtulos equivalentes fortemente, ento: B0 = {(1, 8)} Passos 3 e 4. Para k 0, construo de Bk+1 como segue: B1 = {(2, 9), (3, 10)} pares de rtulos equivalentes fortemente B2 = {(4, 10), (5, 11)} pares de rtulos equivalentes fortemente B3 = {(6, 12), (, )} pares de rtulos equivalentes fortemente pares de rtulos equivalentes fortemente B4 = {(, )} B5 = Logo (I, 1) (I, 8), e, portanto, Q R.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 63

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 2.22 Algoritmo de Verificao da Equivalncia Forte de


Programas Monolticos.

Os programas monolticos (fluxogramas) reproduzidos na Figura 2.28 com os ns rotulados so equivalentes fortemente.
partida partida

1 2

T f parada

T f parada

Programa Monoltico P1

T f parada

Programa Monoltico P2

a)

Figura 2.28 Fluxogramas P1 e P2 equivalentes fortemente A especificao do programa P1 usando instrues rotuladas compostas (e j simplificadas) : 1: (F, 2), (parada, ) 2: (F, 2), (parada, )

b)

A especificao de P2 usando instrues rotuladas compostas (e j simplificadas) : 3: (F, 4), (parada, ) 4: (F, 4), (parada, )

os correspondentes conjuntos de instrues rotuladas compostas so iguais, a menos dos rtulos. aplicao do algoritmo: fcil verificar que (I, 1) (I, 3). a relao equivalncia forte fornece subsdios para analisar a complexidade estrutural de programas. No caso, P1 estruturalmente mais otimizado que P2.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 64

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

2.6 Concluso
Foram introduzidos os conceitos de programa e de mquina, os quais so usados para construir as definies de computao e de funo computada. foram estudados trs tipos de programas: monoltico, iterativo e recursivo. Os recursivos so mais gerais que os monolticos os quais, por sua vez, so mais gerais que os iterativos. Apresentaram-se as noes de equivalncia de programas e de mquinas Mostrou-se a existncia de um algoritmo para verificar se programas monolticos (ou iterativos) so fortemente equivalentes.

Programas

Mquinas

Computaes

Funes Computadas

Programas Equivalentes

Mquinas Equivalentes

Funes Computveis

Mquina Universal

Figura 2.29 Relao entre os conceitos

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 65

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3 Mquinas Universais
3.1 Codificao de Conjuntos Estruturados 3.2 Mquina de Registradores - Norma 3.3 Mquina Norma como Mquina Universal
3.3.1 Operaes e Testes 3.3.2 Valores Numricos 3.3.3 Dados Estruturados 3.3.4 Endereamento Indireto e Recurso 3.3.5 Cadeias de Caracteres

3.4 Mquina de Turing


3.4.1 Noo Intuitiva 3.4.2 Noo como Mquina 3.4.3 Modelo Formal 3.4.4 Mquinas de Turing como Reconhecedores de Linguagens 3.4.5 Mquinas de Turing como Processadores de Funes 3.4.6 Equivalncia entre as Mquinas de Turing e Norma

3.5 Outros Modelos de Mquinas Universais


3.5.1 Mquina de Post 3.5.2 Mquina com Pilhas 3.5.3 Autmato com Duas Pilhas

3.6 Modificaes sobre as Mquinas Universais


3.6.1 No-Determinismo 3.6.2 Mquina de Turing com Fita Infinita Esquerda e Direita 3.6.3 Mquina de Turing com Mltiplas Fitas 3.6.4 Outras Modificaes sobre a Mquina de Turing

3.7 Hierarquia de Classes de Mquinas 3.8 Hiptese de Church

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 66

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3 MQUINAS UNIVERSAIS
Algoritmo
termo intuitivamente usado como soluo de um problema, como uma forma de descrever se determinada propriedade verificada ou no para uma dada classe de entrada.

Investigao da solucionabilidade de um problema Noo intuitiva de algoritmo

a investigao da existncia de um algoritmo capaz de resolv-lo. sua descrio deve ser finita e no-ambgua; deve consistir de passos discretos, executveis mecanicamente e em um tempo finito. Limitaes de tempo ou de espao podem determinar se um algoritmo pode ou no ser descrito na prtica. (no so restries tericas).
estudo ser restrito aos algoritmos naturais, ou seja, definidos sobre o conjunto dos nmeros naturais.

qualquer conjunto contvel pode ser equivalente ao dos naturais, atravs de uma codificao. conceito de programa, como introduzido anteriormente, satisfaz noo intuitiva de algoritmo. Entretanto, necessrio definir a mquina a ser considerada.

Mquina

simples, para permitir estudos de propriedades, sem a necessidade de considerar caractersticas no-relevantes, bem como permitir estabelecer concluses gerais sobre a classe de funes computveis; poderosa, capaz de simular qualquer caracterstica de mquinas reais ou tericas, de tal forma que os resultados provados sejam vlidos para modelos aparentemente com mais recursos.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 67

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Mquina Universal
Se for possvel representar qualquer algoritmo como um programa em tal mquina, ento esta denominada de mquina universal. As evidncias de que uma mquina universal: Evidncia Interna. Consiste na demonstrao de que qualquer extenso das capacidades da mquina universal proposta computa, no mximo, a mesma classe de funes, ou seja, no aumenta o seu poder computacional; Evidncia Externa. Consiste no exame de outros modelos que definem a noo de algoritmo, juntamente com a prova de que so, no mximo, computacionalmente equivalentes.

Mquina Norma, uma mquina universal

um conjunto de registradores naturais trs instrues sobre os registradores: operao de incrementar um - sucessor operao de decrementar um - antecessor teste se o valor armazenado zero.

Mquina de Turing, proposta em 1936 por Alan Turing


modelo mais utilizado como formalizao de algoritmo um mecanismo simples que formaliza a idia de uma pessoa que realiza clculos usando um instrumento de escrita e um apagador modelo formal baseado em uma fita (usada para entrada, sada e rascunho), uma unidade de controle um programa
Na realidade, no se trata de uma mquina no sentido dado a essa palavra, mas sim de um programa para uma mquina universal.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 68

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Hiptese de Church, apresentada em 1936 por Alonzo Church

afirma que qualquer funo computvel pode ser processada por uma Mquina de Turing, que existe um algoritmo expresso na forma de Mquina de Turing capaz de processar a funo. Como a noo intuitiva de algoritmo no matematicamente precisa, impossvel formalizar uma demonstrao de que a Mquina de Turing , efetivamente, o mais genrico dispositivo de computao. Entretanto, todas as evidncias internas e externas imaginadas foram sempre verificadas, reforando a Hiptese de Church. Os demais modelos de mquinas propostos, bem como qualquer extenso de suas capacidades, possuem, no mximo, a mesma capacidade computacional da Mquina Turing. Mquina de Post. Baseada na estrutura de dados do tipo fila (o primeiro dado armazenado o primeiro a ser recuperado); Autmato com Pilhas. Baseada na estrutura de dados do tipo pilha (o ltimo dado armazenado o primeiro a ser recuperado), onde so necessrias pelo menos duas pilhas para simular o mesmo poder computacional de uma fita ou fila. Extenses da Mquina de Turing no aumentam o seu poder computacional No-Determinismo. Permite que a mquina possa tentar diversos caminhos alternativos para uma mesma situao; Mltiplas fitas. Mais de uma fita. Mltiplas cabeas Fita infinita de ambos os lados

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 69

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Uso de Mquinas de Turing Existem trs maneiras de abordar o estudo das Mquinas de Turing
a) b)

Processar
propriedades;

Funes. Funes computveis e suas

Reconhecer Linguagens. Linguagens que podem ser


reconhecidas e suas propriedades;

c)

Solucionar Problemas. Problemas solucionveis e nosolucionveis, (computveis) computveis). problemas parcialmente solucionveis e completamente insolveis (no

As trs abordagens so usadas ao longo deste livro. A terceira constitui um dos problemas fundamentais da Cincia da Computao e tratada em captulo especfico.
existe um grande nmero de funes para as quais no possvel desenvolver algoritmos capazes de comput-las. existem funes que so no-computveis, sendo algumas relativamente simples de serem enunciadas como, por exemplo, uma funo que nomeia todas as funes.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 70

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.1 Codificao de Conjuntos Estruturados


codificao de conjuntos estruturados, onde elementos de tipos de dados estruturados so representados como nmeros naturais. Para um dado conjunto estruturado X, a idia bsica definir uma funo injetora c: X N, onde, para todo x, y X, tem-se que: se c(x) = c(y), ento x = y nesse caso, o nmero natural c(x) a codificao do elemento estruturado x. EXEMPLO 3.1 Codificao de n-Uplas Naturais. n Suponha que desejado codificar, de forma unvoca, elementos de N como nmeros naturais, ou seja, deseja-se uma funo injetora n c: N N. Uma codificao simples a seguinte: a) lembre-se de que, pelo Teorema Fundamental da Aritmtica, cada nmero natural univocamente decomposto em seus fatores primos; b) suponha os n primeiros nmeros primos denotados por p1 = 2, p2 = 3, p3 = 5 e assim sucessivamente. Ento, a codificao c: N N definida como segue unvoca n (suponha (x1, x2, ..., xn) em N e que o smbolo denota a operao de multiplicao nos naturais): c(x1, x2, ..., xn) = p1x1p2x2...pnxn Deve-se reparar que essa codificao no constitui uma funo bijetora, ou seja, nem todo nmero natural corresponde a uma n-upla. Entretanto, todo nmero natural decomponvel nos n primeiros nmeros primos corresponde a uma n-upla.
n

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 71

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 3.2 Codificao de Programas Monolticos.


Um programa monoltico pode ser codificado como um nmero natural.

Suponha um programa monoltico P = (I, r) com m instrues rotuladas onde {F1, F2, ..., Ff} e {T1, T2, ..., Tt} so os correspondentes conjuntos de identificadores de operaes e testes, respectivamente. Seja P' = (I, 1) como P, exceto pelos rtulos, os quais so renomeados como nmeros naturais, onde 1 o rtulo inicial, e o 0 nico rtulo final (se existir). Assim, uma instruo rotulada pode ser de uma das duas seguintes formas: a) Operao. r1: faa Fk v_para r2 b) Teste. r1:se Tk ento v_para r2 seno v_para r3 Cada instruo rotulada pode ser denotada por uma qudrupla ordenada, onde a primeira componente identifica o tipo da instruo: a)Operao. b) Teste. (0, k, r2, r2) (1, k, r2, r3)

Usando a codificao do exemplo anterior, o programa monoltico P', visto como qudruplas ordenadas pode ser codificado como segue: cada qudrupla (instruo rotulada) codificada como um nmero natural, usando a codificao. Assim, o programa monoltico P' com m instrues rotuladas pode ser visto como uma m-upla; por sua vez, a m-upla correspondente ao programa monoltico P' codificada como um nmero natural, usando a codificao. codificao de programas monolticos apresentada no uma funo bijetora.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 72

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

A seguir, ilustrado como, a partir de um nmero natural que denota um programa monoltico, pode-se recuperar o programa original. Suponha o nmero 150 105 p = (2 )(3 ) Portanto, o programa possui duas instrues rotuladas correspondentes aos nmeros 150 e 105. Relativamente s decomposies em seus fatores primos, tem-se que: 1 1 2 0 0 1 1 1 e 105 = 2 3 5 7 150 = 2 3 5 7 o que corresponde s qudrulas: (1, 1, 2, 0) e (0, 1, 1, 1) 1: se T1 ento v_para 2 seno v_para 0 2: faa F1 v_para 1 Sugere-se como exerccio a generalizao do caso ilustrado para qualquer nmero natural correspondente codificao de um programa monoltico. EXERCCIOS: Codifique os seguintes programas monolticos em um nico nmero natural.
a) M1:

1: 2: 3: 4: 5: 6: 7: 8:
b) M2:

faa se T faa se T faa se T faa se T

F v_para 2 ento v_para G v_para 4 ento v_para F v_para 6 ento v_para G v_para 8 ento v_para

3 seno v_para 5 1 seno v_para 0 7 seno v_para 2 6 seno v_para 0

1: faa F v_para 2
2: se T ento v_para 3 seno v_para 1

3: faa G v_para 4 4: se T ento v_para 1 seno v_para 0

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 73

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.2 Mquina de Registradores - Norma


A Mquina Universal Norma (Number TheOretic Register MAchine) possui como memria um conjunto infinito de registradores naturais e trs instrues sobre cada registrador: adio e subtrao do valor um e teste se o valor armazenado zero. Ndenota o conjunto de todas as uplas com infinitos (mas contveis) componentes sobre o conjunto dos nmeros naturais . Para evitar subscritos, as componentes das uplas so denotadas por letras maisculas como A, B, X, Y, ..., as quais denotam os registradores na Mquina Norma. Definio 3.1. Mquina Norma. A Mquina Norma uma sete-upla (suponha que K seja um registrador, K { A, B, X, Y,... }): Norma = (N, N, N, ent, sai, { adK, subK }, { zeroK }) a) Cada elemento do conjunto de valores de memria N denota uma configurao de seus infinitos registradores, os quais so denotados por: A, B, X, Y, ... b) A funo de entrada: ent: N N tal que carrega no registrador denotado por X o valor de entrada, inicializando todos os demais registradores com zero; c) A funo de sada: sai: N N tal que retorna o valor corrente do registrador denotado por Y; d) O conjunto de interpretaes de operaes uma famlia de operaes indexada pelos registradores, na qual, para cada registrador K { A, B, X, Y,... }, tem-se que: N adiciona um componente correspondente ao registrador K, adK: N
deixando as demais com seus valores inalterados. K:=K+1

subK: N N subtrai um da componente correspondente ao registrador K,

se o seu valor for maior que zero (caso contrrio, mantm o valor zero), deixando as demais com seus valores inalterados. K:=K-1

e) O conjunto de interpretaes de testes uma famlia de testes indexada pelos registradores na qual, para cada registrador K, tem-se que:

zeroK: N { verdadeiro, falso } resulta

em verdadeiro, se a componente correspondente ao registrador K for zero e em falso, caso contrrio. K=0?

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 74

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.3 Mquina Norma como Mquina Universal


uma mquina extremamente simples, de tal forma que parece difcil acreditar que o seu poder computacional , no mnimo, o de qualquer computador moderno. Caractersticas de mquinas reais so simuladas usando a Mquina Norma, reforando as evidncias de que se trata de uma mquina universal. As caractersticas so as seguintes: a) Operaes e Testes. Definio de operaes e testes mais complexos como adio, subtrao, multiplicao e diviso de dois valores e tratamento de valores diversos como os nmeros primos; b) Valores Numricos. Armazenamento de tratamento de valores numricos de diversos tipos como inteiros (negativos e nonegativos) e racionais; c) Dados Estruturados. Armazenamento de tratamento de dados estruturados como em arranjos (vetores uni e multidimensionais), pilhas, etc; d) Endereamento Indireto e recurso. Desvio para uma instruo determinada pelo contedo de um registrador; e) Cadeia de Caracteres. Definio e manipulao de cadeias de caracteres.

3.3.1 Operaes e Testes


EXEMPLO 3.3 Atribuio do Valor Zero a um Registrador A. Programa Iterativo A := 0: at A = 0 faa (A := A 1) pode-se tratar a operao A := 0 como uma macro, ou seja, um trecho de programa que substitudo pela sua definio sempre que referenciado. Usando a macro A := 0, fcil construir macros para definir operaes de atribuio de um valor qualquer. EXEMPLO 3.4 Atribuio de um Valor Natural a um Registrador.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 75

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

A macro de atribuio de um valor natural n a um registrador A, A := n, a generalizao do programa abaixo. Programa Iterativo n := 3: A := 0; A := A+1; A := A+1; A := A+1 EXEMPLO 3.5 Adio de Dois Registradores. A macro correspondente operao de adio do valor do registrador B ao do registrador A, denotada por: A : = A + B Programa Iterativo A : = A + B: at B = 0 faa (A := A + 1; B := B - 1)

Observe que, ao somar o valor de B em A, o registrador B zerado!

EXEMPLO 3.6 Adio de Dois Registradores, Preservando B A macro correspondente operao de adio do valor do registrador B ao do registrador A, preservando o valor em B, necessita usar um registrador auxiliar C Programa Iterativo A := A + B usando C C := 0; at B = 0 faa (A := A + 1; C := C + 1; B := B - 1); at C = 0 faa (B := B + 1; C := C - 1)
como este programa no preserva o contedo original do registrador de trabalho C, faz-se necessrio explicitar o uso deste registrador. necessrio escolher um registrador de trabalho C que no seja usado!

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 76

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 3. 7 Atribuio do Contedo de um Registrador. Programa Iterativo A := B usando C: A := 0; A := A + B usando C EXEMPLO 3.8 Multiplicao de Dois Registradores. A definio de uma macro de multiplicao requer dois registradores de trabalho. Programa Iterativo A := A B usando C, D: C := 0; at A = 0 faa (C := C + 1; A := A - 1); at C = 0 faa (A := A + B usando D; C := C - 1)
correspondente a uma macro cuja operao a multiplicao do valor do registrador B pelo valor do registrador A, usando dois registradores de trabalho C e D

EXEMPLO 3.9 Teste se o Valor do Registrador um Primo. Programa Iterativo teste_primo(A) usando C
(se A=0 ento falso seno C := A; C := C - 1; (se C=0 ento verdadeiro seno at teste_mod(A, C) faa (C := C 1) C := C - 1; (se C=0 ento verdadeiro seno falso) ) ) uma macro de teste que verifica se o valor de um registrador A um nmero primo, usando um registrador de trabalho C, retornando o valor verdadeiro, se o valor de A primo, e o valor falso, caso contrrio: teste_mod(A, C) um teste que retorna o valor verdadeiro, se o resto da diviso inteira do contedo de A por C zero, e o valor falso, caso contrrio.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 77

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 3.10 Atribuio do n-simo nmero primo ao registrador. Programa Iterativo A := primo(B) usando D A := 1; D := B; at D = 0 faa (D := D - 1; A := A + 1; at teste_primo(A) usando C faa (A := A + 1) ) a atribuio do n-simo nmero primo a um registrador A, usando um registrador de trabalho D,
usa a macro teste_primo construda acima (suponha que 1 o 0-simo nmero primo)

3.3.2 Valores Numricos Norma pode definir inteiros e racionais?


EXEMPLO 3.11 Inteiros. Um valor inteiro m pode ser representado como um par ordenado: (s, m) onde: m denota magnitude dada pelo valor absoluto de m; s denota o sinal de m: se m < 0, ento s = 1 (negativo) seno s = 0 (positivo) Como representar pares ordenados em Norma? usando codificao de n-uplas naturais como introduzido em 3.1; usando dois registradores, o primeiro referente ao sinal, e o segundo, magnitude.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 78

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Representao de Inteiros utilizando dois registradores

Supor que o registrador inteiro A representado pelo par (A1, A2) na representao conhecida como sinal-magnitude, ou seja, A1 (sinal) e A2 (magnitude ). necessrio desenvolver programas em Norma para executar as operaes inteiras A := A+1, A := A-1 e o teste A = 0?

Programa Iterativo A := A + 1: (se A1 = 0 ento A2 := A2 + 1 seno A2 := A2 - 1; (se A2 = 0 ento A1 := A1 1 seno ) )

EXERCCIOS:

Programa Iterativo A := A - 1:

( se A1 = 0 ento (se A2 = 0 ento A1:= A1 +1; A2 := A2 +1 seno A2:= A2 -1) seno A2:= A2 + 1) Programa Iterativo A = 0 ? ( se A2 = 0 ento verdadeiro seno falso )

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 79

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 3.12 Racionais. Um valor racional r pode ser denotado como um par ordenado: (a, b) tal que b > 0 e r = a/b. A representao no nica pois, por exemplo, o valor racional 0.75 pode ser representado pelos pares (3, 4) e (6, 8), entre outros (na realidade, os pares (3, 4) e (6, 8) pertencem mesma classe de equivalncia). Neste contexto, as operaes de adio, subtrao, multiplicao e diviso, bem como o teste de igualdade, podem ser definidos como segue:

(a, b) + (c, d) = (ad + bc, bd) (a, b) - (c, d) = (ad - bc, bd) (a, b) (c, d) = (ac, bd) (a, b) / (c, d) = (ad, bc) (com c 0) (a, b) = (c, d) se, e somente se, ad = bc que

EXERCCIO: Desenvolva os programas iterativos em Norma implementam as operaes entre nmeros racionais. 3.3.5 Cadeias de Caracteres

Cadeia de caracteres outro tipo de dado no pr-definido na Mquina Norma. O tratamento da definio e da manipulao de cadeias de caracteres ser realizado atravs de uma outra Mquina Universal, denominada Mquina de Turing, a qual prova-se, equivalente Norma.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 80

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.3.3 Dados Estruturados Arranjos podem ser definidos em Norma? E arranjos multidimensionais?
EXEMPLO 3.13 Arranjo Unidimensional. Uma estrutura do tipo arranjo unidimensional da forma A(1), A(2), , pode ser definida por um nico registrador A usando a codificao de n-uplas naturais. Note-se que o arranjo no necessita ter tamanho mximo predefinido (nmero de posies indexveis). Lembre-se de que a funo de entrada tal que carrega o valor da entrada no registrador X, zerando todos os demais, incluindo o arranjo. Em uma estrutura do tipo arranjo, desejvel indexar as suas posies de forma direta (nmero natural) ou indireta (contedo de um registrador). Para ambos os casos e para manter a coerncia com a definio da Mquina Norma, necessrio definir as operaes de adio e de subtrao do valor 1, bem como o teste se o valor zero.
o arranjo implementado usando o registrador A; pn denota o n-simo nmero primo; teste_div(A, C) um teste que retorna o valor verdadeiro, se a diviso inteira do contedo de A pelo contedo de C zero, e o valor falso, caso contrrio; A := A / C denotada uma macro de diviso de dois registradores; por simplicidade, na referncia a uma macro definida anteriormente, omitida a referncia aos registradores usados. Por exemplo: A:=AB usando C,D abreviada por A:= A B

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 81

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

a) Indexao Direta.
C := pn; A := A C Programa Iterativo adA(n) usando C

Programa Iterativo subA(n) usando C C := pn; (se teste_div(A, C) ento A := A / C seno ) Programa Iterativo zeroA(n) usando C C := pn; (se teste_div(A, C) ento falso seno verdadeiro)

b) Indexao Indireta.
Programa Iterativo adA(B) usando C C := primo(B) A := A C Programa Iterativo subA(B) usando C C := primo(B) (se teste_div(A, C) ento A := A / C seno ) Programa Iterativo zeroA(B) usando C C := primo(B) (se teste_div(A, B) ento falso seno verdadeiro)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 82

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Observao3.2:

Registradores.

Arranjo

Unidimensional

Norma

com

Usando a estrutura de arranjo unidimensional com indexao direta, podese mostrar que os registradores X e Y so suficientes para realizar qualquer processamento; De fato, suficiente usar X para armazenar um arranjo unidimensional onde cada posio corresponde a um registrador (por exemplo: X, Y, A, B, , correspondem s posies do arranjo indexadas por 0, 1, 2, 3, ). Assim, para um determinado registrador K, as operaes e testes de Norma: adK, subK e zeroK podem ser simulados pelas operaes e testes indexados introduzidos no Exemplo 3.13, ou seja, adX(k) usando Y, subX(k) usando Y e zeroX(k) usando Y onde X(k) denota a k-sima posio do arranjo em X.

EXEMPLO 3.14 Pilha. Estruturalmente, a principal caracterstica de uma pilha que o ltimo valor gravado o primeiro a ser lido.
empilha desempilha

topo sentido de crescimento base

A base de uma pilha fixa e define o seu incio. O topo varivel e define a posio do ltimo smbolo gravado. definem-se as operaes empilha (adiciona o contedo de um registrador no topo da pilha) e desempilha (retira o valor do topo e armazena em um registrador). Uma pilha pode facilmente ser simulada usando um arranjo e um registrador de ndice (indexao indireta do arranjo) que aponta para o topo da pilha.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 83

Figura 3.1 Estrutura do tipo pilha

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.3.4 Endereamento Indireto e Recurso

Como definir desvios, usando endereamento indireto (determinado pelo contedo de um registrador) em programas do tipo monoltico?

EXEMPLO 3.15 Endereamento Indireto em um Programa

Monoltico. Uma operao com endereamento indireto da seguinte forma, onde A um registrador: r: faa F v_para A pode ser definida pelo seguinte programa monoltico: r: faa F v_para End_A
partida

Programa Monoltico End_A


A:=A-1

f A=0

v 0

f A:=A-1 A=0

v A:=A+1

...
f A:=A-1 A=0 v A:=A+1

parada

onde a macro End_A, trata o endereamento indireto de A (cada circunferncia rotulada representa um desvio incondicional para a correspondente instruo). De forma anloga, possvel definir um teste com endereamento indireto como segue, onde A e B so registradores: r: se T ento v_para A seno v_para B
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 84

Figura 3.2 Fluxograma para tratar endereamento indireto

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.4 Mquina de Turing


proposta por Alan Turing em 1936; universalmente conhecida e aceita como formalizao de algoritmo; trata-se de um mecanismo simples que formaliza a idia de uma pessoa que realiza clculos; possui, no mnimo, o mesmo poder computacional de qualquer computador de propsito geral; no constitui uma mquina, como definida anteriormente, mas sim um programa para uma mquina universal.

3.4.1 Noo Intuitiva

O ponto de partida de Turing foi analisar a situao na qual uma pessoa, equipada com um instrumento de escrita e um apagador, realiza clculos em uma folha de papel organizada em quadrados. Inicialmente, a folha de papel contm somente os dados iniciais do problema. O trabalho da pessoa pode ser resumido em seqncias de operaes simples como segue: ler um smbolo de um quadrado; alterar um smbolo em um quadrado; mover os olhos para outro quadrado; quando encontrada alguma representao satisfatria para a resposta desejada, a pessoa termina seus clculos. Para viabilizar esse procedimento, as seguintes hipteses so aceitveis: a natureza bidimensional do papel no um requerimento essencial para os clculos. assumido que o papel consiste de uma fita infinita organizada em quadrados (clulas); conjunto de smbolos pode ser finito; conjunto de estados da mente da pessoa durante o processo de clculo finito. existem dois estados em particular: estado inicial e estado final, correspondendo ao incio e ao fim dos clculos, respectivamente; comportamento da pessoa a cada momento determinado somente pelo seu estado presente e pelo smbolo para o qual sua ateno est voltada; a pessoa capaz de observar e alterar o smbolo de apenas um quadrado de cada vez, bem como de transferir sua ateno somente para um dos quadrados adjacentes.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 85

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.4.2 Noo como Mquina


marcador de incio de fita fita cabea da fita controle a b entrada branco c unidade de controle a

...

Figura 3.3 Fita e unidade de controle de uma Mquina de Turing

Fita.

Usada simultaneamente como dispositivo de entrada, de sada e de memria de trabalho; finita esquerda e infinita (to grande quanto necessrio) direita, sendo dividida em clulas, cada uma das quais armazenando um smbolo. Os smbolos podem pertencer:
ao alfabeto de entrada, ao alfabeto auxiliar branco marcador de incio de fita

Inicialmente, a palavra a ser processada ocupa as clulas mais esquerda, aps o marcador de incio de fita, ficando as demais com branco.

Unidade de Controle

Reflete o estado corrente da mquina. Possui um nmero finito e predefinido de estados. Possui uma unidade de leitura e gravao (cabea da fita), a qual acessa uma clula da fita de cada vez. A cabea da fita l o smbolo de uma clula de cada vez e grava um novo smbolo. Aps a leitura/gravao (a gravao realizada na mesma clula de leitura), a cabea move-se uma clula para a direita ou esquerda. o programa comanda as leituras e gravaes, o sentido de movimento da cabea e define o estado da mquina. programa uma funo que, dependendo do estado corrente da mquina e do smbolo lido, determina o smbolo a ser gravado, o sentido do movimento da cabea e o novo estado.

Programa ou Funo de Transio.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 86

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.4.3 Modelo Formal


Definio 3.4 Mquina de Turing. Uma Mquina de Turing uma 8-upla: M =(,Q,,q0, F, V, , ) alfabeto de smbolos de entrada; Q conjunto de estados possveis da mquina, o qual finito; programa ou funo de transio: ( uma funo parcial) q0 F V estado inicial da mquina, tal que q0 elemento de Q; conjunto de estados finais, tal que F est contido em Q; alfabeto auxiliar ; smbolo especial branco; smbolo especial marcador de incio da fita.
: Q ( V { , }) Q ( V { , }) { E, D }

smbolo de incio de fita ocorre exatamente uma vez e sempre na clula mais esquerda da fita, auxiliando na identificao de que a cabea da fita se encontra na clula mais esquerda da fita. A funo programa considera: estado corrente p Q, smbolo lido da fita au ( V { , }) para determinar: novo estado q Q, smbolo a ser gravado av ( V { , }) sentido de movimento da cabea esquerda (E) e direita (D) m{E, D}

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 87

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

O programa pode ser representado como um grafo finito


(p, au) = (q, av, m)
p (au, av, m) q

estado corrente smbolo lido

novo estado sentido do movimento

smbolo gravado
Figura 3.4 Representao da funo programa como um grafo
q0 qf

Figura 3.5 Representao de um estado inicial (esq.) e final (dir.) como nodos de grafos

O programa pode ser representado por uma Tabela de Transies (p, au) = (q, av, m) au av p (q, av, m) q
Figura 3.6 Representao da Funo Programa como uma tabela

V, , ) para uma palavra de entrada w consiste na sucessiva aplicao da funo programa, a partir do estado inicial q0 e da cabea posicionada na clula mais esquerda da fita at ocorrer uma condio de parada. processamento de M para a entrada w pode parar ou ficar em loop infinito. A parada pode ser de duas maneiras: aceitando ou rejeitando a entrada w.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 88

O processamento de uma Mquina de Turing M=(,Q, , q0, F,

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

As condies de parada so as seguintes: Estado Final. A mquina assume um estado final: a mquina pra, e a palavra de entrada aceita; Funo Indefinida. A funo programa indefinida para o argumento (smbolo lido e estado corrente): a mquina pra, e a palavra de entrada rejeitada; Movimento Invlido. O argumento corrente da funo programa define um movimento esquerda e a cabea da fita j se encontra na clula mais esquerda: a mquina pra, e a palavra de entrada rejeitada. Observao 3.6: Variaes sobre a Definio de Mquina de Turing. Diversas variaes sobre a definio de Mquina de Turing so adotadas. Note-se que estas variaes no alteram o poder computacional do formalismo. As variaes mais significativas esto nas caractersticas da fita e no movimento da cabea como, por exemplo: Inexistncia do Marcador de Incio de Fita. freqente no incluir um marcador de incio de fita. Assim, a clula mais esquerda da fita contm o primeiro smbolo da entrada (ou branco, se a entrada for vazia). Neste caso, ao definir uma funo programa, deve-se tomar cuidado especial para controlar quando a cabea da fita atinge o fim da mesma; Cabea de Fita no se Move em uma Leitura/Gravao. Na funo programa, possvel especificar, adicionalmente ao movimento para esquerda ou direita, que a cabea permanea parada (na clula de leitura/gravao). O principal objetivo dessa variao facilitar a especificao da funo programa, bem como reduzir o nmero de transies necessrias.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 89

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.4.4 Mquinas de Turing como Reconhecedores de Linguagens


Uma das abordagens do estudo das Mquinas de Turing ou das Mquinas Universais em geral como reconhecedores de linguagens, ou seja, dispositivos capazes de determinar se uma dada palavra sobre o alfabeto de entrada pertence ou no a uma certa linguagem. Definio 3.7 Linguagem Aceita por uma Mquina de Turing. Seja M = (, Q, , q0, F, V, , ) uma Mquina de Turing. Ento: a) A linguagem aceita por M, denotada por ACEITA(M) ou L(M), o conjunto de todas as palavras pertencentes a * aceitas por M, ou seja: ACEITA(M)={wM ao processar w*, pra em um estado qfF} b) A linguagem rejeitada por M, denotada por REJEITA(M), o conjunto de todas as palavras de * rejeitadas por M, ou seja: REJEITA(M) = {wM ao processar w*, pra em um estado q F} c) A linguagem para a qual M fica em loop infinito, denotada por LOOP(M) conjunto de todas as palavras de * para as quais M fica processando indefinidamente.
ACEITA(M) REJEITA(M) = ACEITA(M) LOOP(M) = REJEITA(M) LOOP(M) = ACEITA(M) REJEITA(M) LOOP(M) = ACEITA(M) REJEITA(M) LOOP(M) = *

As seguintes afirmaes so verdadeiras:


*
ACEITA(M) REJEITA(M)

LOOP(M)

Conseqentemente, o complemento de:

ACEITA(M) REJEITA(M) LOOP(M) REJEITA(M) ACEITA(M) LOOP(M) LOOP(M) ACEITA(M) REJEITA(M)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 90

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 3.16 Mquina de Turing Duplo Balanceamento. Considere a linguagem: Duplo_Bal = { anbn n 0 } A Mquina de Turing: MT_Duplo_Bal=({a,b},{q0, q1, q2, q3, q4}, , q0, {q4}, {A,B}, , ) ACEITA(MT_Duplo_Bal) = Duplo_Bal REJEITA(MT_Duplo_Bal) = * - Duplo_Bal LOOP(MT_Duplo_Bal) =
(A, A, D) (a, A, D) (b, B, E)

q0

q1

q2

( , , D) (B, B, D) q3

(a, a, D) (B, B, D)

(a, a, E) (B, B, E)

(, , D)

(B, B, D)

(, , E)

q4

q0 q1 q2 q3 q4

(q0, , D)

a (q1, A, D) (q1, a, D) (q2, a, E)

b (q2, B, E)

(q0, A, D)

B (q3, B, D) (q1, B, D) (q2, B, E) (q3, B, D)

(q4, , D)

(q4, , E)

Figura 3.8 Grafo e tabela de transies da Mquina de Turing Duplo_Bal

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 91

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

programa reconhece o primeiro smbolo a, o qual marcado como A, e movimenta a cabea da fita para a direita, procurando o b correspondente, o qual marcado como B. Esse ciclo repetido sucessivamente at identificar, para cada a, o seu correspondente b. programa garante que qualquer outra palavra que no esteja na forma anbn rejeitada. Note que o smbolo de incio de fita no tem influncia na soluo. Seqncia do processamento da Mquina de Turing Duplo_Bal para a entrada w = aabb.
a q0 a b b

...

a q0

...

a q1

...

b q1

...

a q2

...

A q2

...

a q0

...

B q1

...

b q1

...

B q2

...

A q2

...

B q0

...

B q3

...

q3

...

B
q4

...

Figura 3.9 Computao de uma Mquina de Turing

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 92

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________ Critrio para o Reconhecimento de Linguagens. Se a mquina pra para toda palavra da linguagem sobre o alfabeto de entrada, ela reconhecida pela Mquina de Turing.

Definio 3.8 Linguagem Enumervel Recursivamente. Uma linguagem aceita por uma Mquina de Turing dita enumervel recursivamente.
Enumervel deriva do fato de que as palavras de qualquer linguagem enumervel recursivamente podem ser enumeradas ou listadas por uma Mquina de Turing. Recursivamente um termo matemtico, anterior ao computador, com significado similar ao de recurso, utilizado na computao.

A classe das linguagens Enumerveis Recursivamente inclui as linguagens livre do contexto e algumas outras linguagens para as quais no se pode, mecanicamente, determinar se uma dada palavra pertence ou no linguagem. Se L uma dessas linguagens, ento para qualquer mquina M que aceita a linguagem L, existe pelo menos uma palavra w, no pertencente a L, que, ao ser processada por M, resulta que a mquina entre em loop infinito. a) Se w pertence a L, M pra e aceita a entrada; b) Se w no pertence a L, M pode parar, rejeitando a palavra, ou permanecer processando indefinidamente (loop). EXEMPLO 3.17 Linguagem Enumervel Recursivamente.
As seguintes linguagens so exemplos de linguagens Enumerveis Recursivamente.

a) Duplo_Bal = { anbn / n 0} b) Triplo_Bal = { anbncn / n 0} c) Palavra_Palavra = { ww / w palavra sobre os smbolos a e b} d) { w / w tem o mesmo nmero de smbolos a que b} e) { ai bj ck / i=j ou j=k}

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 93

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Uma sub-classe da Classe das Linguagens Enumervel Recursivamente, denominada Classe das Linguagens Recursivas, composta pelas linguagens para as quais existe pelo menos uma Mquina de Turing que pra para qualquer entrada, aceitando ou rejeitando. Definio 3.9 Linguagem Recursiva. Uma linguagem dita recursiva se existe uma Mquina de Turing tal que:
ACEITA(M) = L REJEITA(M) = * - L. LOOP(M) =

Pode-se afirmar que a classe das Linguagens Recursivas representa todas as linguagens que podem ser reconhecidas mecanicamente. Existem conjuntos que no so Enumerveis Recursivamente, ou seja,
linguagens para as quais no possvel desenvolver uma MT que as reconhea. O cardinal do conjunto dessas linguagens que no so Enumerveis Recursivamente infinito.

EXEMPLO 3.18 Linguagem Recursiva So exemplos de linguagens recursivas: a) Duplo_Bal = { anbn / n 0} b) Triplo_Bal ={ anbncn / n 0} c) { w / w{a,b}* tem o dobro de smbolos a que b} Propriedades das linguagens recursivas: a) Se uma linguagem L sobre um alfabeto qualquer recursiva, ento seu complemento, ou seja, *-L, recursivo. b) Uma linguagem L sobre um alfabeto qualquer recursiva se, e somente se, L e seu complemento so enumerveis recursivamente. c) A Classe das Linguagens Recursivas est contida propriamente na Classe das Linguagens Enumerveis Recursivamente.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 94

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.4.5 Mquinas de Turing como Processadores de Funes


O estudo restrito s funes de mapeamento de palavras de um alfabeto em uma palavra do mesmo alfabeto. Definio 3.10 Funo Turing-Computvel. Uma funo parcial: f: (*)n * dita Funo Turing-Computvel ou simplesmente Funo Computvel se existe uma Mquina de Turing: M = ( { # }, Q, , q0, F, V, , ) que computa f, ou seja:
a) Para (w1, w2, , wn) (*)n, tem-se que a palavra de entrada para M : w1 w2 wn b) Se f definida para (w1, w2, , wn), ento o processamento de M para a entrada w1 w2 wn tal que: pra (aceitando ou rejeitando); o contedo da fita (excetuando-se os smbolos brancos): w c) Se f indefinida para (w1, w2, , wn), ento M, ao processar a entrada w1 w2 wn , fica em loop infinito.

Observao 3.11: Funo Turing-Computvel Condio de Parada. Na definio acima, considerado como resultado do processamento de M somente o contedo gravado na fita, sendo irrelevante o estado de parada da mquina. Portanto, relativamente a funo computvel, um processamento que pra em um estado no-final perfeitamente vlido. Definio 3.13 Funo Turing-Computvel Total. Uma funo total: f: (*)n * dita Funo Turing-Computvel Total ou simplesmente Funo Computvel Total se existe uma Mquina de Turing M = (, Q, , q0, F, V, , ) que computa f e sempre pra para qualquer entrada.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 95

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 3.19 Mquina de Turing Concatenao. A funo concatenao: ({ a, b }*)n { a, b }*


tal que associa ao par (w1, w2) a palavra w1w2. A Mquina de Turing: Conc = ({ a, b, # }, { q0, q1, q2, q3, q4 }, , q0, { q4 }, , , ) q0 q1 q2 q3 q4 (q0, , D) a (q0, a, D) (q2, , E) (q2, a, E) (q2, b, E) b (q0, b, D) (q3, , E) (q3, a, E) (q3, b, E) # (q0, #, D) (q4, , E) (q4, a, E) (q4, b, E) (q1, , E)

q0

(, , D) (a, a, D) (b, b, D) (#, #, D)

(, , E)

q1 (a, , E) (b, a, E) (a, a, E) q2 (a, b, E) (#, a, E) q4

(#, , E) (b, , E)

q3 (#, b, E)

(b, b, E)

Figura 3.10 Tabela de Transies e Grafo da Mquina de Turing - Concatenao

O programa recebe como entrada a palavra: w1 # w2.


posiciona a cabea no ltimo smbolo da palavra de entrada. move a cabea para a esquerda at encontrar o smbolo #, quando pra. Enquanto move a cabea, ao ler um smbolo, grava sobre este o smbolo lido anteriormente. A memorizao do smbolo anterior realizada pelos estados como segue: q2 memoriza que o smbolo anterior a; q3 memoriza que o smbolo anterior b.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 96

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 3.20 Mquina de Turing Funo Quadrado.

A funo quadrado: { 1 }* { 1 }* tal que associa o valor natural n, representado em unrio, ao valor n2 (tambm em unrio). A Mquina de Turing: Quadr = ({1}, { q0, q1, q2, ..., q13 }, , q0, { q13 }, { A, B, C}, , ) 1 (q1, A, D) (q1, 1, D) (q2, 1, E) A B (q0, B, D) (q1, B, D) (q2, B, E) (q4, , E) (q4, B, E) (q6, C, E) C (q3, , E) (q2, B, E)

q0 q1 q2 q3 q4 q5 q6 q7 q8 q9 q10 q11 q12 q13

(q0, , D)

(q13, , D)

(q0, A, D) (q5, A, D) (q6, 1, E)

(q7, , D)

(q13, , D)

(q8, A, D) (q9, A, D) (q9, 1, D) (q10, 1, E) (q12, 1, E)

(q6, C, E) (q11, C, D) (q9, C, D) (q10, C, E) (q11, C, D) (q12, 1, E)

(q12, , E)

(q8, A, D) (q12, 1, E)

(q9, B, D) (q10, B, E) (q6, C, E)

(q10, 1, E)

O programa recebe como entrada a palavra: n1 , onde n1 denota o valor n representado em unrio sobre { 1 }. (n1)2 simplesmente n1 concatenado consigo mesmo n vezes, ou seja: (n vezes) (n )2 = n n .... n A concatenao obtida por: Em q0, q1 e q2, gerado nA nB (nA e nB so em unrio sobre {A} e {B}); Em q0, q3 e q4, retirado um smbolo B de nB, resultando em nA (n-1)B Em q5 at q11, a subpalavra (n-1)B usada para controlar concatenaes sucessivas, resultando em nA (n-1)C (n-1)1 (n-1)1 ... (n-1)1, onde (n-1)1 repetida n-1 vezes Em q12, as subpalavras nA(n-1)C so substitudas por n1(n-1)1, resultando em n1 (n-1)1 (n-1)1 (n-1)1 ... (n-1)1 onde (n-1)1 repetida n vezes ou seja, o comprimento da palavra resultante :
1 1 1 1

n + (n-1) * n = n + (n2 - n) = n2
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 97

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

(, , D) (B, B, D) (1, A, D)

(1, 1, D) (B, B, D) (, B, E)

(1, 1, E) (B, B, E)

q0

q1 (A, A, D)

q2

(, , E)

(, , D) q3

(B, , E) (C, C, D) (B, B, D) (1, 1, D)

(B, B, E)

q4 q7

(A, A, D)

(A, 1, E) (C, C, E) (, , D) q6

(1, A, D)

q9 (, 1, E) (1, A, D)

q5

(B, C, E)

(C, C, D)

q8

(, , E) (B, C, E) q11 (A, 1, E) (C, 1, E) q12 (1, 1, E) (, , D) (A, A, D) q10

(C, C, D)

(C, C, E) (B, B, E) (1, 1, E)

q13

Figura 3.12 Grafo da Mquina de Turing Funo Quadrado

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 98

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.4.6 Equivalncia entre as Mquinas de Turing e Norma


Prova-se que a Mquina de Turing equivalente Mquina Norma. Reforam-se as evidncias de que ambas so Mquinas Universais Resumidamente, a prova como segue: a) Turing Norma. A estrutura de fita da Mquina de Turing simulada em Norma usando uma estrutura de arranjo unidimensional; b) Norma Turing. Conforme observado anteriormente os registradores X e Y so suficientes para realizar qualquer processamento em Norma. A Mquina de Turing pode simular os dois registradores X e Y como segue: O contedo de cada registrador (valor natural) implementado de forma unria em Turing; O registrador X ocupa as clulas mpares da fita, e Y, as pares. Lembre-se de que, no conceito de simulao, necessrio considerar funes de codificao e decodificao para permitir comparar mquinas com diferentes conjuntos de entrada e sada.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 99

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Teorema 3.15 Mquina de Turing Mquina Norma. O formalismo Mquina de Turing pode ser simulado pelo formalismo Mquina Norma.
Prova:

Suponha uma Mquina de Turing M = (, Q, , q0, F, V, , ). Ento, a simulao de M por um programa P em Norma pode ser definida como segue: Fita A fita codificada como um arranjo unidimensional em X, sendo que cada clula da fita corresponde a uma posio do arranjo. O smbolo de cada clula codificado como um nmero natural como segue: para um alfabeto = {a1, a2, , an}, o smbolo ai codificado como o natural i, e os smbolos especiais e como zero e n+1, respectivamente. Estados
Para os estados de Q ={q0, q1,, qn} em M, o programa P possui correspondentes instrues rotuladas por 0, 1, , n; O rtulo inicial de P 0 (pois q0 o estado inicial de M), e, para qualquer qf F, f rtulo final;

Estado Corrente Cabea da Fita

O estado corrente de M simulado em Norma usando o registrador Q, o qual assume valores em { 0, 1, , n } (correspondendo aos estados q0, q1, , qn); A posio corrente da cabea da fita de M simulada usando o registrador C de Norma, o qual contm a posio corrente do arranjo em X e inicializado com o valor 1;

Funo Programa A funo programa de M pode ser simulada por um programa P de


Norma Uma transio de M da forma: (qu, ar) = (qv, as, m) onde m assume valores em { E, D } (esquerda e direita) simulada pelo trecho de programa:

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 100

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

u: faa A := 2Q 3X(C) v_para End_A a: faa X(C) := s v_para a1 grava na fita a1: faa adC v_para a2 move a cabea a2: faa Q := v v_para End_Q novo estado
Observe que: 1) No programa, suposto que o movimento da cabea da fita para a direita, e, portanto adicionado 1 ao registrador C; caso o movimento seja para a esquerda, necessrio subtrair 1; 2) A transio depende do estado corrente qu e do smbolo lido ar. Assim, na instruo rotulada por u, especificado um desvio incondicional para uma instruo rotulada pelo par (u, r), usando a codificao de n-uplas; As macros End_A e End_Q referem-se ao endereamento indireto definido anteriormente. O contedo do registrador A denotado por a.

3)

Rtulo final
A cada rtulo final f corresponde o seguinte trecho de programa em P, o qual especifica que o contedo de X ("fita") atribudo a Y (pois em Norma a funo de sada retorna o valor do registrador Y):

f: faa Y := X v_para fim fim: Decodificao. o inverso da codificao acima.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 101

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Teorema 3.16 Mquina Norma Mquina de Turing


O formalismo Mquina de Norma pode ser simulado pelo formalismo Mquina Turing.

Prova: Seja o programa monoltico P de Norma, com somente dois registradores X e Y A simulao do programa P de Norma por uma Mquina de Turing M = (, Q, , q0, F, V, , ) onde o alfabeto o conjunto unrio { 1 } pode ser definida como segue: Registrador X contedo inicial do registrador X codificado em unrio na clulas pares da fita de M. se o natural em X x, ento x clulas pares da fita possuem o smbolo 1. Registrador Y
Analogamente ao registrador X, o registrador Y armazenado na fita em unrio, mas nas clulas mpares (excetuando-se a primeira, que contm o marcador de incio de fita );

Rtulos
A cada rtulo r de instruo de P corresponde um estado qr de M. Aos rtulos inicial e finais correspondem os estados inicial e finais, respectivamente; Programa - Uma instruo rotulada de P da seguinte forma

ADIO

r:

faa adK v_para s

pode ser simulada por um trecho da funo programa de M resumido: 1) No estado qr, move a cabea, pesquisando as clulas pares (caso K = X) ou mpares (caso K = Y) at encontrar o primeiro branco, o qual substitudo pelo smbolo 1; 2) Reposiciona a cabea no incio da fita e assume o estado qs;

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 102

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

SUBTRAO

r:

faa subK v_para s

pode ser simulada por um trecho da funo programa de M resumido 1) No estado qr, move a cabea, pesquisando as clulas pares (caso K = X) ou mpares (caso K = Y) at encontrar o ltimo smbolo 1, o qual substitudo por um branco. Caso a primeira clula pesquisada j contenha o smbolo branco, nada substitudo; 2) Reposiciona a cabea no incio da fita e assume o estado qs

TESTE

r:

se zeroK v_para s seno v_para t

pode ser simulada por um trecho da funo programa de M resumido como segue: 1) No estado qr, move a cabea, pesquisando a primeira clula par (caso K = X) ou mpar (caso K = Y); 2) Caso a clula pesquisada contenha o smbolo branco, reposiciona a cabea no incio da fita e assume o estado qs; caso contrrio, reposiciona a cabea no incio da fita e assume o estado qt.

Codificao. contedo inicial do registrador X codificado em unrio nas clulas pares da fita de M; Decodificao. o inverso da codificao acima.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 103

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.5 Outros Modelos de Mquinas Universais


Mquina de Post.
A principal caracterstica da Mquina de Post que usa uma estrutura de dados do tipo fila para entrada, sada e memria de trabalho. Estruturalmente, a principal caracterstica de uma fila que o primeiro valor gravado tambm o primeiro a ser lido (uma leitura exclui o dado lido).
leitura de dados dados armazenados gravao de dados

incio da fila

fim da fila

Figura 3.13 Estrutura do tipo fila

Mquina com Duas Pilhas. A principal caracterstica da Mquina de Duas Pilhas que usa estrutura do tipo pilha como memria de trabalho. So necessrias duas pilhas para que a Mquina seja, de fato, Universal.
empilha desempilha

topo sentido de crescimento base

3.5.1 Mquina de Post Uma Mquina de Post consiste de duas partes:


____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 104

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Varivel X. Trata-se de uma varivel do tipo fila e utilizada como entrada, sada e memria de trabalho. A varivel X no possui tamanho nem limite fixos. Seu comprimento igual ao comprimento da palavra corrente armazenada. Os smbolos podem pertencer ao alfabeto de entrada ou a { # }, nico smbolo auxiliar. Inicialmente, o valor de X a palavra de entrada. Caso X no contenha smbolos, a entrada vazia, representada por . Programa. uma seqncia finita de instrues, representado como um diagrama de fluxos (espcie de fluxograma), no qual cada vrtice uma instruo. As instrues podem ser de quatro tipos: partida, parada, desvio (leitura com teste) e atribuio. Definio 3.17 Mquina de Post. Uma Mquina de Post uma tripla: M = (, D, #) onde: alfabeto de smbolos de entrada; D programa ou diagrama de fluxos construdo a partir de componentes elementares denominados partida, parada, desvio e atribuio; # smbolo auxiliar.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 105

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Componentes elementares de um diagrama de fluxos


a) Partida. Existe somente uma instruo de incio em um programa b) Parada. Existem duas alternativas de instrues de parada em um programa, uma de aceitao e outra de rejeio:

partida

aceita

rejeita

c) Desvio (ou leitura com teste). X ler (X) denota o comando que l o smbolo mais esquerda da palavra armazenada em X, retirando o primeiro smbolo. uma instruo composta de uma leitura do smbolo esquerda (incio da fila), excluindo-o da fila e desviando o fluxo do programa de acordo com o smbolo lido; fluxo do programa determinado de acordo com o smbolo mais esquerda da palavra. deve ser prevista a possibilidade de X conter a palavra vazia. Portanto, um desvio condicional, e trata-se de uma funo total, estando definida para todos os valores do domnio. Se o cardinal de n, ento existem n+2 arestas de desvios condicionais, pois se deve incluir as possibilidades # e ,
XLer (X)

a1

a2

...

an

d) Atribuio. XXs

uma instruo de concatenao, gravando o smbolo indicado (pertencente a { # }) direita da palavra armazenada na varivel X (fim da fila). A operao de atribuio representada a seguir, supondo que s { # }.

X Xs

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 106

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 3.21 Mquina de Post Duplo Balanceamento.


Considere a seguinte linguagem Duplo_Bal = { anbn n 0 } A Mquina de Post: Post_Duplo_Bal = ({ a, b }, D, #) onde D , como ilustrado abaixo, tal que: ACEITA(Post_Duplo_Bal) = Duplo_Bal REJEITA(Post_Duplo_Bal) = * - Duplo_Bal LOOP(Post_Duplo_Bal) = .
partida

X X#

X ler

(X)

a
X ler (X)

b,
rejeita

#
aceita

a
X Xa

#,
rejeita

X ler

(X)

b
X Xb

#
X X#

a,
rejeita

algoritmo l e remove o primeiro smbolo a; realiza uma varredura circular em busca do correspondente b. Essa varredura realizada atravs de sucessivas leituras (e remoes), armazenando o smbolo lido direita de X. Ao encontrar o b, este removido, e uma nova varredura circular realizada at o fim da palavra de entrada (identificado pelo smbolo auxiliar #, atribudo a X no incio do processamento). Este ciclo repetido at restar a palavra vazia ou ocorrer alguma condio de rejeio.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 107

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Teorema 3.18 Mquina de Turing Mquina de Post.


O formalismo Mquina de Turing pode ser simulado pelo formalismo Mquina de Post.

Prova: Seja a Mquina de Turing M = (, Q, , q0, F, V, , ). A simulao por uma Mquina de Post M =( V ,D, #)
pode ser definida como segue:

a) Fita.
A fita simulada pela varivel X, e a posio corrente da cabea da fita representada pela primeira posio da fila (ou varivel); o smbolo especial # introduzido para indicar na varivel X o que estava esquerda da cabea da fita, a partir do incio da fita;
a1 a2 a3 a4

...

an

...

controle

X = a3 a4 ... an # a1 a2

b) Movimento para a Esquerda.


antes a1 a2 a3 a4

...

an

...

controle a1 a2 A3 a4

depois

...

an

...

controle

Se o contedo da varivel X antes do movimento o seguinte: X= a3 a4 ... an # a1 a2 Simular o movimento para a esquerda da cabea e a substituio do smbolo a3 por A3, necessrio alterar o contedo de X como segue: X = a2 A3 a4 ... an # a1 Para tal so necessrios tantos testes (desvios) e atribuies quantos forem os smbolos da palavra corrente.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 108

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

c) Movimento para a Direita.


antes a1 a2 a3 a4

...

an

...

controle a1 A2 a3 a4

depois

...

an

...

controle

contedo da varivel X antes do movimento


X = a2 a3 a4 ... an # a1

Para simular o movimento para a direita da cabea necessrio alterar o contedo de X como segue, o que trivial:
X = a3 a4 ... an # a1 A2

d) Estados. A simulao dos estados como segue: Estado Inicial. Simulado pela instruo partida; Estados Finais. Simulados pela instruo aceita; Demais Estados. Cada estado corresponde a uma instruo desvio (leitura com teste); e) Condies de Rejeio. As condies de rejeio da Mquina de Turing (funo programa indefinida ou movimento invlido) so simuladas em Post por rejeita.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 109

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Teorema 3.19 Mquina de Post Mquina de Turing O formalismo Mquina de Post pode ser simulado pelo formalismo Mquina de Turing. Prova: Suponha uma Mquina de Post M = (, D, #). A simulao de M por uma Mquina de Turing M = (, Q, , q0, F, { # }, , ) pode ser definida por: a) Varivel X. A varivel X simulada pela fita, e a posio mais esquerda da fila representada pela posio da cabea da fita. Para X = a1 a2 a3 ... am #am+1 ... an
a1 a2 a3

...

am

am+1

...

an

...

controle

b) Desvio. X ler(X). Se o contedo da varivel X : X = a1 a2 a3 ... am #am+1 ... an A leitura e remoo do smbolo mais esquerda resulta em: X = a2 a3 ... am #am+1 ... an Isso pode ser simulado pela alterao da fita e cabea da fita
a1 a2 a3

...

am antes

am+1

...

an

...

controle a2 a3

...

am

am+1

...

an

...

depois controle

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 110

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

c) Atribuio. XXs. A concatenao de um smbolo s deve sempre ser direita do contedo da varivel X (ou seja, no fim da fila). Para o contedo de X X = a1 ... am #am+1 ... an resulta em X = a1 ... am #am+1 ... ans o que pode ser simulado pela Mquina de Turing: Move-se a cabea para o fim da fita, grava-se o smbolo s e retorna-se para a posio correspondente ao primeiro smbolo da fila.
antes a1

...

am

am+1

...

an

...

controle a1

depois

...

am

am+1

...

an

...

controle

d) Partida. A instruo partida pode ser simulada em uma Mquina de Turing usando o estado inicial e) Aceita. Uma instruo aceita pode ser simulada em uma Mquina de Turing usando um estado final f) Rejeita. Uma instruo rejeita pode ser simulada em uma Mquina de Turing usando uma condio excepcional de parada (como um movimento invlido).
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 111

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.5.2 Mquina com Pilhas


Definio 3.20 Mquina com Pilhas. Uma Mquina com Pilhas uma dupla: M = (, D) onde: alfabeto de smbolos de entrada; D programa ou diagrama de fluxos construdo a partir de componentes elementares denominados partida, parada, desvio, empilha e desempilha. Uma Mquina com Pilhas consiste, basicamente, de trs partes: a) Varivel X. De entrada, similar da Mquina de Post, mas usada somente para entrada; b) Variveis Yi. Do tipo pilha, utilizadas como memria de trabalho; c) Programa. uma seqncia finita de instrues, representado como um diagrama de fluxos onde cada vrtice uma instruo. As instrues podem ser de cinco tipos: partida, parada, desvio, desempilha e empilha. A varivel X no possui tamanho nem limite fixos. Os smbolos pertencem ao alfabeto de entrada. Inicialmente, o valor de X a palavra de entrada, e seu comprimento igual ao comprimento da palavra corrente armazenada. Caso X no contenha smbolos, a entrada vazia, representada por . As variveis Yi, em nmero varivel mas finito, tambm no possuem tamanho nem limite fixos, e os smbolos pertencem ao alfabeto de entrada. Inicialmente, o valor de cada pilha Yi a palavra vazia, e seu comprimento igual ao comprimento da palavra corrente armazenada.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 112

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

As componentes elementares de um diagrama de fluxos so: a) Partida. Existe somente uma instruo de incio (partida) em um programa. b) Parada. Existem duas alternativas de instrues de parada em um programa: uma de aceitao (aceita), e outra de rejeio (rejeita).

partida

aceita

rejeita

c) Desvio (ou Teste) e Desempilha. Determinam o fluxo do programa

de acordo com o smbolo mais esquerda da palavra armazenada na varivel X (desvio) ou no topo da pilha Yi (desempilha). So desvios condicionais. Se o cardinal de n, ento existem n+1 arestas de desvios condicionais, pois se deve incluir a possibilidade da palavra vazia . X ler(X) denota uma leitura destrutiva, que l o smbolo mais esquerda de X ou do topo de Yi, retirando o smbolo lido.
X ler(X) Yi ler(Yi)

a1

a2

...

an

a1

a2

...

an

d) Empilha. Empilha um smbolo s no topo da pilha indicada, ou seja, concatena o smbolo na extremidade da palavra armazenada na varivel Yi.
Yi sYi

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 113

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

em um diagrama de fluxos, existe somente uma instruo de partida, mas podem existir diversas (zero ou mais) instrues de parada, tanto de aceitao como de rejeio; uma palavra de entrada aceita ou rejeitada, se a computao, iniciada com a varivel X contendo a entrada, atingir uma instruo aceita ou rejeita, respectivamente; em um desvio (respectivamente, desempilha), se X (respectivamente, Yi) contm a palavra vazia , ento segue o fluxo correspondente; caso contrrio, l o smbolo mais esquerda de X (respectivamente, no topo de Yi) e o remove aps a deciso de qual aresta do fluxo indica a prxima instruo.

As seguintes concluses podem ser estabelecidas sobre o nmero de pilhas e o poder computacional das mquinas com pilhas:
a) Mquina Finita. Uma Mquina Finita, que corresponde a uma Mquina Sem Pilhas, possui um poder computacional relativamente restrito, pois no tem memria auxiliar para armazenar informaes de trabalho. Por exemplo, no existe Mquina Sem Pilha capaz de reconhecer um duplo balanceamento como em { anbn n 0 }. b) Mquina com Uma Pilha. A Classe das Mquinas com Uma Pilha, embora mais poderosa que a Classe das Mquinas Finitas, ainda possui uma capacidade computacional restrita. Por exemplo, no existe Mquina com Uma Pilha capaz de reconhecer um triplo balanceamento como em { anbncn n 0 } . c) Mquina com Duas Pilhas. Conforme ser verificado adiante, a Classe das Mquinas com Duas Pilhas possui o mesmo poder computacional que a Classe das Mquinas de Turing ou de Post; d) Mquina com Mais de Duas Pilhas. A Classe das Mquinas com Mais de Duas Pilhas possui o mesmo poder computacional que a Classe das Mquinas com Duas Pilhas. Ou seja, para qualquer mquina com mais de duas pilhas, possvel construir uma equivalente com, no mximo, duas pilhas que realiza o mesmo processamento.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 114

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 3.22 Mquina com Pilhas Duplo Balanceamento. Considere a seguinte linguagem Duplo_Bal = { anbn n 0 } A Mquina com Pilhas: Pilhas_Duplo_Bal = ({ a, b }, D) onde D tal que: ACEITA(Pilhas_Duplo_Bal) = Duplo_Bal REJEITA(Pilhas_Duplo_Bal) = * - Duplo_Bal LOOP(Pilhas_Duplo_Bal) =
partida

X ler(X) b Y ler(Y) a

Y aY

b,

rejeita

X ler(X) Y ler(Y) aceita

rejeita

a,b

rejeita

Figura 3.27 Diagrama de Fluxo da Mquina com Pilhas Duplo Balanceamento

O algoritmo l o prefixo de smbolos a e empilha na nica pilha utilizada Y. Aps, para cada smbolo b em X deve existir um correspondente a em Y.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 115

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 3.23 Mquina com Pilhas Triplo Balanceamento. Considere a seguinte linguagem Triplo_Bal = { anbncn n 0 } A Mquina com Pilhas: Pilhas_Triplo_Bal = ({ a, b, c }, D) onde D tal que:
ACEITA(Pilhas_Triplo_Bal) = Triplo_Bal REJEITA(Pilhas_Triplo_Bal) = * - Triplo_Bal LOOP(Pilhas_Triplo_Bal) =
partida

Y1 aY1 rejeita a,b,c

X ler(X)

rejeita b

Y1 ler(Y1) aceita

Y1 ler(Y1) a Y2 bY2

b,c,

rejeita

X ler(X) c Y1 ler(Y1)

a,

rejeita

a,b,c

rejeita

Y2 ler(Y2) a,c, b c X ler(X) Y2 ler(Y2) a,b,c aceita a,b

rejeita

rejeita

rejeita

Note-se que foram usadas duas pilhas. O algoritmo l o prefixo de smbolos a e empilha-os em Y1. Aps, para cada smbolo b em X, deve existir um correspondente a em Y1. Adicionalmente, empilha a subpalavra de smbolos b em Y2. Por fim, para cada c em X, deve existir um correspondente b em Y2.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 116

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 3.24 Mquina com Pilhas Prefixo. Considere a seguinte linguagem:


Prefixo_aaa={ww{a,b}* e w contm a subpalavra aaa como prefixo}

Pilhas_Prefixo_aaa = ({ a, b }, D) onde D tal que: ACEITA(Pilhas_Prefixo_aaa ) = Prefixo_aaa REJEITA(Pilhas_Prefixo_aaa ) = * - Prefixo_aaa LOOP(Pilhas_Prefixo_aaa ) =


partida

X ler(X) a X ler(X) a X ler(X) a a,b X ler(X) aceita

b,

rejeita

b,

rejeita

b,

rejeita

Figura 3.29 Diagrama de Fluxo da Mquina com Pilhas Prefixo

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 117

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.5.3 Autmato com Duas Pilhas

Autmato com Duas Pilhas ou simplesmente Autmato com Pilhas possui a memria de entrada separada das memrias de trabalho e de sada. Essas estruturas auxiliares so do tipo pilha, e cada mquina possui duas pilhas.

Um Autmato com Pilhas composto por: a) Fita. Dispositivo de entrada que contm a informao a ser processada; b) Duas Pilhas. Memrias auxiliares que podem ser usadas livremente para leitura e gravao; Uma pilha dividida em clulas, armazenando, cada uma, um smbolo do alfabeto auxiliar (pode ser igual ao alfabeto de entrada). Em uma estrutura do tipo pilha, a leitura ou gravao sempre na mesma extremidade (topo). No possui tamanho fixo e nem mximo, sendo seu tamanho corrente igual ao tamanho da palavra armazenada. Seu valor inicial vazio. c) Unidade de Controle. Reflete o estado corrente da mquina. Possui uma cabea de fita e uma cabea para cada pilha; A unidade de controle possui um nmero finito e predefinido de estados. Possui uma cabea de fita e uma cabea para cada pilha: Cabea da Fita. Unidade de leitura que acessa uma clula da fita de cada vez e movimenta-se exclusivamente para a direita. Cabea da Pilha. Unidade de leitura e gravao para cada pilha que move para cima ao gravar e para baixo ao ler um smbolo. Acessa um smbolo de cada vez, estando sempre posicionada no topo. A leitura exclui o smbolo lido. d) Programa ou Funo de Transio. Comanda a leitura da fita, a leitura e gravao das pilhas e define o estado da mquina. programa uma funo parcial que, dependendo do estado corrente, smbolo lido da fita e do smbolo lido de cada pilha, determina o novo estado e o smbolo a ser gravado em cada pilha. Definio 3.21 Autmato com Duas Pilhas. Um Autmato com Duas Pilhas ou simplesmente Autmato com Pilhas M uma 6-upla:
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 118

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

onde: alfabeto de smbolos de entrada; Q conjunto de estados possveis do autmato, o qual finito; funo programa ou de funo de transio:
:Q ( { ,? }) (V { ,? }) (V { ,? }) Q (V { }) (V { })

M = (, Q, , q0, F, V)

a qual uma funo parcial; q0 estado inicial do autmato, tal que q0 elemento de Q; F conjunto de estados finais, tal que F est contido em Q; V alfabeto auxiliar. As seguintes caractersticas da funo programa devem ser consideradas: a funo pode no ser total, ou seja, pode ser indefinida para alguns argumentos do conjunto de partida; a omisso do parmetro de leitura, representada por "?", indica o teste da correspondente pilha vazia ou de toda a palavra de entrada lida; o smbolo na leitura da fita ou de alguma pilha indica que o autmato no l nem move a cabea. Note-se que, pelo menos uma leitura deve ser realizada ou sobre a fita ou sobre alguma pilha; o smbolo na gravao indica que nenhuma gravao realizada na pilha (e no move a cabea). Funo programa considera:
estado corrente; smbolo lido da fita (pode ser omitido) ou teste se toda a palavra de entrada foi lida; smbolo lido de cada pilha (pode ser omitido) ou teste de pilha vazia;

determina
novo estado; smbolo gravado em cada pilha (pode ser omitido).

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 119

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

(p, ?, a, ) = { (q, , b) } indica que se:


no estado p; a entrada foi completamente lida (na fita); o topo da pilha 1 contm o smbolo a;
no l da pilha 2;
smbolo lido da fita

assume o estado q; no grava na pilha 1; grava o smbolo b no topo da pilha 2.

(x, a1, b1, a2, b2)

estado corrente smbolo lido da pilha 1 smbolo gravado na pilha 1

novo estado smbolo gravado na pilha 2 smbolo lido da pilha 2

Figura 3.30 Representao da funo programa como um grafo

processamento de um Autmato com Pilhas, para uma palavra de entrada w, consiste na sucessiva aplicao da funo programa para cada smbolo de w (da esquerda para a direita) at ocorrer uma condio de parada. Um exemplo simples de ciclo infinito um programa que empilha e desempilha um mesmo smbolo indefinidamente, sem ler da fita. As condies de parada so as seguintes: Estado Final. O autmato assume um estado final: o autmato pra, e a palavra de entrada aceita; Funo Indefinida. A funo programa indefinida para o argumento: o autmato pra, e a palavra de entrada rejeitada.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 120

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 3.25 Autmato com Pilhas Duplo Balanceamento. Considere a linguagem Duplo_Bal = { anbn n 0 } O Autmato com Pilhas A2P_Duplo_Bal = ({ a, b }, { q0, q1, qf }, , q0, { qf }, { B }) onde tal que (q0, a, , ) = (q0, B, ) (q0, b, B, ) = (q1, , ) (q0, ?, ?, ?) = (qf, , ) (q1, b, B, ) = (q1, , ) (q1, ?, ?, ?) = (qf, , ) ACEITA(A2P_Duplo_Bal) = Duplo_Bal autmato pode ser representado por um grafo. No estado q0, para cada smbolo a lido da fita, armazenado um smbolo B na pilha 1. No estado q1, realizado um batimento, verificando se, para cada smbolo b da fita, existe um correspondente B na pilha 1. O algoritmo somente aceita se, ao terminar de ler toda a palavra de entrada, as pilhas estiverem vazias.

(a, , B, , )

q0

(b, B, , , )

q1

(b, B, , , )

(?, ?, , ?, ) qf

(?, ?, , ?, )

Figura 3.31 Grafo do Autmato com Pilhas - Duplo Balanceamento

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 121

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

EXEMPLO 3.26 Autmato com Pilhas Triplo Balanceamento. Considere a linguagem:


Triplo_Bal = { anbncn n 0 }

O Autmato com Pilhas


A2P_Triplo_Bal = ({ a, b }, { q0, q1, q2, qf }, , q0, { qf }, { B, C })

tal que ACEITA(A2P_Triplo_Bal) = Triplo_Bal (e sempre pra).


(a, , B, , ) (b, B, , , C) (b, B, , , C) (c, , ?, C, ) (c, , ?, C, )

q0

q1

q2

(?, ?, , ?, ) qf

(?, ?, , ?, )

Figura 3.32 Grafo do Autmato com Pilhas - Triplo Balanceamento

No estado q0, para cada smbolo a lido da fita, armazenado um smbolo B na pilha 1. No estado q1, realizado um batimento, verificando se, para cada smbolo b da fita, existe um correspondente B na pilha 1, bem como armazenado na pilha 2 um smbolo C. Por fim, no estado q2, realizado um batimento, verificando se, para cada smbolo c da fita, existe um correspondente C na pilha 2. O algoritmo somente aceita se, ao terminar de ler toda a palavra de entrada, as pilhas estiverem vazias.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 122

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

A Classe dos Autmatos com Duas Pilhas equivalente Classe das Mquinas de Turing,
a) Mquina de Turing Autmato com Duas Pilhas. A estrutura de fita da Mquina de Turing simulada usando as duas pilhas como segue: a pilha 1 simula o contedo da fita esquerda da cabea da fita, e a pilha 2, o contedo direita; b) Autmato com Duas Pilhas Mquina de Turing . A fita e as duas pilhas do Autmato com Duas Pilhas so simulada usando a fita da Mquina de Turing, como segue: a palavra de entrada corresponde s primeiras posies da fita da Mquina de Turing; a pilha 1 corresponde as clulas mpares da fita, aps a palavra de entrada; analogamente, a pilha 2 corresponde s clulas pares da fita, aps a palavra de entrada. Teorema 3.22 Mquina de Turing Autmato com Duas Pilhas.

O formalismo Mquina de Turing pode ser simulado pelo formalismo Autmato com Duas Pilhas e vice-versa.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 123

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.6 Modificaes sobre as Mquinas Universais


Mquinas Universais so equivalentes s diversas verses modificadas do modelo bsico, com caractersticas que supostamente aumentariam o poder computacional.

3.6.1 No-Determinismo
no-determinismo uma importante generalizao dos modelos de mquinas. No caso da Mquina de Turing, para o mesmo estado corrente e smbolo lido, diversas alternativas so possveis. Cada alternativa percorrida de forma totalmente independente. Isso significa que as alteraes de contedo na fita realizadas em um caminho no modificam o contedo da mesma nos demais caminhos alternativos. A mesma idia vlida para a varivel X da Mquina de Post ou para as pilhas do Autmato com Pilhas. Genericamente, no-determinismo interpretado como:
a mquina, ao processar uma entrada, tem como resultado um conjunto de novos estados. ela assume um conjunto de estados alternativos, como se houvesse uma multiplicao da unidade de controle, uma para cada alternativa, processando independentemente, sem compartilhar recursos com as demais. processamento de um caminho no influi no estado geral, nem no smbolo lido dos demais caminhos alternativos.

Para uma mquina M no-determinstica, uma palavra w pertence a: ACEITA(M) se existe pelo menos um caminho alternativo que aceita a palavra. REJEITA(M) se todas as alternativas rejeitam a entrada. LOOP(M) se nenhum caminho aceita a palavra e pelo menos um fica em loop.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 124

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

EXEMPLO 3.27 Autmato com Pilhas No-Determinstico Palavra & Reversa Considere a seguinte linguagem: Palavra_Reversa = { wwr w pertence a { a, b }* } A linguagem Palavra_Reversa contm todas as palavras sobre o alfabeto { a, b } tais que a primeira metade igual segunda metade, mas invertida. Exemplos: abbbba abaabaabaaba bbbbbbbbbbaabbbbbbbbbb (pode ser considerada como uma generalizao do duplo balanceamento, mas no deve ser confundida com as palndromas). Autmato com Pilhas ACEITA(APN_Palavra_Reversa)= Palavra_Reversa
(a, , a, , ) (b, , b, , ) q0 (a, a, , , ) (b, b, , , ) q1 (a, a, , , ) (b, b, , , )

(?, ?, , ?, ) qf

(?, ?, , ?, )

Figura 3.33 Grafo do Autmato com Pilhas No-Determinstico palavra e sua reversa

no-determinstico devido s duas alternativas de movimentos a partir de q0, para os mesmo smbolos lidos da fita de entrada (ciclo em q0 e desvio para q1). Adicionalmente, o alfabeto auxiliar igual ao de entrada. Em q0, empilhado (pilha 1) o reverso do prefixo. A cada smbolo empilhado, se existe o correspondente smbolo no topo da pilha 1, ento:
o autmato permanece no estado q0 e continua empilhando o reverso da entrada (pois no existe controle se j identificou toda a primeira metade); ocorre um movimento no-determinista para q1 (e, portanto, o autmato inicia uma alternativa) o qual verifica se o sufixo da palavra igual ao contedo da pilha 1 at ento empilhado.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 125

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Teorema 3.23 Mquina de Turing Mquinas No-Determinsticas.

O formalismo Mquina de Turing pode ser simulado pelos seguintes formalismos e vice-versa. a) Mquina de Turing No-Determinstica; b) Mquina de Post No-Determinstica; c) Autmato com Pilhas No-Determinstico. Uma importante aplicao do no-determinismo nos sistemas de computadores atuais o estudo dos sistemas concorrentes, em especial dos conceitos de multiprogramao e multiprocessamento. Multiprocessamento a existncia de duas ou mais unidades de processamento, realizando computaes simultneas. Multiprogramao um conceito lgico, normalmente implementado em nvel de sistema operacional, que permite manter ativo mais de um programa ao mesmo tempo. Isso significa que o uso de multiprocessamento, ou de multiprogramao, embora resultem em computadores mais eficientes e flexveis, no aumentam o seu poder computacional. importante destacar que o conceito de no-determinismo no deve ser confundido com o de concorrncia. 3.6.2 Mquina de Turing com Fita Infinita Esquerda e Direita A modificao da definio bsica da Mquina de Turing, permitindo que a fita seja infinita dos dois lados, no aumenta o poder computacional. Simulao: as clulas pares representam a parte direita da fita, e as mpares, a parte esquerda. O smbolo usado para controlar a fronteira entre as partes esquerda e direita.

...

a-3

a-2

a-1

a1

a2

a3

... ...

a1

a-1

a2

a-2

a3

a-3

Figura 3.34 Simulao de uma fita infinita dos dois lados

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 126

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.6.3 Mquina de Turing com Mltiplas Fitas


A Mquina de Turing com mltiplas fitas possui k fitas infinitas esquerda e direita e k correspondentes cabeas de fita. O processamento realizado depende do estado corrente da mquina e do smbolo lido em cada uma das fitas; grava um novo smbolo em cada uma das fitas, move cada uma das cabeas independentemente para a esquerda ou direita, e a mquina assume um (nico) novo estado.
Inicialmente, a palavra de entrada armazenada na primeira fita, ficando as demais com valor branco. As trs fitas so simuladas em uma nica fita, modificando os alfabetos de entrada e auxiliar. Cada smbolo contido em uma clula uma 6-upla, sendo 3 componentes para representar as clulas de cada uma das 3 fitas, e as demais 3 componentes para marcar a posio corrente das cabeas de cada fita (representadas na figura 3.35 pelo smbolo ).

... ... ...

a-3

a-2

a-1

a1

a2

a3

... ... ...

cabea 1 b-3 b-2 b-1 b1 b2 b3

cabea 2 c-3 c-2 c-1 c1 c2 c3

cabea 3

a1

a-1

a2

a-2

a3

a-3

b1

b-1

b2

b-2

b3

b-3

c1

c-1

c2

c-2

c3

c-3

... ... ... ... ... ...

Figura 3.35 Simulao de 3 fitas infinitas dos dois lados


____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 127

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

3.6.4 Outras modificaes sobre a Mquina de Turing


So apresentadas outras modificaes sobre o modelo bsico da Mquina de Turing, as quais no aumentam o poder computacional. Ou seja, possvel construir Mquinas de Turing tradicionais que simulam cada uma das modificaes sugeridas. a) Mquina de Turing Multidimensional. Neste modelo, a fita tradicional substituda por uma estrutura do tipo arranjo kdimensional, infinita em todas as 2k direes; b) Mquina de Turing com Mltiplas Cabeas. A Mquina de Turing com esta modificao possui k cabeas de leitura e gravao sobre uma nica fita. Cada cabea possui movimento independente. Assim, o processamento depende do estado corrente e do smbolo lido em cada uma das cabeas. c) Combinaes. Combinaes de algumas ou de todas as modificaes apresentadas. A combinao de algumas ou de todas as modificaes apresentadas no aumenta o poder computacional da Mquina de Turing. Por exemplo, uma Mquina de Turing NoDeterminstica com Mltiplas Fitas e Mltiplas Cabeas pode ser simulada por uma Mquina de Turing tradicional.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 128

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.7 Hierarquia de Classes de Mquinas


Mquinas Universais Mquinas Universais - algoritmos que sempre pram Mquina com Uma Pilha No-Determinstica Mquina com Uma Pilha Determinstica

Mquina sem Pilhas Determinstica ou No-Determinstico

Hierarquia de Classes de Linguagens:


a) Linguagens Regulares. Correspondem Classe das Mquinas sem Pilha.
So exemplos de linguagens dessa classe: alguns editores de texto, protocolos de comunicao. So linguagens muito simples, como as quais, por exemplo, no possvel fazer qualquer tipo de balanceamento de tamanho no-predefinido. A principal caracterstica dessa classe que o tempo de reconhecimento de uma palavra diretamente proporcional ao comprimento da entrada. qualquer algoritmo especificado usando esse formalismo igualmente eficiente, em termos de tempo de processamento;

b) Linguagens Livres do Contexto Determinsticas. Correspondem Classe dos Autmatos Determinsticos com Uma Pilha.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 129

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

So linguagens mais complexas que as Regulares, mas ainda muito simples, com as quais, por exemplo, no possvel reconhecer a linguagem Palavra_Reversa = { wwr w pertence a { a, b }* } tempo de reconhecimento de uma entrada diretamente proporcional ao dobro do tamanho da entrada;

c) Linguagens Livres do Contexto. Correspondem Classe dos Autmatos No-Determinsticos com Uma Pilha:
Constituem uma classe de fundamental importncia, pois incluem linguagens de programao como Algol e Pascal. Algumas linguagens muito simples no pertencem a essa classe de linguagens como: Triplo_Bal = { anbncn n 0 } Palavra_Palavra = { ww w palavra sobre os smbolos a e b } Os melhores algoritmos de reconhecimento conhecidos possuem tempo de processamento proporcional ao tamanho da entrada elevado ao cubo;
d)

Linguagens Recursivas.
Correspondem classe de todas as linguagens que podem ser reconhecidas mecanicamente e para as quais existe um algoritmo de reconhecimento que sempre pra para qualquer entrada. Inclui a grande maioria das linguagens aplicadas. Os reconhecedores de linguagens recursivas podem ser muito ineficientes, tanto em termos de tempo de processamento como de recursos de memria

e) Linguagens Enumerveis Recursivamente. Correspondem Classe das Mquinas Universais. Correspondem classe de todas as linguagens que podem ser reconhecidas mecanicamente.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 130

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

3.7 Hiptese de Church


Turing props um modelo abstrato de computao, conhecido como Mquina de Turing, com o objetivo de explorar os limites da capacidade de expressar solues de problemas. Trata-se, portanto, de uma proposta de definio formal da noo intuitiva de algoritmo. Diversos outros trabalhos, como Mquina de Post (Post - 1936) e Funes Recursivas (Kleene - 1936), bem como a Mquina Norma e o Autmato com Pilhas, resultaram em conceitos equivalentes ao de Turing. O fato de todos esses trabalhos independentes gerarem o mesmo resultado em termos de capacidade de expressar computabilidade um forte reforo no que conhecido como Hiptese de Church ou Hiptese de Turing-Church: "A capacidade de computao representada pela Mquina de Turing o limite mximo que pode ser atingido por qualquer dispositivo de computao" Em outras palavras, a Hiptese de Church afirma que qualquer outra forma de expressar algoritmos ter, no mximo, a mesma capacidade computacional da Mquina de Turing. Como a noo de algoritmo ou funo computvel intuitiva, a Hiptese de Church no demonstrvel. Supondo verdadeira a Hiptese de Church, pode-se afirmar que para: a) Funo Computvel: possvel construir uma Mquina de Turing (ou formalismo equivalente) que compute a funo; b) Funo No-Computvel: No existe Mquina de Turing (ou formalismo equivalente) que compute a funo.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 131

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 132

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 133

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 134

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 135

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 136

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4 Funes Recursivas
4.1 Linguagem Lambda
4.1.1 Funes e Funcionais 4.1.2 Motivao e Introduo 4.1.3 Termo e Linguagem Lambda 4.1.4 Semntica de um Termo Lambda

4.2 Funes Recursivas de Kleene


4.2.1 Composio 4.2.2 Recurso 4.2.3 Minimizao 4.2.4 Funo Recursiva Parcial e Total

4.3 Definies Recursivas de Bird


4.3.1 Classe das Funes Definidas Recursivamente 4.3.2 Semntica de uma Funo Definida Recursivamente 4.3.3 Traduo de Programas em Definies Recursivas

4.4 Importncia das Funes Recursivas

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 137

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

4 Funes Recursivas
Formalismos para especificar algoritmos Operacional
Define-se uma mquina abstrata, baseada em estados, em instrues primitivas e na especificao de como cada instruo modifica cada estado. Exemplos: formalismos Mquina Norma e Mquina de Turing

Axiomtico.
Associam-se regras s componentes da linguagem. As regras permitem afirmar o que ser verdadeiro aps a ocorrncia de cada clusula, considerando o que era verdadeiro antes da ocorrncia. Exemplo: Gramtica. Dependendo de restries feitas na definio das gramticas possvel estabelecer uma hierarquia, conhecida como Hierarquia de Chomsky

Autmatos Sem Pilha Gramticas Regulares Autmatos No-Determinsticos com Uma Pilha Gramticas Livres do Contexto; Mquinas Universais Gramticas Irrestritas.

Denotacional ou Funcional.
Trata-se de uma funo construda a partir de funes elementares de forma composicional no sentido em que o algoritmo denotado pela funo pode ser determinado em termos de suas funes componentes. Exemplo: Funes Recursivas Parciais introduzidas por Kleene (1936), as quais so funes parciais definidas recursivamente.
Foi provado que a Classe das Funes Turing-Computveis era igual Classe das Funes Recursivas Parciais. verifica-se que a composio das funes naturais simples: constante zero; sucessor; projeo; juntamente com recurso e minimizao, constitui uma forma compacta e natural para definir muitas funes e suficientemente poderosa para descrever toda funo intuitivamente computvel.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 138

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4.1 Linguagem Lambda


apresentada a notao conhecida como Linguagem Lambda (-Linguagem, introduzida por Alonzo Church em 1941) no Clculo Lambda (-Clculo), cujo principal objetivo evitar ambigidades de notao.

4.1.1 Funes e Funcionais


uma funo parcial uma relao f A B onde cada elemento do domnio (conjunto A) est relacionado com, no mximo, um elemento do contra-domnio (conjunto B). f A B denotada por f: A B; o tipo de f A B; (a, b) f denotado por f(a) = b.

Motivao: considere as seguintes funes parciais, definidas


usando uma notao matemtica muito comum, onde as variveis x e y tm seus valores em N: f(x) = x3 + 4

f: N N

g(x, y) = (x2, y - x) g: N N N N ou g: N2 N2 h(f, x) = f( f(x) )

h: ( (N N) N) N

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 139

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 4.1 Funcional.

Funcional uma funo que possui uma ou mais funes como argumentos. Portanto, a funo h um funcional.
Exemplo 4.1 Programas Funcionais. Considere um programa que receba como parmetro um par: um arranjo A de nmeros naturais, um nmero natural n calcula o mximo entre A(1), A(2),, A(n). arranjo A pode ser visto como uma funo A: N N a funo computada pelo programa pode ser dada pela seguinte funo: f(A, n) = max { A(i) 1 i n } cujo tipo f: (N N) N N Observao 4.2 Funcionais Funes com mais de um Argumento. funcionais podem ser usados para substituir funes com mais de um argumento. funes com mais de um argumento podem ser vistas como funcionais com um argumento funcionais constituem um dispositivo til na simplificao de notao e facilita a manipulao de expresses.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 140

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Exemplo Exemplo 4.2 Funcionais Funes com mais de um Argumento.

Considere a seguinte funo: g(x) (y) = (x2, y - x)


A funo g um funcional, onde g(x): N N2 cada natural x define a funo g(x) uma vez fixado um natural x, define g: N (N N2) uma funo tal que, para cada natural y, associa ao par de naturais (x2, y - x) g (N N) (N N) g(x, y) = (x2, y - x) g: N2 N2 g(x) (y) = (x2, y - x) g: N(N N2) g N (N (N N))
Exemplo Exemplo Exemplo 4.3 Funcionais Funes com mais de um Argumento.

Considere a seguinte funo:

h(f) (x) = f( f(x) )


h(f, x) = f( f(x) ) h(f) (x) = f( f(x) )

h: (N N) (N N)
h: (N N) N N h: (N N) (N N)

Embora o tipo de h seja diferente do tipo da funo h, essas so isomorfas. Pode-se afirmar que as duas funes so "iguais nos seus efeitos".

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 141

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

4.1.2 Motivao e Introduo


Considere novamente a funo f: N N tal que: f(x) = x3 + 4 o que est sendo definido no a funo f propriamente dita f(x) o resultado da aplicao de f ao parmetro x f(x) no uma funo, mas uma equao (polinmio).

Linguagem Lambda
Uma forma de definir funo com mais rigor Construes da Linguagem Lambda: a) Abstrao Lambda. Permite abstrair a definio da funo. termo Lambda: funo tal que, para um argumento arbitrrio x.x3 + 4 x, resulta em x3 + 4 b) Aplicao Lambda. Determina o valor da funo aplicada a um dado parmetro. aplicao da funo x.x3 + 4 ao valor 2 (x.x3 + 4)(2) termos da Linguagem Lambda sero denotados por letras maisculas M, N, P, (x.x3 + 4)(2) M denota x3 + 4 N denota x.x3 + 4 (x.M)(P) P denota 2 (N)(P) Regra de Reduo Beta (Regra de Reduo ) (x.M)(P) = [P/x]M substituio de x por (x.x3 + 4)(2) = P em M: = [2/x] x3 + 4 = = 23 + 4 = = 12

4.1.3 Termo e Linguagem Lambda


Linguagem Lambda constituda de termos lambda.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 142

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 4.3 Termo Lambda. Sejam X e C conjuntos contveis de variveis e de constantes Ento um Termo Lambda, Expresso Lambda ou Palavra Lambda sobre X e C indutivamente definido por: a) Toda varivel x X um termo lambda; b) Toda constante c C um termo lambda; c) Se M e N so termos lambda, e x uma varivel, ento:
c.1)(M N) um termo lambda; c.2)(x.M) um termo lambda.

Um termo da forma (x.M) denominado de abstrao lambda. Nomear um termo, usa-se o sinal de igualdade. O termo lambda (x.x3) nomeado pelo identificador cubo: cubo = (x.x3) Simplificaes de notao adotadas: a) Parnteses podem ser eliminados, respeitando a associatividade. Sejam M, N e P termos. M N P uma simplificao de ((M N) P); b) Parnteses podem ser eliminados, respeitando o escopo de uma varivel em uma abstrao. Sejam M, N e P termos, e x a varivel.
xM N P uma simplificao de (x(M N P));

c) Os seguintes termos lambda denotam a funo adio equivalentemente: (x, y)x + y e (r, s)r + s Definio 4. 4 Linguagem Lambda. Sejam X e C conjuntos contveis de variveis e de constantes, respectivamente. Uma Linguagem Lambda sobre X e C o conjunto de todos os termos lambda sobre esses conjuntos.
Exemplo Exemplo 4.4 Termos Lambda.

funes parciais
f(x) =x3 + 4 g(x, y) = (x2, y - x) g(x) (y) = (x2, y - x) h(f, x) = f( f(x) ) h(f) (x) = f( f(x) )

termos na Linguagem Lambda


f = x.x3 + 4 g = (x, y).(x2, y - x) g = x.y.(x2, y - x) h = (f, x).f( f(x) ) h = f.x.f( f(x) )

Observao 4.5 Linguagens Tipadas e No-Tipadas. A Linguagem Lambda inspirou a linguagem de programao LISP.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 143

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

LISP uma linguagem sem tipos, onde programas e dados no so distinguveis. At hoje so discutidas as vantagens e desvantagens das linguagens tipadas e das linguagens no-tipadas, ou seja se: tipos devem constituir um esquema bsico do conhecimento; entidades devem ser organizadas em subconjuntos com propriedades uniformes a partir de um universo no-tipado. Aps a introduo da linguagem Algol, onde variveis so associadas a tipos quando de suas declaraes, permitindo verificaes sintticas e semnticas de suas instncias no programa em tempo de compilao, foi verificado que tipos tm sido considerados uma facilidade essencial para o desenvolvimento de programas. A associao de tipo a um termo lambda como em uma definio tradicional de funo.
Exemplo Exemplo Exemplo 4.5 Termos Lambda Tipados.

Tipos das funes parciais, onde as variveis x e y tm seus valores em N:

f(x) =x3 + 4 g(x, y) = (x2, y - x) g(x) (y) = (x2, y - x) h(f, x) = f( f(x) ) h(f)(x) = f( f(x) )

f = x.x3 + 4: N N g = (x, y).(x2, y - x): N2 N2 g = x.y. (x2, y - x): N (N N2) h = (f, x).f( f(x) ): (N N) N N h = f.x.f( f(x) ): (N N) (N N)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 144

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4.1.4 Semntica de um Termo Lambda


A semntica de um termo lambda est relacionada com os conceitos de varivel livre, substituio de varivel livre e regra de reduo beta. Definio 4.6 Varivel Ligada e Varivel Livre. Uma varivel em um termo lambda denominada: a) Varivel Ligada, se est dentro do escopo de uma abstrao lambda; b) Varivel Livre, caso contrrio.
Exemplo Exemplo 4.6 Varivel Ligada e Varivel Livre.

a) No termo x.xk, as variveis x e k so ditas ligada e livre, respectivamente. b) No termo k.x.xk, as variveis x e k so ditas ligadas. Definio 4.7 Substituio de Varivel Livre. Sejam x uma varivel e M, P termos lambda. A Substituio de uma Varivel Livre x por P em M, denotada por: [P/x]M simplesmente a substituio de todas as ocorrncias de x em M pelo termo P.
Exemplo Exemplo Exemplo 4.7 Substituio de Varivel Livre.

A substituio da varivel livre x por 5 em k.xk [5/x] k.xk = k.5k

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 145

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 4.8 Regra de Reduo Beta. Sejam x uma varivel e M e P termos lambda. A Regra de Reduo Beta (Regra de Reduo ) de um termo (x.M)(P) dada pela substituio de x por P em M, ou seja: [P/x]M Note-se que x varivel ligada em x.M, mas livre em M, o que garante a coerncia da definio acima. Definio 4.9 Semntica de um Termo Lambda A semntica de um Termo Lambda dado por uma funo aplicada a um parmetro dada pelas aplicaes sucessivas possveis da regra de reduo beta.
Exemplo

Exemplo Exemplo 4.8 Regra de Reduo Beta, Semntica de um Termo Lambda

A semntica do termo (k.(x.xk)(5))(2) dada pela sucessiva aplicao da regra de reduo beta como segue: (k.(x.xk)(5))(2) = aplicao da regra de reduo beta em k = [2/k](x.xk)(5) = substituio da varivel livre k = (x.x2)(5) = aplicao da regra de reduo beta em x = [5/x](x2) = substituio da varivel livre x = 52 = = 25

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 146

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4.2 Funes Recursivas de Kleene


As funes recursivas parciais propostas por Kleene so funes construdas sobre funes bsicas usando trs tipos de construes: composio, recurso e minimizao.

4.2.1 Composio
g = (y1, y2,, yk).g(y1, y2,, yk): Nk N f = (x , x ,, x ).f (x , x ,, x ): Nn N, para i { 1, 2, , k }
i 1 2 n i 1 2 n

Definio 4.10 Composio de Funes. Sejam g, f1, f2, , fk funes parciais tais que:

A funo parcial h tal que: h = (x1, x2,, xn).h(x1, x2,, xn): Nn N a Composio de Funes definida a partir de g, f1, f2, , fk por:
h(x1,x2,, xn)= g( f1 (x1, x2,, xn), f2 (x1, x2,, xn),, fk(x1,x2,, xn) )

A funo parcial h dita definida para (x1,x2,xn) se, e somente se:


fi(x1, x2,, xn) definida para todo i { 1, 2, , k } g(f1(x1, x2,, xn), f2 (x1, x2,, xn),, fk(x1, x2,, xn) ) definida.

Exemplo Exemplo 4.9 Composio de Funes - Funes Constantes.

Suponha as seguintes funes: zero = x.0: N N sucessor = x.x + 1: N N adio = (x,y).x + y: N2 N

funo constante zero funo sucessor funo adio

As seguintes funes so definidas usando composio de funes: um = x.sucessor( zero(x) ): N N funo constante um dois = x.sucessor( um(x) ): N N funo constante dois trs = x.adio(um(x),dois(x) ): N N funo constante trs

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 147

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

4.2.2 Recurso
Definio 4.11 Recurso. Sejam f e g funes parciais tais que:
f = (x1, x2,, xn).f(x1, x2,, xn): Nn N g = ( x1, x2,, xn, y, z).g(x1, x2,, xn, y, z): Nn+2 N

A funo parcial h tal que:


h = ( x1, x2,, xn, y).h(x1, x2,, xn, y): Nn+1 N

definida por Recurso a partir de f e g como segue:


h(x1, x2,, xn, 0) = f(x1, x2,, xn) h(x1, x2,, xn, y + 1) = g( x1, x2,, xn, y, h(x1, x2,, xn, y) )

A funo h dita definida para (x1, x2,, xn, y) se, e somente se:
f(x1, x2,, xn) definida; g( x1, x2,, xn, i, h(x1, x2,, xn, i) ) definida para todo i { 1, 2, , y }

Exemplo 4.10 Recurso - Adio.


Suponha as seguintes funes: funo identidade id = x.x: N N funo sucessor sucessor = x.x + 1: N N proj33 = (x,y,z).z: N3 Nfuno projeo da 3a componente da tripla A funo adio nos naturais tal que: adio = (x,y).x + y: N2 N definida usando recurso como segue: adio(x, 0) = id(x) adio(x, y + 1) = proj33( x, y+1, sucessor( adio(x, y) )) Por exemplo, adio(3, 2) como segue: adio(3, 2) = = proj33 ( 3, 2, sucessor( adio(3, 1) ) ) = = proj33 ( 3, 2, sucessor( proj33( 3, 1, sucessor( adio(3, 0) ) ) ) ) = = proj33 ( 3, 2, sucessor( proj33( 3, 1, sucessor( id(3) ) ) ) ) = = proj33 ( 3, 2, sucessor( proj33( 3, 1, sucessor( 3 ) ) ) ) = = proj33 ( 3, 2, sucessor( proj33( 3, 1, 4 ) ) ) = = proj33 ( 3, 2, sucessor( 4 ) ) = = proj33 ( 3, 2, 5 ) = =5

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 148

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4.2.3 Minimizao
O conceito de minimizao que segue no intuitivo na noo de recurso. Entretanto, fundamental para garantir que a Classe de Funes Recursivas Parciais definida adiante possa conter qualquer funo intuitivamente computvel. Definio 4.12 Minimizao. Seja f uma funo parcial tal que: f = (x1, x2,, xn, y).f(x1, x2,, xn, y): Nn+1 N A funo parcial h tal que: h = ( x1, x2,, xn).h(x1, x2,, xn): Nn N dita definida por Minimizao de f e tal que:
h=(x1..xn).min{y f(x1,,xn, y)=0 e, (z) z<y, f(x1,, xn,z) definida }

Portanto, a funo h, para o valor (x1,, xn), definida como o menor natural y tal que f(x1,, xn, y) = 0. Adicionalmente, a condio: z tal que z < y, f(x1,, xn, z) definida garante que possvel determinar, em um tempo finito, se, para qualquer valor z menor do que y, f(x1,, xn, z) diferente de zero. Note que a funo h parcial . Por simplicidade, no texto que segue, para uma funo h definida por minimizao de f, a seguinte notao adotada (compare com a definio acima): h = (x1,x2,,xn).min{ y f(x1,x2,,xn, y) = 0 }
Exemplo Exemplo 4.11 Minimizao, Recurso - Constante Zero.

Suponha a funo constante zero = x.0: N N. Considere a seguinte funo que identifica o nmero zero nos naturais: constzero: N Note-se que uma funo sem variveis, ou seja, uma constante. A constante constzero definida usando minimizao como segue: constzero = min{ y zero(y) = 0 } De fato, o menor natural y tal que zero(y) = 0 0.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 149

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Exemplo Exemplo 4.12 Minimizao, Recurso - Antecessor.

Sejam a constante zero constzero, e a funo de projeo:


proj21 = (x,y).x: N2 N funo projeo da 1a componente do par

A seguinte funo antecessor nos naturais:


antecessor = x.antecessor(x): N N

pode ser definida usando recurso (supondo que antecessor de 0 0)


antecessor(0) = constzero antecessor(y + 1) = proj21( y, antecessor(y) ) antecessor(2) = = proj21 ( 1, antecessor(1) ) = = proj21 ( 1, proj21 ( 0, antecessor(0) ) ) = = proj21 ( 1, proj21 ( 0, constzero ) ) = = proj21 ( 1, proj21 ( 0, 0 ) ) = = proj21 ( 1, 0 ) = =1
Exemplo Exemplo 4.13 Minimizao, Recurso - Subtrao.

Sejam a constante zero constzero, e as seguintes funes:


id = x.x: N N funo identidade proj33 = (x,y,z). z: N3 Nfuno projeo da 3a componente da tripla

A seguinte funo subtrao naturais: sub = (x,y).sub(x, y): N2 N pode ser definida, usando recurso:
sub(x, 0) = id(x) sub(x, y + 1) = proj33 ( x, y+1, antecessor(sub(x, y)) ) sub(3, 2) = = proj33 ( 3, 2, antecessor (sub(3, 1)) ) = = proj33 ( 3, 2, antecessor (proj33( 3, 1, antecessor (sub(3, 0)) ))) = = proj33 ( 3, 2, antecessor (proj33 ( 3, 1, antecessor ( id(3) ) ) ) ) = = proj33 ( 3, 2, antecessor (proj33 ( 3, 1, antecessor (3)) ) )= = proj33 ( 3, 2, antecessor (proj33 ( 3, 1, 2) ) )= = proj33 ( 3, 2, antecessor (2) ) = = proj33 ( 3, 2, 1 ) = =1

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 150

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4.2.4 Funo Recursiva Parcial e Total


Funes recursivas parciais so definidas a partir de trs funes bsicas: constante zero, sucessor e projeo sobre o conjunto dos nmeros naturais
Projeo no uma funo, mas uma famlia de funes, pois depende do nmero de componentes, bem como de qual a componente que se deseja projetar.

Definio 4.13 Funo Recursiva Parcial. Uma Funo Recursiva Parcial indutivamente definida como segue:
a) Funes Bsicas. As seguintes funes so recursivas parciais: funo constante zero zero = x.0: N N funo sucessor sucessor = x.x + 1: N N projn = (x ,x ,,x ).x : Nn N projeo: i-sima componente da n-upla
i 1 2 n i

b) Composio de Funes. Se as seguintes funes so recursivas parciais : g = (y1, y2,, yk).g(y1, y2,, yk): Nk N fi = ( x ,x ,,x ).fi(x ,x ,,x ): Nn N, para todo i { 1, 2, , k }
1 2 n 1 2 n

ento a seguinte funo recursiva parcial : h = ( x1,x2,,xn).h(x1,x2,,xn): Nn N a qual definida pela composio de funes a partir de g,f1,f2,,fk por: h(x1,x2,,xn) =g( f1(x1,x2,,xn), f2(x1,x2,,xn),.., fk(x1,x2,,xn) ) c) Recurso. Se as seguintes funes so recursivas parciais : f = ( x1,x2,,xn).f(x1,x2,,xn): Nn N g = ( x ,x ,,x , y, z).g(x ,x ,,x , y, z): Nn+2 N
1 2 n 1 2 n

ento a seguinte funo recursiva parcial :

h = ( x1,x2,,xn, y).h(x1,x2,,xn, y): Nn+1 N


a qual definida por recurso a partir de f e g como segue: h(x1,x2,,xn, 0) = f(x1,x2,,xn) h(x1,x2,,xn, y + 1) = g( x1,x2,,xn, y, h(x1,x2,,xn, y) ) d) Minimizao. Se a seguinte funo recursiva parcial: f = ( x1,x2,,xn, y).f(x1,x2,,xn, y): Nn+1 N ento a seguinte funo recursiva parcial:

h = ( x1,x2,,xn).h(x1,x2,,xn): Nn N
a qual definida por minimizao de f, como segue: h = ( x1,x2,,xn).min{ y f(x1,x2,,xn, y) = 0 }: Nn N
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 151

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Exemplo Exemplo 4.14 Funes Recursivas Parciais.

a) Funo Identidade.A funo identidade, definida como segue: id = x.x: N N recursiva parcial, pois uma funo bsica de projeo, ou seja: id = proj11 b) As seguintes funes exemplificadas anteriormente so recursivas parciais:
adio = (x,y).x + y: N2 N sub = (x,y).sub(x, y): N2 N um = x.sucessor( zero(x) ): N N dois = x.sucessor( um(x) ): N N trs = x.adio( um(x), dois(x) ): N N constzero: N antecessor = x.antecessor(x): N N funo adio funo subtrao funo constante um funo constante dois funo constante trs valor constante zero funo antecessor

Definio 4.14 Funo Recursiva Total. Uma Funo Recursiva Total uma funo recursiva parcial definida para todos os elementos do domnio.
Teorema 4.15 Funes Recursivas Funes Turing-Computveis.

As seguintes classes de funes so equivalentes: a) Funes Recursivas Parciais e Funes Turing-Computveis; b) Funes Recursivas Totais e Funes Turing-Computveis Totais. A relao entre classes tambm pode ser estabelecida: Funes Recursivas Parciais Linguagens Enumerveis Recursivamente; Funes Recursivas Totais Funes Turing-Computveis Totais Linguagens Recursivas.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 152

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4.3 Definies Recursivas de Bird


Exemplo

Exemplo Exemplo 4.15 Fatorial.

Considere a seguinte definio recursiva da funo fatorial:


fatorial = x.(x = 0 1, x fatorial (x - 1)) fatorial(0) = 1. fatorial(0) = (0 = 0 1, 0fatorial(0 - 1)) = 1 Observa-se que 0fatorial(0-1) no tem valor definido, pois fatorial(0-1) indefinido. como x=0 verdadeira, a funo tem valor definido e igual a 1
Exemplo

Exemplo Exemplo 4.16 Adio, Multiplicao e Potenciao.

Considere as seguintes definies recursivas das funes adio (adio), multiplicao (mult) e potenciao (pot): adio = (x, y).(x = 0 y, adio(x - 1, y) + 1) mult = (x, y).(x = 0 0, adio( mult(x - 1, y), y) ) pot = (x, y).(y = 0 1, mult( pot(x, y - 1), x) ) Observa-se que: a adio definida em termos da funo sucessor (sucessor= y.y+1); a multiplicao definida em termos de adies de y; a potenciao definida em termos de multiplicaes de x.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 153

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Exemplo Exemplo 4.17 Diviso, Multiplicao.

Considere a definio da funo multiplicao mult, juntamente com as definies recursivas das funes diviso inteira (div) de x por y (indefinida para y = 0) e a multiplicao (m) dessa por y: div = (x, y).(x < y 0, div(x - y, y) + 1) m = (x, y).mult(y, div(x, y)) Entretanto, para y = 0, m(x,0) admite as seguintes interpretaes: m(x,0) = mult(0, div(x, 0)) = 0 e, portanto, definida; m(x,0) = mult(0, div(x, 0)) indefinida pois div(x, 0) indefinida; Portanto, o argumento (0, div(x, 0)) indefinido; logo, mult(0, div(x, 0)) indefinida.

Problemas de dupla interpretao (definida/indefinida) so solucionados usando regras de avaliao de funes recursivas.
Exemplo Exemplo 4.18 Minimizao.

Seja a funo h definida por minimizao de f = (x, y).f(x, y) Para definir h considere a seguinte funo k: k = (x, z).( f(x, z) = 0 z, k(x, z + 1) ) Ento h pode ser definida como segue: h = x.k(x, 0)

h= x.min{ y f(x,y)= 0 e, z tal que z < y, f(x, z) definida }

Note-se que, de fato, h, para o valor x, definida como o menor natural y tal que f(x, y) = 0 e garante que possvel determinar, em um tempo finito, se, para qualquer valor z menor do que y, f(x, z) diferente de zero.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 154

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4.3.1 Classe das Funes Definidas Recursivamente


so introduzidos os tipos necessrios e as definies de expresses predicativas e expresses numricas, necessrios para o conceito de definio recursiva. Definio 4.16 Tipo de Definio Recursiva. Um Tipo de uma definio recursiva pode ser: Relativamente s constantes e variveis dos tipos, assume-se que: a) Tipo N. As constantes so os nmeros:0, 1, 2, As variveis so denotadas pelos identificadores: x,y,z,,x1, y1,z1, b) Tipo B.
As nicas duas constantes so denotadas pelos identificadores verdadeiro e falso, os quais representam os valores-verdade verdadeiro e falso, respectivamente;

c) Tipo N B.

d) Tipo N N.

A nica constante denotada por zero, a qual representa a funo constante que verifica se o argumento nulo, ou seja: zero = x.(x = 0): N B As nicas constantes so denotadas pelos identificadores sucessor e antecessor, os quais denotam as funes sucessor e antecessor, respectivamente, ou seja: sucessor=x.(x+1):NN, e antecessor = x.(x=0 0, x-1):N N
n n

e) Tipo N N ou N B.

As variveis so denotadas pelos identificadores: f, g, h,, f1, g1, h1,

Dois tipos de expresses so consideradas: predicativas e numricas. Note que as definies dessas expresses apresentadas a seguir referenciam-se mutuamente. Uma expresso predicativa ou numrica dita sobre um tipo X { N, B }, quando:
do tipo X ou n seu contra-domnio do tipo X, ou seja, do tipo N X

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 155

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Definio 4.17 Expresso Numrica. Uma Expresso Numrica sobre N e indutivamente definida como segue: a) Expresses Numricas Bsicas. Cada constante ou varivel do tipo N constitui uma expresso numrica; b) Composio. Se e1, e2,, en so expresses numricas e f uma varivel do n tipo N N, ento expresso numrica: f(e1, e2,, en) c) Composio Numrica Condicional. Se p uma expresso predicativa e e1, e2 so expresses numricas, ento a seguinte composio condicional expresso numrica: (p e1, e2) Definio 4.18 Expresso Predicativa. Uma Expresso Predicativa sobre B e indutivamente definida como segue: a) Expresses Predicativas Bsicas.

As constantes verdadeiro e falso so, por si mesmas, expresses predicativas;

b) Composio com Expresso Numrica.

Se e uma expresso numrica, ento uma expresso predicativa: zero(e) Se e1, e2, , en so expresses numricas e f uma varivel do tipo

N B, ento expresso predicativa:


f(e1, e2,, en)

c) Composio Predicativa Condicional.


Se p1, p2 e p3 so expresses predicativas, ento uma expresso predicativa: (p1 p2, p3)

Por simplicidade, uma expresso predicativa ou numrica denominada simplesmente de expresso.


____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 156

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 4.19 Definio Recursiva. Sejam e1, e2,, ek expresses tais que: a) Para cada s { 1, 2,,k }, es sobre o tipo Xs onde Xs N ou B; b) As variveis que aparecem em es so elementos do conjunto: { xs1, xs2,, xsns, f1, f2,, fk } onde: xsr do tipo N, para cada r { 1, 2,, ns } fs do tipo N
ns

Xs, para cada s { 1, 2,, k }

Uma Definio Recursiva de f1, f2,,fk dada por: f1 = (x11, x12,, x1n1). e1 f1(x11, x12,, x1n1) = e1 f2 = (x21, x22,, x2n2). e2 ou f2(x21, x22,, x2n2) = e2 fk = (xk1, xk2,, xknk). ek fk(xk1, xk2,, xknk) = ek Portanto, uma definio recursiva pode definir mais de uma funo simultaneamente. interessante reparar que, de certa forma, as definies de expresso numrica e predicativa acima so definidas simultaneamente .
Exemplo Exemplo 4.19 Definio Recursiva.

A definio: f = x.( zero(x) sucessor(x), sucessor ( f(antecessor(x) ) )) a definio recursiva (formal) de: f = x.( x = 0 x +1, f(x -1) +1 )

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 157

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

4.3.2 Semntica de uma Funo Definida Recursivamente


A multiplicao admitia duas interpretaes, uma definida e outra indefinida. necessrio especificar uma regra de avaliao (semntica) para associar valores de funes com os argumentos dados. Entre muitas possveis regras, duas so descritas, a saber: regra-valor, onde os valores dos argumentos so avaliados antes da avaliao da funo que o referencia; regra-nome, onde os valores so avaliados se e quando so requeridos; a avaliao dos argumentos postergada at o ltimo momento possvel; Em algumas linguagens de programao como Algol, as avaliaes regra-valor e regra-nome possuem paralelo na passagem de argumentos por valor (by value) ou por nome (by name), respectivamente.
Exemplo Exemplo 4.20 Regra-Valor Regra-Nome.

Considere a seguinte funo: f = x,y.( x =00, f( x -1, f(x, y))) ou f (x,y )= (x=0 0, f(x-1, f(x, y))) Suponha que desejado avaliar f(1,0).
Tem-se que:

f(1, 0) = ( 1 = 0 0, f( 1 -1, f(1, 0) ) ) Como 1 = 0 falso, a avaliao continua em f(1 -1, f(1, 0) ). a) Regra-Valor.
Inicialmente os argumentos 1 - 1 e f(1, 0) so avaliados para ento avaliar f( 1 -1, f(1, 0) ). Entretanto, a avaliao do argumento f(1, 0) implica uma recurso sem fim, o que significa que f(1, 0) indefinido;

b) Regra-Nome.
Os argumentos 1 -1 e f(1,0) no so avaliados, mas sim substitudos, resultando em: (1 -1 = 0 0, f((1 -1) -1, f((1-1), f(1,0) ) ) ) Somente ento, feita a avaliao de 1 -1 = 0, resultando em verdadeiro, determinando que a avaliao resulta no valor 0. Portanto, pela regra-nome, f(1,0) definido e igual a 0) .
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 158

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Suponha que, para um tipo X, C(X) denota o conjunto de todas as constantes de X. Ambas as regras permitem avaliar uma expresso e definida por f = ( x1, x2, , xn).e ou f( x1, x2, , xn) = e para um argumento (a1,a2,,an) C(X1) C(X2) C(Xn). suposto que cada constante de funo c: X1 X2 interpretada como uma funo do tipo C(X1) C(X2). Antes de definir formalmente as regras de avaliao regra-valor e regra-nome, necessrio introduzir o conceito de expresso livre. Definio 4.20 Expresso Livre. Uma expresso numrica ou predicativa e dita uma Expresso Livre se contm somente constantes, excetuando-se, n n eventualmente, variveis do tipo N N ou N B. Portanto, uma expresso livre no contm variveis, excetuando-se eventualmente, variveis identificadas por f, g, h,, f1, g1, h1, Definio 4.21 Avaliao Regra-Valor. Suponha uma definio recursiva de f1, f2,,fk dada por: f1(x11, x12,, x1n1) = e1 f1 = (x11, x12,, x1n1). e1 f2 = (x21, x22,, x2n2). e2 ou f2(x21, x22,, x2n2) = e2 fk = (xk1, xk2,, xknk). ek fk(xk1, xk2,, xknk) = ek

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 159

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Uma Avaliao Regra-Valor definida como segue: Caso 1. Para cada s { 1, 2, , k }, a avaliao de fs para o argumento
(as1, as2,,asns), onde as1, as2,,asns so expresses livres, para todo r { 1, 2,, ns }, consiste na substituio de todas as ocorrncias de xsr por asr na expresso es. Aps, realizada a avaliao de cada expresso livre de acordo com os demais casos;

Caso 2. Se a expresso livre e da forma (p e1, e2) onde e1, e2 so

expresses, ento realizada a avaliao p. Se o resultado verdadeiro, ento a avaliao de e dada pela avaliao de e1; caso contrrio (falso ), e dada pela avaliao de avaliao de e2. Se o processo de avaliao de p no termina, ento o valor de e indefinido;

Caso 3. Se a expresso livre e da forma c(e1, e2,, ek), onde c uma


constante de funo, ento realizada a avaliao de e1, e2,, ek na seqncia. Se o processo termina, resultando nas expresses constantes b1, b2,, bk, ento o valor de e dado por c(b1, b2,, bk); caso contrrio, o valor de e indefinido;

Caso 4. Se a expresso livre e da forma f(e1, e2,, ek), ento realizada a


avaliao de e1, e2,, ek na seqncia. Se o processo termina, resultando nas expresses constantes b1, b2,, bk, ento o valor de e dado por f(b1, b2,, bk) (caso 1); caso contrrio, o valor de e indefinido;

Caso 5. Se a expresso livre e no corresponde a nenhuma das formas acima,


ento o valor de e a prpria expresso e.

Definio 4.22 Avaliao Regra-Nome. Uma Avaliao Regra-Nome possui os mesmos casos da regravalor, excetuando-se o caso 4, dado a baixo: Caso 4. Se a expresso livre e da forma f(e1, e2,, ek), ento o valor de e
dado por f, para o argumento (e1, e2,, ek), como no caso 1.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 160

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Exemplo 4.21 Regra-Valor, Regra-Nome - Multiplicao. Considere, novamente, a seguinte funo de multiplicao: m = (x, y).mult(y, div(x, y)) onde: mult = (x, y).(x = 0 0, adio( mult(x - 1, y), y) ) div = (x, y).(x < y 0, div(x - y, y) + 1) m (1, 0) = ? Regra-Valor.
caso 1: a substituio resulta em mult(0, div(1, 0)) caso 4: a avaliao de mult(0,div(1,0)) necessita da avaliao de 0 e de div(1,0) caso 5: a avaliao de 0 a prpria expresso 0 caso 1: a avaliao de div(1, 0) determinada pela substituio resulta em (1 < 0 0, div(1 - 0, 0) + 1) caso 2: a avaliao de 1 < 0 falso e determina a avaliao de div( 1-0, 0)+1 caso 4: a avaliao de div(1 - 0, 0) necessita da avaliao de 1 - 0 e de 0 Na seqncia, as avaliaes de 1 -0, 0 resultam em 1 e 0, respectivamente, e determinam a avaliao de div(1, 0). Portanto, os casos 1-2-4 (detalhados acima) so repetidos indefinidamente.

ou

(x, y).mult(y, div(x, y)) (1, 0)

Logo, pela Regra-Valor, m(1, 0) indefinido. Regra-Nome.


m(1, 0) caso 1: substituio mult(0, div(1, 0)) caso 4: substituio (0=0 0, adio( mult(0 -1, div(1,0) ), div(1,0))) caso 2 0 caso 5: avaliao de 0 0 0

Logo, pela Regra-Nome, m(1, 0) definido e resulta em 0.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 161

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Exemplo 4.22 Regra-Valor, Regra-Nome. Considere a definio recursiva de f1, f2, f3 dada por:
f1 = x.f2(f3, x): N N 2 f2 = (g, x).g( x, g(x,0) ): (N N) N N
2

As avaliaes de f1(1) por ambas as regras produzem o resultado zero


f1(1) f2(f3, 1) f3( 1, f3(1, 0) ) f3( 1, ( 1 = 0 0, f1( antecessor (1) ) ) ) f3( 1, f1(0) ) f3( 1, f2(f3, 0) ) f3( 1, f3( 0, f3(0, 0) ) ) f3( 1, f3( 0, ( 0 = 0 0, f1( antecessor (0) ) ) ) ) f3( 1, f3( 0, 0 ) ) f3( 1, 0 ) 0 Regra-Valor - f1(1) caso 1 caso 4 caso 1 casos 2 e 3 caso 1 casos 5 e 1 caso 1 casos 2 e 5 casos 1, 2 e 5 (como acima) casos detalhados acima

f3 = (x, y).( x = 0 y, f1( antecessor(x) ) ): N N

Figura 4.1 Avaliao por regra-valor


Regra-Nome - f1(1)

f1(1) caso 1 f2(f3, 1) caso 4 f3( 1, f3(1, 0) ) caso 4 ( 1=0 f3(1, 0), f1( antecessor (1) ) ) caso 2 f1( antecessor (1) ) caso 4 f2( f3, antecessor (1) ) caso 4 f3( antecessor (1) , f3(antecessor (1), 0) ) caso 4 ( antecessor (1) = 0 f3(antecessor (1), 0), f1(antecessor (antecessor (1))) ) caso 3 ( 0 = 0 f3(antecessor (1), 0), f1(antecessor (antecessor (1))) ) caso 2 f3(antecessor (1), 0) caso 4 ( antecessor (1) = 0 0, f1(antecessor (antecessor (1))) ) caso 3 ( 0 =0 0, f1(antecessor (antecessor (1))) ) caso 2 0 caso 5 0

Figura 4.2 Avaliao por regra-nome

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 162

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Diferena essencial entre regra-valor e regra-nome


a) Regra-Valor. Exige a avaliao de todas as subexpresses, podendo (falhar em) no terminar devido a uma dessas subexpresses falhar em ter um valor definido. b) Regra-Nome. A avaliao das subexpresses retardada at que os seus valores sejam realmente requeridos para continuar a avaliao. Desse modo, subexpresses que no possuem valores definidos podem jamais serem avaliadas; Assim, as duas regras nunca produzem resultados conflitantes. Entretanto, a regra-nome pode retornar um valor quando a regravalor no retorna. Portanto: uma funo definida recursivamente, juntamente com a regravalor ou a regra-nome, induz uma funo, sem ambiguidades; entretanto, como exemplificado, para uma mesma definio recursiva, as funes induzidas por regra-valor e por regra-nome no necessariamente coincidem. Definio 4.23 Funo Regra-Valor e Funo Regra-Nome. Denomina-se funo regra-valor (ou funo regra-nome) a funo induzida por uma definio recursiva, considerando a avaliao regravalor (ou a avaliao regra-nome, respectivamente). Existe uma forma de construir definies recursivas de tal forma que as correspondentes funes regra-nome e regra-valor coincidem.
Teorema 4.24 Funes Definidas Recursivamente Funes Computveis.

As Classes das Funes Regra-Valor e Regra-Nome so equivalentes Classe das Funes Turing-Computveis.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 163

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

4.3.3 Traduo de Programas em Definies Recursivas


Seja M = (V, X, Y, X, Y, F, T) uma mquina Seja P = (I, r1) um programa monoltico para M Seja L ={ r1, r2,,rn } o conjunto de rtulos. Suponha que rn o nico rtulo final Suponha a seguinte definio recursiva: fY(x) = Y( f1( X(x) ) ) f1(v) = e1 f2(v) = e2 fn(v) = en onde: (suponha que F um identificador de operao, T um identificador de

teste e rs, rt so rtulos de L):

rk: faa

v uma varivel do tipo V (conjunto de valores de memria de M) en = v para cada rk em P, para k { 1, 2,,n-1 }, tem-se que a) Operao. Se rk o rtulo de uma operao em P da forma rk: faa F v_para rs ek = frs( F(v) )
v_para rs ek = frs(v)

b) Teste. Se rk o rtulo de um teste da forma: rk: se T ento v_para rs seno v_para rt ek = ( T(v) frs(v), frt(v) ) Ento a funo computada P, M tal que, para qualquer x X: P, M(x) = fY(x) Quando a regra-valor usada, a avaliao passo-a-passo de fY(x) exatamente a mesma seqncia da computao de P em M para a entrada x. Quando a regra-nome usada, a avaliao de fY(x) procede em uma ordem diferente, mas o resultado final ser o mesmo.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 164

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Exemplo Exemplo 4.23 Programa Monoltico Definio Recursiva.

Programa Monoltico P1 1: se X = 0 ento v_para 4 seno v_para 2 2: faa X := X - 1 v_para 3 3: faa Y:= Y+1 v_para 1
Figura 4.3 Programa monoltico para a Mquina Norma

A correspondente definio recursiva


fY(x) = sai( f1( ent(x) ) ) f1(x, y) = ( x = 0 f4(x, y), f2(x, y) ) f2(x, y) = f3(x - 1, y) f3(x, y) = f1(x, y + 1) f4(x, y) = (x, y)

No caso especfico da Mquina Norma (com somente dois registradores X e Y), as seguintes simplificaes podem ser realizadas: substituir ent(x) por (x, 0) na definio de fY, como a funo sai tal que sai = (x, y).y, pode-se remover a funo de sada sai na definio de fY, desde que a definio de f4 seja alterada como segue (pois somente o valor do registrador Y deve ser considerado para a sada): f4(x, y) = y Tais simplificaes resultam na seguinte definio recursiva:
fY(x) = f1(x, 0) f1(x, y) = ( x = 0 f4(x, y), f2(x, y) ) f2(x, y) = f3(x - 1, y) f3(x, y) = f1(x, y + 1) f4(x, y) = y fY(x) = sai( f1(x, 0) )

Retornando simplificao, pode-se substituir f2, f3 e f4 pelas suas correspondentes expresses, resultando na seguinte definio recursiva:
fY(x) = f1(x, 0) f1(x, y) = ( x = 0 y, f1(x - 1, y + 1) )

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 165

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Exemplo Exemplo 4.24 Programa Monoltico Definio Recursiva.

Suponha que, na Mquina Norma, a operao X:= X-1 seja indefinida quando o contedo do registrador X zero. Considere o programa monoltico P2 para tal Mquina Norma. Programa Monoltico P2 1: faa X:= X - 1 v_para 2 2: faa Y:= Y + 1 v_para 3
Figura 4.4 Programa monoltico para a Mquina Norma modificada

Neste caso, a correspondente definio recursiva como segue: fY(x) = f1(x, 0) f1(x, y) = f2(x - 1, y) f2(x, y) = f3(x, y + 1) f3(x, y) = y A avaliao de fY(0) pela regra-valor resulta em indefinido, visto que foi suposto que 0 - 1 no-definido. Por outro lado, a avaliao de fY(0) pela regra-nome resulta em 1. Na realidade, tal situao no ocorre, pois a definio de mquina exige que as interpretaes de operaes e de testes sejam funes totais.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 166

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Seja M = (V, X, Y, X, Y, F, T) uma mquina tal que W um programa iterativo para M. A correspondente definio recursiva indutivamente definida como segue: a) Para cada identificador de operao F ou para a operao vazia , tem-se ento, respectivamente: fF(v) = F(v) e f(v) = v b) Se R e S so programas iterativos e se T um identificador de teste, usado na definio de W, ento se tem: b.1) Composio Seqencial. Se Wk = R;S, ento: fWk(v) = fS(fR(v)) b.2) Composio Condicional. Se Wk = (se T ento R seno S), ento: fWk(v) = ( T(v) fR(v), fS(v) ) b.3) Composio Enquanto. Se Wk = enquanto T faa (R), ento: fWk(v) = ( T(v) fWk( fR(v) ), v ) b.4) Composio At. Se Wk = at T faa (R), ento: fWk(v) = ( T(v) v, fWk( fR(v) ) ) c) Adicionalmente: fY(x) = Y( fW( X(x) ) ) Ento a funo computada W, M tal que, para qualquer x X: W, M(x) = fY(x) Essa discusso dos programas para a Mquina Norma mostra como cada funo computvel por Norma pode ser definida recursivamente.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 167

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

4.4 Importncia das Funes Recursivas


O estudo das funes recursivas e da recurso em geral de fundamental importncia na Cincia da Computao. No s so formalismos to poderosos como as mquinas universais como fornecem uma abordagem (denotacional) diferente da operacional. A quase totalidade das linguagens de programao modernas como Pascal ou C possui recurso como um construtor bsico de programas. As arquiteturas da maioria dos atuais computadores possuem facilidades para implementar recurso. Uma das principais nfases dos estudos tericos-formais referente aos formalismos denotacionais baseados em recurso a questo da composio concorrente, onde existem questes em aberto.

Princpio da Recurso

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 168

... ...

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

4.5 Exerccios
Exerccio 4.1 Suponha que x, y e z tm seus valores em N e que o tipo da funo g g:N2 N. Para cada item abaixo, determine o tipo da funo e descreva-a, usando a Linguagem Lambda: a) f(g) (x, y) = ( g ( g(x, y), y ), y ) b) f(g, x, y) = g(x, y) c) f(g, x) = g ( g (x, x), x ) d) f(x) (y) = g(x, y) Exerccio 4.2 Descreva, usando a Linguagem Lambda: a) Funo exponencial; b) Composio simples de um dado conjunto de funes. Exerccio 4.3 Compare as funes recursivas (Kleene) parciais e totais, bem com as definies recursivas (Bird), destacando: a) Diferenas conceituais e a interpretao dessas diferenas; b) Relao entre essas classes de funes; c) Importncia de cada classe no estudo da computabilidade. Exerccio 4.4 Usando as funes zero, sucessor e adio, verifique se existem outras formas de definir equivalentemente as funes um, dois e trs apresentadas no Exemplo 4.9. Exerccio 4.5 Compare e diferencie a constante constzero (Exemplo 4.11) e a funo constante zero. Exerccio 4.6 Determine o valor de sub(2, 3) para a funo recursiva do Exemplo 4.13. Exerccio 4.7 Quais das funes do Exemplo 4.14 so totais? Exerccio 4.8 Desenvolva funes recursivas totais sobre N para as seguintes operaes: a) Multiplicao; b) Quadrado (n2); c) Fatorial (n!). Sugesto: use a funo recursiva de adio definida nos exemplos. Exerccio 4.9 As funes recursivas de Kleene so definidas sobre N. Como poderia ser uma funo recursiva para tratar palavras? Analogamente para as definies recursivas de Bird?
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 169

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Exerccio 4.10 Usando a soluo do exerccio acima, demonstre que as funes que seguem so recursivas (Kleene). Em cada caso, verifique se a funo total ou parcial (suponha = { a, b }): a) esquerda = x.esquerda(x): * * tal que retorna o primeiro smbolo de x; b) direita = x.direita(x): * * tal que retorna o ltimo smbolo de x; c) comprimento = x.comprimento(x): * { a }* tal que retorna o nmero de smbolos que compem x, em unrio; d) ordem_lexicogrfica = x.ordem_lexicogrfica(x): { a }* * tal que retorna a x-sima palavra (valor em unrio) na ordem lexicogrfica; e) antecede = (x, y).antecede(x, y): (*)2 * tal que retorna: , se x = y a, se x > y b, se x < y Exerccio 4.11 Funo de Ackernmann. A funo de Ackernmann um importante exemplo no estudo das funes recursivas e das funes recursivas primitivas (no introduzidas nesta publicao). A funo de Ackernmann sobre N e tal que: Ack(0, y) = 1 Ack(1, 0) = 2 Ack(x, 0) = x + 2, para x 2 Ack(x + 1, y + 1) = Ack( Ack(x, y + 1), y ) a) A definio acima satisfaz a definio de funo recursiva? b) Calcule, passo a passo: Ack(0, 0) = 1 Ack(2, 1) = 1 c) Defina a funo recursiva de um argumento Ack(x, 2).

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 170

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Exerccio 4.12 Determine se as funes regra-valor e regra-nome induzidas pela seguinte definio recursiva coincidem: f(x, y) = ( x = 0 1, y = 0 f(x, 1), f( y - 1, f(x, y - 1) ) ) Exerccio 4.13 Construa a correspondente definio recursiva para a funo computada pelo programa na Figura 4.5, descrito em uma linguagem tipo Pascal. programa: incio entrada x; z := x; y := 0; at x = 0 faa incio x := x - 1; at z = 0 faa incio z := z - 1; y := Y + 1 fim; z := y; fim; sada y; fim. Figura 4.5 Programa em uma linguagem tipo Pascal Exerccio 4.14 Descreva a seguinte funo usando a Linguagem Lambda, bem como d a sua definio recursiva:
f(x) = g(y)
y= 0 x

Exerccio 4.15 Um nmero natural n > 1 dito um nmero perfeito se for igual soma de seus divisores, incluindo 1 mas excluindo n. Construa uma definio recursiva para a funo: perfeito(x) = (x + 1)-simo nmero perfeito

5 Computabilidade
Objetivo do estudo da solucionabilidade de problemas investigar a existncia ou no de algoritmos que solucionem determinada classe de problemas.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 171

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

investigar os limites da computabilidade e, conseqentemente, os limites do que pode efetivamente ser implementado em um computador. evitar a pesquisa de solues inexistentes. Em 1901, Hilbert formulou uma lista de problemas; Dcimo problema: Existe ou no um algoritmo que determine se uma equao polinomial, com coeficientes inteiros, possui soluo nos inteiros? Em 1970, Matijasevic provou ser tal problema sem soluo. Abordagem Concentra-se nos problemas com respostas binrias do tipo sim ou no (problemas sim/no ou problemas de deciso). A vantagem de tal abordagem que a verificao da solucionabilidade de um problema pode ser tratada como a verificao se determinada linguagem recursiva, associando as condies de ACEITA/REJEITA de uma Mquina Universal s respostas sim/no, respectivamente. a Classe dos Problemas Solucionveis equivalente Classe das Linguagens Recursivas Muitos problemas so no-solucionveis. a) Equivalncia de Compiladores. No existe algoritmo genrico que sempre pare capaz de comparar quaisquer dois compiladores de linguagens livres do contexto (reconhecidas pelo formalismo Autmato No-Determinstico com Uma Pilha) como PASCAL, verificando se so equivalentes (se reconhecem a mesma linguagem); b) Detector Universal de Loops. Dados um programa e uma entrada quaisquer, no existe algoritmo genrico capaz de verificar se o programa vai parar ou no para a entrada. Este problema universalmente conhecido como o Problema da Parada. Alguns problemas no-solucionveis so parcialmente solucionveis, Existe um algoritmo capaz de responder sim, embora, eventualmente, possa ficar em loop infinito para uma resposta que deveria ser no. problemas parcialmente solucionveis so computveis a Classe dos Problemas Parcialmente Solucionveis equivalente Classe das Linguagens Enumerveis Recursivamente

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 172

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Classe dos Problemas: Computveis No-Computveis o cardinal da Classe dos Problemas Computveis contvel; o cardinal da Classe dos Problemas No-Computveis no-contvel. pode-se afirmar que o cardinal da Classe dos Problemas No-Computveis muito maior que o da Classe dos Problemas Computveis, ou seja, existem muito mais problemas no-computveis do que computveis. Princpio da Reduo O estudo da solucionabilidade de um problema feito na investigao da solucionabilidade de um problema a partir de outro, cuja classe de solucionabilidade conhecida. a) Sejam A e B dois problemas de deciso. Suponha que possvel modificar (reduzir) o problema A de tal forma que ele se porta como um caso do problema B; b) Se A no-solucionvel (respectivamente, no-computvel), ento, como A um caso de B, conclui-se que B tambm no-solucionvel (respectivamente, no-computvel); c) Se B solucionvel (respectivamente, parcialmente solucionvel), ento, como A um caso de B, conclui-se que A tambm solucionvel (respectivamente, parcialmente solucionvel).

Problema A

Reduo de A

Problema B

Princpio da Reduo

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 173

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

5.1 Classes de Solucionabilidade de Problemas


Definio Definio 5.1 Problema Solucionvel.

Um problema dito Solucionvel ou Totalmente Solucionvel se existe um algoritmo (Mquina Universal) que solucione o problema tal que sempre pra para qualquer entrada, com uma resposta afirmativa (ACEITA) ou negativa (REJEITA).
Definio Definio 5.2 Problema No-Solucionvel.

Um problema dito No-Solucionvel se no existe um algoritmo (Mquina Universal) que solucione o problema tal que sempre pra para qualquer entrada.
Universo de Todos os Problemas

Solucionveis

No-Solucionveis

Particionamento do conjunto de todos os problemas em classes


Definio Definio 5.3 Definio Problema Parcialmente Solucionvel ou Computvel.

Um problema dito Parcialmente Solucionvel ou Computvel se existe um algoritmo (Mquina Universal) que solucione o problema tal que pare quando a resposta afirmativa (ACEITA). Entretanto, quando a resposta esperada for negativa, o algoritmo pode parar (REJEITA) ou permanecer processando indefinidamente (LOOP).
Definio Definio 5.4 Definio Problema Completamente Insolvel ou No-Computvel.

Um problema dito Completamente Insolvel ou No-Computvel se no existe um algoritmo (Mquina Universal) que solucione o problema tal que pare quando a resposta afirmativa (ACEITA).

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 174

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Universo de Todos os Problemas Parcialmente Solucionveis (Computveis) Completamente Insolveis (No-Computveis)

Particionamento do conjunto de todos os problemas em classes Alguns problemas no-solucionveis so parcialmente solucionveis. Relacionamento entre as classes de problemas: a unio da Classe dos Problemas Solucionveis com a Classe dos Problemas No-Solucionveis o Universo de Todos os Problemas; a unio da Classe dos Problemas Parcialmente Solucionveis com a classe dos Problemas Completamente Insolveis o Universo de Todos os Problemas; a Classe dos Problemas Parcialmente Solucionveis contm propriamente a Classe dos Problemas Solucionveis e parte da Classe dos NoSolucionveis; todo problema solucionvel parcialmente solucionvel; existem problemas no-solucionveis que possuem soluo parcial; os problemas completamente insolveis no possuem soluo total nem parcial. Para qualquer algoritmo que solucione um problema parcialmente solucionvel que no-solucionvel, sempre existe pelo menos uma palavra de entrada que faz com que o algoritmo fique em loop.
Universo de Todos os Problemas

Solucionveis

No-Solucionveis

Parcialmente Solucionveis Computveis

Completamente Insolveis No-Computveis

Relao entre as classes de problemas


____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 175

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

5.2 Problemas de Deciso


A essncia de um problema de deciso Dado um programa P para uma mquina universal M, decidir se a funo computada P, M total (ou seja, se a correspondente computao finita).

No-solucionabilidade
refere-se inexistncia de um mtodo geral e efetivo para decidir se um programa para uma mquina universal pra para qualquer entrada. possvel existir mtodos especficos para programas particulares. Importncia da existncia de problemas no-solucionveis: alguns desses problemas no-solucionveis permitem estabelecer, por si ss, importantes resultados (como a inexistncia de um detetor universal de loops); demonstrar limitaes da capacidade de expressarem-se solues atravs de programas. pode ser usada para verificar que outros problemas tambm o so, usando o princpio da reduo.

Observao 5.5

Solucionabilidade de Problemas Problema de Reconhecimento de Linguagens.

A investigao da solucionabilidade de problemas em mquinas universais pode ser vista como um problema de reconhecimento de linguagens: a) O problema reescrito como um problema de deciso, capaz de gerar respostas do tipo afirmativo/negativo (sim/no); b) Os argumentos do problema sim/no so codificados como palavras de um alfabeto, gerando uma linguagem. Assim, a questo da solucionabilidade de um problema pode ser traduzida como uma investigao se a linguagem gerada recursiva (problema solucionvel) ou enumervel recursivamente (problema parcialmente solucionvel).

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 176

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

5.3 Codificao de Programas


A abordagem especfica para programas monolticos da Mquina Norma Codificao de um programa como um nmero natural do Captulo 3 A funo de codificao introduzida, cdigo, no bijetora (mas injetora). Nem todo natural codificao de algum programa.
Exemplo Exemplo 5.1 Codificao Bijetora de Programas.

Seja P o conjunto de todos os programas do tipo que est sendo considerado (monoltico, iterativo ou recursivo). Considere a seqncia de inteiros p0, p1, p2, formada pelos cdigos dos programas de P (ordenados pela relao menor sobre os naturais). Ento: cdigo_bij = p.cdigo_bij(p): P N cdigo_bij(P) = n (para qualquer pP, se o cdigo de P pn) E, cdigo_bij-1 = n.cdigo_bij-1(n): N P

cdigo_ bij-1(n)= P (para qualquer natural n retorna o programa P)


cdigo_bij

P
R W

cdigo

N
p0 p1

N
0 1

... ...
P

... ...
Funo bijetora de codificao de programas
pn

... ...
n

Um algoritmo para determinar cdigo_bij(P) calcula p = cdigo(P) verifica (usando decodificao - quantos nmeros naturais menores do que p so codificaes de programas, Se forem n-1, ento cdigo_bij(P) = n Um algoritmo para determinar cdigo_bij-1(n) verifica (usando decodificao) os n primeiros nmeros naturais que denotam
codificaes de programas. Se p o n-simo natural, ento o n-simo programa ser a decodificao de p.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 177

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

5.4 Problema da Auto-Aplicao


Definio Definio 5.6 Problema da Auto-Aplicao.

Dado um programa monoltico arbitrrio P para a Mquina Norma, decidir se a funo computada P, Norma definida para p, onde p a codificao de P Dado um programa monoltico arbitrrio P para Norma, decidir se a computao de P em Norma termina ou no, para a entrada p.

LAA = { pP, Norma(p) definida, P programa de Norma, p= cdigo(P) }


Assim, a questo da solucionabilidade do Problema da Auto-Aplicao a investigao se a linguagem recursiva (problema solucionvel) ou enumervel recursivamente (problema parcialmente solucionvel).
Teorema Teorema 5.7 Teorema Problema da Auto-Aplicao Parcialmente Solucionvel.

LAA = { pP, Norma(p) definida, P programa de Norma, p= cdigo(P) } A linguagem LAA enumervel recursivamente.
Prova: necessrio mostrar que existe um programa monoltico Q para Norma, tal que: ACEITA(Q) = LAA e REJEITA(Q) LOOP(Q) = N - LAA Sejam P um programa monoltico qualquer para Norma Q um programa monoltico para Norma capaz de simular qualquer outro programa. Ele recebe a entrada p = cdigo(P) e simula P para a entrada p. p ACEITA(Q) se, e somente se, P, Norma(p) definido, ou seja, a computao de P em Norma finita; p LOOP(Q) se, e somente se, a computao de P em Norma infinita; REJEITA(Q) = (conseqncia dos dois casos acima). Portanto: ACEITA(Q) = LAA REJEITA(Q) LOOP(Q) = N - LAA Logo, LAA enumervel recursivamente Portanto, o Problema da Auto-Aplicao parcialmente solucionvel.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 178

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Teorema Teorema 5.8 Teorema Problema da Auto-Aplicao No-Solucionvel.

A linguagem LAA que traduz o Problema da Auto-Aplicao no recursiva. Prova: (por reduo ao absurdo) Suponha que LAA recursiva. Ento existe um programa monoltico Q para Norma, tal que: ACEITA(Q) = LAA REJEITA(Q) = N - LAA LOOP(Q) =
pACEITA(P) p Q pREJEITA(P) pLOOP(P) ACEITA REJEITA

Suponha o programa R como Q, mas adicionando um trecho de programa que executado ao final de cada computao finita de Q, com a seguinte funo: antes de terminar a computao, testa o valor da sada de Q atribuindo: se Q aceita ou rejeita, ento R fica em loop; se Q fica em loop, R aceita.
R pACEITA(P) p Q pREJEITA(P) pLOOP(P) trecho de programa adicionado LOOP

ACEITA

Aplicao de R como entrada de R, (suponha que r = cdigo(R)) tem-se que R fica em loop quando Q, ao simular R, aceita ou rejeita. Ou seja, R fica em loop quando R pra; R pra quando Q, ao simular R, fica em loop. Ou seja, R pra quando R fica em loop. Assim, fica caracterizada a contradio. Logo, LAA no recursiva Portanto, o Problema da Auto-Aplicao no-solucionvel.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 179

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

5.5 Princpio da Reduo


Definio Definio 5.9 Mquina de Reduo.

Sejam dois problemas A e B e as correspondentes linguagens LA e LB. Uma Mquina de Reduo R de LA para LB tal que (w ): Se w LA, ento R(w) LB Se w LA, ento R(w) LB Portanto, o mapeamento de linguagens uma funo computvel total.
Teorema Teorema 5.10 Reduo: Investigao da Solucionabilidade.

Sejam dois problemas A e B e as correspondentes linguagens LA e LB. Se existe uma mquina de reduo R de LA para LB (sobre um alfabeto ), ento os seguintes resultados podem ser estabelecidos: a) Se LB recursiva, ento LA recursiva; b) Se LB enumervel recursivamente, ento LA enumervel recursivamente; c) Se LA no recursiva, ento LB no recursiva; d) Se LA no enumervel recursivamente, ento LB no enumervel recursivamente.
Seja R Mquina de Turing de Reduo que sempre pra e que reduz LA a LB.

LA

Reduo de LA
Reduo

LB

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 180

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Provas: a) Suponha que LB uma linguagem recursiva. Ento existe MB, Mquina Universal, que aceita LB e sempre pra para qualquer entrada. Seja a Mquina Universal M definida
M ACEITA w R R(w) MB REJEITA

As seguintes concluses podem ser estabelecidas: M sempre pra para qualquer entrada, pois R e MB sempre param; se w LA, ento M aceita w, pois R(w) LB se w LA, ento M rejeita w, pois R(w) LB Portanto, M aceita LA e sempre pra para qualquer entrada. Logo, LA uma linguagem recursiva; b) Suponha que LB uma linguagem enumervel recursivamente. Ento, existe MB, uma Mquina Universal, tal que:
ACEITA(MB) = LB REJEITA(MB) LOOP(MB) = * - LB

Seja a Mquina Universal M definida


M ACEITA w R R(w) MB REJEITA ou LOOP

As seguintes concluses podem ser estabelecidas: se w LA, ento M aceita w, pois R(w) LB se w LA, ento M rejeita ou fica em loop para a entrada w, pois MB rejeita ou fica em loop para a entrada R(w). Portanto, M aceita LA, mas pode ficar em loop para entradas nopertencentes a LA. Logo, LA uma linguagem enumervel recursivamente; c) e d) Por contraposio, as afirmaes c) e d) so equivalentes s afirmaes a) e b), respectivamente. Lembre-se de que (suponha que p e q so proposies):
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 181

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

(p q) (q p)

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 182

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

5.6 Problema da Parada


Definio Definio Definio 5.11 Problema da Parada.

Dada uma Mquina Universal M qualquer e uma palavra w qualquer sobre o alfabeto de entrada, existe um algoritmo que verifique se M pra, aceitando ou rejeitando, ao processar a entrada w? Problema da Parada um problema de deciso (do tipo sim/no) e pode ser redefinido pela seguinte linguagem: LP = { (m, w) | m = cdigo(M) e w ACEITA(M) REJEITA(M) }
Teorema

Teorema Teorema 5.12 Teorema Problema da Parada No-Solucionvel.

A linguagem LP que traduz o Problema da Parada no recursiva: LP = { (m, w) | m = cdigo(M) e w ACEITA(M) REJEITA(M) } Prova: (por reduo ao absurdo) Suponha que LP recursiva. Ento existe uma Mquina Universal MP sobre o alfabeto , tal que: ACEITA(MP) = LP REJEITA(MP) = * - LP e LOOP(MP) = Suponha uma Mquina Universal R que, para qualquer entrada w, gera o par (w, w)
M ACEITA w R (w,w) MP REJEITA
Mquina construda usando o princpio da reduo

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 183

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Auto-Aplicao

Parada

Problema da Auto-Aplicao foi reduzido ao Problema da Parada: se w LAA, ento R(w) = (w, w) LP se w LAA, ento R(w) = (w, w) LP Como suposto que o Problema da Parada solucionvel, ento, pelo Teorema 5.10, o Problema da Auto-Aplicao solucionvel, o que um absurdo. Logo, absurdo supor que o Problema da Parada solucionvel Portanto, no-solucionvel. Analogamente ao problema da Auto-Aplicao, o Problema da Parada parcialmente solucionvel.
Teorema Teorema 5.13 Teorema Problema da Parada Parcialmente Solucionvel.

A linguagem que traduz o Problema da Parada enumervel recursivamente: LP = { (m, w) | m = cdigo(M) e w ACEITA(M) REJEITA(M) }

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 184

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

5.7 Outros Problemas de Deciso


Definio Definio 5.14 Problema da Parada da Palavra Vazia.

Dada uma Mquina Universal M qualquer, existe um algoritmo que verifique se M pra, aceitando ou rejeitando, ao processar a entrada vazia?
Parada

O Problema da Parada da Palavra Vazia uma variao do Problema da Parada, restringindo a entrada palavra vazia (ou ausncia de entrada).
Palavra Vazia
Teorema

Teorema

Teorema Teorema 5.15Problema da Parada da Palavra Vazia NoSolucionvel. A linguagem que traduz o Problema da Parada da Palavra Vazia no recursiva: L = { m | m = cdigo(M) e ACEITA(M) REJEITA(M) } Prova: A linguagem LP que traduz o Problema da Parada reduzida linguagem L. Sejam: T uma Mquina Universal qualquer, definida sobre o alfabeto ; w uma palavra qualquer sobre ; W uma Mquina Universal que recebe como entrada a palavra vazia e gera (sada) a palavra w; M uma Mquina Universal definida em termos de T e W.
M

As seguintes concluses podem ser estabelecidas: se T aceita a palavra w, ento M aceita a palavra vazia; se T no aceita a palavra w (rejeita ou fica em loop), ento M no aceita a palavra vazia (rejeita ou fica em loop). Suponha que t e m so os cdigos de T e M, se (t, w) LP, ento m L se (t, w) LP, ento m L
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 185

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Logo, o Problema da Parada da Palavra Vazia no-solucionvel


Definio Definio 5.16 Problema da Totalidade.

Dada uma Mquina Universal M qualquer, existe um algoritmo que verifique se M pra, aceitando ou rejeitando, ao processar qualquer entrada?
Teorema Teorema 5.17 Problema da Totalidade No-Solucionvel.

A linguagem que traduz o Problema da Totalidade no recursiva: LT = { m | m = cdigo(M) e LOOP(M) = } Prova: por reduo ao absurdo Suponha que LT recursiva. Ento existe uma Mquina Universal MT, tal que sempre pra, e ACEITA(MT) = LT. Suponha uma Mquina Universal R que, para qualquer entrada (p, w), gera p (projeo da primeira componente do par).

Parada

Totalidade

Seja M uma Mquina:


M ACEITA (p,w) R p MT REJEITA

Problema da Parada foi reduzido ao Problema da Totalidade, pois: se (p, w) LP, ento R( (p, w) ) = p LT; se (p, w) LP, ento R( (p, w) ) = p LT. Como suposto que o Problema da Totalidade solucionvel, ento, pelo Teorema 5.10, o Problema da Parada recursivo, o que um absurdo. Logo, absurdo supor que o Problema da Totalidade solucionvel portanto, no-solucionvel.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 186

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Definio 5.18 Problema da Equivalncia. O Problema da Equivalncia um problema de deciso (do tipo sim/no) que verifica a equivalncia de duas mquinas universais.
Teorema Teorema 5.19 Problema da Equivalncia No-Solucionvel.

A linguagem que traduz o Problema da Equivalncia no recursiva: LE = { (m, p) | m = cdigo(M), p = cdigo(P), ACEITA(M) = ACEITA(P) e REJEITA(M) = REJEITA(P) } Prova: usa o princpio da reduo
Palavra Vazia

A linguagem LE que traduz o Problema da

Parada da Palavra Vazia (que no recursiva) reduzida linguagem LE.


Equivalncia

Sejam: T uma Mquina Universal qualquer; Vazia uma Mquina Universal que recebe como entrada qualquer palavra e sempre gera (sada) a palavra ; Pra_Vazia uma Mquina Universal que sempre pra para a entrada vazia; M uma Mquina Universal definida em termos de T, Vazia e Pra_Vazia
M

Vazia

Pra_Vazia

As seguintes concluses podem ser estabelecidas (suponha que t e p so os cdigos de T e Pra_Vazia, respectivamente): se t L, ento (t, p) LE se t L, ento (t, p) LE Portanto, o Problema da Parada da Palavra Vazia reduzido ao Problema da Equivalncia Logo, o Problema da Equivalncia no-solucionvel.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 187

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

5.8 Problema da Correspondncia de Post


O Problema da Correspondncia de Post definido sobre um Sistema de Post.
Definio Definio 5.20 Sistema de Post.

Um Sistema de Post S definido sobre um alfabeto um conjunto finito e no-vazio de pares ordenados de palavras sobre .

um conjunto da seguinte forma, onde n>1 e xi, yi *, para i{1,2, .., n }: S = { (x1, y1), (x2, y2),, (xn, yn) }
Uma soluo para um Sistema de Post uma seqncia no-vazia de nmeros naturais com valores em { 1, 2,, n }: i1, i2,, ik

tal que:

xi1xi2xik = yi1yi2yik

O Problema da Correspondncia de Post a investigao da existncia de um algoritmo que analise qualquer Sistema de Post e determine se ele tem pelo menos uma soluo.
Exemplo EXEMPLO 5.2 Problema da Correspondncia de Post.

Seja o Sistema de Post sobre = { a, b } dado pelo seguinte conjunto: S = { (b, bbb), (babbb, ba), (ba, a) } Uma soluo de S : 2, 1, 1, 3 babbb b b ba = ba bbb bbb a
Exemplo

Exemplo EXEMPLO 5.3 Problema da Correspondncia de Post.

Seja o Sistema de Post sobre = { a, b } dado pelo seguinte conjunto: S = { (ab, abb), (b, ba), (b, bb) } S no tem soluo pois, para qualquer par (xi, yi) S, tem-se que xi < yi.
Exemplo EXEMPLO 5.4 Problema da Correspondncia de Post.

Seja o Sistema de Post sobre = { a, b } dado pelo seguinte conjunto: S = { (a, ba), (bba, aaa), (aab, b), (ab, bba) } S no tem soluo pois, para qualquer par (xi, yi) S, o primeiro smbolo de xi diferente do primeiro smbolo de yi.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 188

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Teorema Teorema 5.21 Teorema Problema da Correspondncia de Post No-Solucionvel

A linguagem que traduz o Problema da Correspondncia de Post no recursiva: LCP={ss = cdigo(S) e S Sistema de Post com pelo menos uma soluo } A partir de uma Mquina de Post M qualquer sobre o alfabeto e de uma palavra w * qualquer, constri-se um Sistema Normal de Post baseado na seqncia de comandos executados por M para a entrada w, de tal forma que o Sistema Normal tenha soluo se, e somente se, M pra para a entrada w.
Prova:

Parada

Correspondncia de Post

Portanto, o Problema da Parada reduzido ao Problema da Correspondncia de Post. A linguagem LP que traduz o Problema da Parada (que no recursiva) reduzida linguagem LCP. A idia bsica da construo enumerar os comandos da mquina M e, para cada ao sobre a varivel X, gerar um par do Sistema de Post. Suponha que: w * uma palavra qualquer, onde w = a1a2an o valor inicial de X w as componentes elementares do diagrama de fluxos de M so enumeradas sobre { 1, 2,, m },

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 189

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

A relao entre os componentes elementares de M e os pares do correspondente Sistema de Post como segue:

partida

aceita

rejeita

X Xs

X ler(X)

a1 j1

a2 j2

...
jn

an

# jn+1

jn+2

Partida. (1, 1 a1 a2an 2) Desvio ou Teste. (i a1, j1), (i a2, j2),, (i an, jn), (i , jn+1), (i , jn+2) Atribuio. (i, s j) Parada. (i, ) Smbolo. Cada smbolo s { # } (s, s) Deve-se reparar que, no par correspondente partida, a segunda componente tem um nmero de instruo a mais que a primeira. Essa diferena s compensada no par correspondente instruo de aceita/rejeita. Assim, o Sistema Normal de Post somente tem soluo se a mquina parar para a entrada w. Portanto, possvel reduzir o Problema da Parada ao Problema da Correspondncia de Post Logo, o Problema da Correspondncia de Post no-solucionvel.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 190

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Exemplo EXEMPLO 5.5 Mquina de Post Sistema de Post.

Considere a Mquina de Post Post-Duplo_Bal, a qual reconhece a linguagem Duplo_Bal = { anbn n 0 }, cujas instrues j esto enumeradas. Suponha a entrada w = ab. Sistema de Post correspondente conforme o Teorema 5.20 resulta em 24 pares, os quais so:
1 partida 2 X X# 3 X ler(X)

a 4 X ler(X) 9

b, rejeita

# 10 aceita

a 5 X Xa

b 11

#,

rejeita 6 X ler(X)

# X X#

12

a, rejeita

X Xb

1: (1, 1ab2) 2: (2, #3) 3: (3a, 4) 4: (3b, 9) 5: (3#, 10) 6: (3, 9) 7: (4a, 5) 8: (4b, 6) 9: (4#, 11) 10: (4, 11) 11: (5, a4) 12: (6a, 12) 13: (6b, 7) 14: (6#, 8) 15: (6, 12) 16: (7, b6) 17: (8, #3) 18: (9, ) 19: (10, ) 20: (11, ) 21: (12, ) 22: (a, a) 23: (b, b) 24: (#, #)

Uma soluo para esse sistema, a qual corresponde ao processamento da Mquina de Post Post-Duplo_Bal para a entrada w = ab, a seqncia de pares: 1, 22, 23, 2, 22, 23, 24, 3, 23, 24, 8, 24, 14, 17, 24, 5, 19 1 a b 2 a b # 3a b # 4b # 6# 8 # 3# 10 = = 1ab2 a b #3 a b # 4 b # 6 # 8 #3 # 10 Repare que a informao contida entre dois nmeros de instrues o valor da varivel X aps o processamento do comando esquerda e antes do comando direita. Os pares 22, 23 e 24 possuem exatamente esse objetivo.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 191

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

5.9 Propriedades da Solucionabilidade


o complemento de uma linguagem recursiva uma linguagem recursiva; uma linguagem recursiva se, e somente se, a linguagem e seu complemento so enumerveis recursivamente. o complemento de um problema solucionvel solucionvel; um problema solucionvel se, e somente se, o problema e seu complemento so parcialmente solucionveis.

EXEMPLO: Problema da Parada: o Problema da Parada parcialmente solucionvel; o Problema da Parada no-solucionvel; portanto, o Problema da No-Parada no-solucionvel. Teorema Teorema 5.22 Complemento de uma Linguagem Recursiva uma Linguagem Recursiva. Se uma linguagem L sobre um alfabeto qualquer recursiva, ento o seu complemento * - L tambm uma linguagem recursiva. Prova: Suponha L uma linguagem recursiva sobre . Ento existe M, Mquina Universal, que aceita a linguagem e sempre pra para qualquer entrada. Ou seja: ACEITA(M) = L REJEITA(M) = * - L LOOP(M) = Seja M' uma Mquina Universal construda a partir de M, mas invertendo-se as condies de ACEITA por REJEITA e vice-versa. Portanto, M' aceita * - L e sempre pra para qualquer entrada. Ou seja: ACEITA(M') = * - L REJEITA(M') = L LOOP(M') = Logo * - L uma linguagem recursiva.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 192

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Teorema Teorema 5.23 Teorema Linguagem Recursiva Linguagem Enumervel Recursivamente.

Uma linguagem L sobre um alfabeto qualquer recursiva se, e somente se, L e * - L so enumerveis recursivamente. Prova: a) Suponha L uma linguagem recursiva sobre . Ento, como foi mostrado no Teorema 5.22, * - L recursiva. Como toda linguagem recursiva tambm enumervel recursivamente, ento L e * - L so enumerveis recursivamente; b) Suponha L uma linguagem sobre tal que L e * - L so enumerveis recursivamente. Ento existem M1 e M2, Mquinas Universais tais que: ACEITA(M1) = L ACEITA(M2) = * - L Seja M Mquina Universal no-determinstica definida conforme esquema ilustrado na figura.
M M1 ACEITA ACEITA

M2

ACEITA

REJEITA

Para qualquer palavra de entrada, M aceita-a se M1 aceit-la e M rejeita-a se M2 aceit-la. Portanto, claramente, M sempre pra. Logo, L recursiva.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 193

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

5.10 Exerccios
Exerccio 5.1 Qual a relao entre as seguintes classes de problemas: a) Solucionveis; b) Parcialmente Solucionveis (Computveis); c) No-solucionveis; c) Completamente Insolveis (No-Computveis). Exerccio 5.2 Descreva uma sistemtica genrica para traduzir problemas em linguagens. Exerccio 5.3 Qual a importncia do Problema da Auto-Aplicao no estudo da solucionabilidade de problemas? Exerccio 5.4 Quais as idias bsicas do princpio da reduo? Exerccio 5.5 Desenvolva um algoritmo de decodificao (funo inversa da codificao). Exerccio 5.6 Esboce um programa que recebe como entrada p = cdigo(P) e simula P para a entrada p. Exerccio 5.7 Demonstre que o Problema da Parada da Palavra Constante no-solucionvel. Exerccio 5.8 Escolha um dos problemas abaixo e mostre que ele parcialmente solucionvel: a) Problema da Parada; b) Problema da Parada da Palavra Vazia; c) Problema da Totalidade; d) Problema da Equivalncia. Exerccio 5.9 O Problema da Aceitao da Palavra definido como segue: dada uma Mquina Universal M qualquer e uma palavra w qualquer pertencente a *, M aceita w? Ou seja, investiga-se se uma palavra aceita por uma Mquina Universal. a) A linguagem correspondente a esse problema conhecida como a Linguagem Universal. Qual essa linguagem? b) Prove que um problema parcialmente solucionvel; c) Prove que um problema no-solucionvel.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 194

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Exerccio 5.10 No estudo dos problemas do tipo sim/no, so vlidas todas as operaes lgicas como e, ou, se-ento, negao, etc. Para os itens abaixo considere as operaes e, ou e negao: a) Interprete o significado dessas operaes sobre problemas; b) Qual o resultado ao aplicar essas operaes sobre problemas solucionveis? Por qu? c) Idem para no-solucionveis; e) Idem para parcialmente solucionveis. Exerccio 5.11 Suponha M uma Mquina Universal. Seja M' uma Mquina Universal construda a partir de M, mas invertendo-se as condies de ACEITA por REJEITA e vice-versa. Como essa inverso pode ser implementada? A resposta pode ser especfica para qualquer dos formalismos estudados. Exerccio 5.12 Seja M uma Mquina Universal no-determinstica definida conforme esquema ilustrado na figura 5.22. Como seria a definio de M? A resposta pode ser especfica para qualquer dos formalismo estudados. Exerccio 5.13 Sobre o Problema da Correspondncia de Post: a) Encontre a menor soluo para os seguintes Sistemas de Post: S1 = { (b, bbb), (babbb, ba), (ba, a) } S2 ={ (, a), (a, b), (b, aa), (aa, ab), (ab, ba), (ba, bb), (bb, ) } b) Encontre uma soluo para o seguinte Sistema de Post: S3 = { (aab, a), (ab, abb), (ab, bab), (ba, aab) } Observao: a menor soluo uma seqncia de 66 ndices. c) Mostre que o seguinte Sistema de Post no tem soluo: S4 = { (ba, bab), (abb, bb), (bab, abb) } Exerccio 514 Suponha S um Sistema de Post com soluo. Desenvolva um algoritmo que determine a menor seqncia de ndices que seja soluo de S.

6 Concluses
A abordagem combina abordagens histricas com abordagens prximas dos sistemas computadores modernos. objetivo dessa combinao permitir um fcil entendimento e associao dos problemas abstratos com os problemas tpicos da Cincia da Computao atual.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 195

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

O propsito construir, de forma gradual, os diversos conceitos bsicos de Teoria da Computao. a noo de procedimento efetivo ou de funo computvel. Para definir as funes computveis, so descritos diversos formalismos e mquinas. Mquina de Turing - um formalismo simples e usualmente adotado para desenvolver esse tipo de estudo. Mquina Norma - possibilita a diferenciao entre programa e mquina, estando, por isso, bastante prxima da noo de computabilidade e dos computadores atuais. mquinas universais, nas quais possvel representar qualquer funo que seja computvel. a noo de funo recursiva, formalismo equivalente s mquinas universais. computabilidade e estudo da solucionabilidade de problemas. Problemas Solucionveis (existe um algoritmo que resolva o problema, para qualquer entrada) Problemas No-Solucionveis (no existe um algoritmo que sempre resolva o problema). Problemas Parcialmente Computveis (Solucionveis) Problemas No-Computveis (Completamente Insolveis).

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 196

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

6.1 Resumo dos Principais Conceitos


Programa Mquina

Computao

Funo Computada

Programas Equivalentes

Mquinas Equivalentes

Funes Mquinas Computveis Universais Figura 6.1 Conceitos bsicos desenvolvidos

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 197

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

Computabilidade
Programas Mquinas Computaes Funo computada Comparaes entre programas Se dois programas, em uma mquina, possuem a mesma funo computada, ou seja, computam a mesma funo, ento eles so equivalentes. Se esses programas so equivalentes em qualquer mquina, ento eles so equivalentes fortemente. Comparaes entre Mquinas Simulao - se uma mquina simula outra, porque, para qualquer programa da outra mquina, pode-se encontrar um programa desta que faa a mesma coisa. Se duas mquinas simulam-se mutuamente, porque elas so equivalentes (ambas tm o mesmo poder computacional)

Equivalncia

Qual a mquina mais poderosa? Qual o conjunto ou a classe de funes que so computveis?
Uma mquina universal se toda funo computvel puder ser executada nela. A Hiptese de Church diz que uma funo computvel aquela que pode ser processada numa Mquina de Turing ou equivalente.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 198

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Solucionabilidade de Problemas

Princpio da reduo A idia bsica investigar a solucionabilidade (respectivamente, no-solucionabilidade) de um problema a partir de outro, cuja solucionabilidade (respectivamente, no-solucionabilidade) conhecida.

Problema A

Reduo de A

Problema B

Figura 6.2 Princpio da Reduo

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 199

1 INTRODUO E CONCEITOS BSICOS


_________________________________________________________________________________________

6.2 Contribuies da Teoria da Computao


proporciona um adequado embasamento terico necessrio para um correto e amplo entendimento da cincia envolvida na computao; propicia o desenvolvimento de um raciocnio lgico e formal; introduz os conceitos fundamentais que so desenvolvidos em outras reas
Linguagens de Programao e Compiladores a abordagem de reconhecimento de linguagens a base de todo o estudo de Linguagens Formais, Semntica Formal, Compiladores e de Linguagens de Programao; Orientao a Objetos a formalizao de objetos atravs de suas caractersticas e propriedades possibilita que se identifiquem classes, as quais podem agrupar esses objetos. Os objetos herdam as propriedades da classe, sendo, portanto, instncias dessa classe. Otimizao de Algoritmos; a abordagem do processamento de funes lana a base para o desenvolvimento de algoritmos eficientes, no s na resoluo dos problemas, mas tambm no estudo da otimizao de algoritmos; Anlise e Desenvolvimento de Algoritmos e Complexidade de Algoritmos Seqenciais e Paralelos; A complexidade estrutural diz respeito estrutura de controle adotada e otimizao em termos do nmero de instrues e da eliminao de instrues desnecessrias. A complexidade computacional diz respeito quantidade de trabalho envolvida na resoluo do problema pelo algoritmo (tempo), medida, muitas vezes, pela quantidade de trabalho que uma determinada instncia do problema necessita para resolv-lo. Tambm se pode considerar a quantidade de memria necessria (espao) e, no caso de processamento paralelo e distribudo, o nmero de processadores necessrios.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 200

INTRODUO

CONCEITOS

BSICOS

________________________________________________________________________________________

Campo Cognitivo

proporciona mais um estgio na formao do raciocnio lgico, com destaque ao pensamento indutivo ou recursivo. aspecto da induo, parte-se de uma instncia base, verifica-se a passagem para instncias superiores, at construir-se o problema como um todo. aspecto da recurso, v-se o problema como um todo e reduz-se o problema a subproblemas menores, at que se chega a um problema base, iniciando assim o processo reverso, com a resoluo de cada instncia do problema.

Figura 6.3 Princpio da Recurso no desenvolvimento de demonstraes e de suas tcnicas: o objetivo capacitar o estudante a desenvolver provas formais e informais. no desenvolvimento da capacidade de abstrao: propriedades abstratas podem ser especificadas e estudadas independentemente de estruturas.

____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 201

... ...

Você também pode gostar