Professional Documents
Culture Documents
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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.
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]).
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)
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)
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
________________________________________________________________________________________
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
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.
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
Mquina Universal
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
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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.
T1 f G
T2 v parada
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
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.
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.
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
(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.
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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.
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.
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.
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
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.
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
Definio 2.8
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
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.
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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:
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)
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
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 .
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:
Dk =(C1;C2);C
ento (Dk+1, vk+1) = ( ? , vk ) Dk+1 = C1;C se T(vk) = verdadeiro Dk+1 = C2;C se T(vk) = falso
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)
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
P, M: X Y
P, M(x) = Y(vn)
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.
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
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)
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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
Programa monoltico
partida
Programa Monoltico P1
1:seTento v_para2 seno v_para3 2:faa F v_para 1
T f parada
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))
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))
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
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
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.
(se T ento V seno W) e) Composio Enquanto. enquanto T faa (V) f) Composio At. at T faa (V)
v T f V
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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.
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.
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.
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.
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.
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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.
b)
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.
INTRODUO
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().
INTRODUO
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, )
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
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.
INTRODUO
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.
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.
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
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.
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.
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, )
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, )
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
c)
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, )
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
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
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.
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.
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.
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.
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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
Uso de Mquinas de Turing Existem trs maneiras de abordar o estudo das Mquinas de Turing
a) b)
Processar
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.
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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.
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:
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
1: faa F v_para 2
2: se T ento v_para 3 seno v_para 1
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:
em verdadeiro, se a componente correspondente ao registrador K for zero e em falso, caso contrrio. K=0?
INTRODUO
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)
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!
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
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)
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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?
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 )
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.
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
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)
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
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
Como definir desvios, usando endereamento indireto (determinado pelo contedo de um registrador) em programas do tipo monoltico?
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
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
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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.
...
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.
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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}
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
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.
LOOP(M)
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)
b (q2, B, E)
(q0, A, D)
(q4, , D)
(q4, , E)
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
...
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}
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
________________________________________________________________________________________
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
q0
(, , E)
(#, , E) (b, , E)
q3 (#, b, E)
(b, b, E)
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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, , D)
(q13, , D)
(q7, , D)
(q13, , D)
(q12, , E)
(q8, A, D) (q12, 1, 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
(, , 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, 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
(C, C, D)
q13
INTRODUO
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;
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;
____________________________________________________________ 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):
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 101
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:
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:
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:
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
incio da fila
fim da 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
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
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
________________________________________________________________________________________
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
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
...
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
________________________________________________________________________________________
...
an
...
controle a1 A2 a3 a4
depois
...
an
...
controle
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
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
____________________________________________________________ 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
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
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
rejeita
a,b
rejeita
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
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
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
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
________________________________________________________________________________________
b,
rejeita
b,
rejeita
b,
rejeita
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 117
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
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
(?, ?, , ?, )
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 121
q0
q1
q2
(?, ?, , ?, ) qf
(?, ?, , ?, )
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
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
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
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 126
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
a-3
a-2
a-1
a1
a2
a3
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
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 128
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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
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
________________________________________________________________________________________
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 131
____________________________________________________________ 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
____________________________________________________________ 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
____________________________________________________________ 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
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 137
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
________________________________________________________________________________________
f: N N
h: ( (N N) N) N
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 139
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
________________________________________________________________________________________
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
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
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) )
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
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.
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
________________________________________________________________________________________
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.
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 145
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
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.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) )
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.
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
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 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 }
____________________________________________________________ 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
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
________________________________________________________________________________________
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
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
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
________________________________________________________________________________________
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
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)
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
________________________________________________________________________________________
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.
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
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.
Se e uma expresso numrica, ento uma expresso predicativa: zero(e) Se e1, e2, , en so expresses numricas e f uma varivel do tipo
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
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
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
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;
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;
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
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 161
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
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
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 162
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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
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
________________________________________________________________________________________
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
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
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
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
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
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
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
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
________________________________________________________________________________________
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
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
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
________________________________________________________________________________________
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
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
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) } 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
________________________________________________________________________________________
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
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
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
(p q) (q p)
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 182
INTRODUO
CONCEITOS
BSICOS
________________________________________________________________________________________
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
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
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
________________________________________________________________________________________
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
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
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
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
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
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
________________________________________________________________________________________
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
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
________________________________________________________________________________________
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
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
________________________________________________________________________________________
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
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
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
________________________________________________________________________________________
Computao
Funo Computada
Programas Equivalentes
Mquinas Equivalentes
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 197
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
____________________________________________________________ Teoria da Computao - Profs. Tiaraju Diverio e Paulo Blauth Menezes 199
____________________________________________________________ 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
... ...