cap 3 - máquinas universais

36
3 MÁQUINAS UNIVERSAIS ________________________________________________________________________________________ ____________________________________________________________ Teoria da Computação - Profs. Tiaraju Diverio e Paulo Blauth Menezes 0 3 Máquinas Universais 3.1 Codificação de Conjuntos Estruturados 3.2 Máquina de Registradores - Norma 3.3 Máquina Norma como Máquina Universal 3.3.1 Operações e Testes 3.3.2 Valores Numéricos 3.3.3 Dados Estruturados 3.3.4 Endereçamento Indireto e Recursão 3.3.5 Cadeias de Caracteres 3.4 Máquina de Turing 3.4.1 Noção Intuitiva 3.4.2 Noção como Máquina 3.4.3 Modelo Formal 3.4.4 Máquinas de Turing como Reconhecedores de Linguagens 3.4.5 Máquinas de Turing como Processadores de Funções 3.4.6 Equivalência entre as Máquinas de Turing e Norma 3.5 Outros Modelos de Máquinas Universais 3.5.1 Máquina de Post 3.5.2 Máquina com Pilhas 3.5.3 Autômato com Duas Pilhas 3.6 Modificações sobre as Máquinas Universais 3.6.1 Não-Determinismo 3.6.2 Máquina de Turing com Fita Infinita à Esquerda e à Direita 3.6.3 Máquina de Turing com Múltiplas Fitas 3.6.4 Outras Modificações sobre a Máquina de Turing 3.7 Hierarquia de Classes de Máquinas 3.8 Hipótese de Church 3 MÁQUINAS UNIVERSAIS ________________________________________________________________________________________ ____________________________________________________________ Teoria da Computação - Profs. Tiaraju Diverio e Paulo Blauth Menezes 1 3 MÁQUINAS UNIVERSAIS Algoritmo termo intuitivamente usado como solução de um problema, como uma forma de descrever se determinada propriedade é verificada ou não para uma dada classe de entrada. Investigação da solucionabilidade de um problema é a investigação da existência de um algoritmo capaz de resolvê-lo. Noção intuitiva de algoritmo sua descrição deve ser finita e não-ambígua; deve consistir de passos discretos, executáveis mecanicamente e em um tempo finito. Limitações de tempo ou de espaço podem determinar se um algoritmo pode ou não ser descrito na prática. (não são restrições teóricas). estudo será restrito aos algoritmos naturais, ou seja, definidos sobre o conjunto dos números naturais. qualquer conjunto contável pode ser equivalente ao dos naturais, através de uma codificação. conceito de programa, como introduzido anteriormente, satisfaz à noção intuitiva de algoritmo. Entretanto, é necessário definir a máquina a ser considerada. Máquina simples, para permitir estudos de propriedades, sem a necessidade de considerar características não-relevantes, bem como permitir estabelecer conclusões gerais sobre a classe de funções computáveis; poderosa, capaz de simular qualquer característica de máquinas reais ou teóricas, de tal forma que os resultados provados sejam válidos para modelos aparentemente com mais recursos.

Upload: jessica-richter

Post on 09-Nov-2015

254 views

Category:

Documents


24 download

DESCRIPTION

Capitulo sobre maquinas universais

TRANSCRIPT

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3 Mquinas Universais

    3.1 Codificao de Conjuntos Estruturados 3.2 Mquina de Registradores - Norma 3.3 Mquina Norma como Mquina Universal 3.3.1 Operaes e Testes 3.3.2 Valores Numricos 3.3.3 Dados Estruturados 3.3.4 Endereamento Indireto e Recurso 3.3.5 Cadeias de Caracteres 3.4 Mquina de Turing 3.4.1 Noo Intuitiva 3.4.2 Noo como Mquina 3.4.3 Modelo Formal 3.4.4 Mquinas de Turing como Reconhecedores de Linguagens 3.4.5 Mquinas de Turing como Processadores de Funes 3.4.6 Equivalncia entre as Mquinas de Turing e Norma 3.5 Outros Modelos de Mquinas Universais 3.5.1 Mquina de Post 3.5.2 Mquina com Pilhas 3.5.3 Autmato com Duas Pilhas 3.6 Modificaes sobre as Mquinas Universais 3.6.1 No-Determinismo 3.6.2 Mquina de Turing com Fita Infinita Esquerda e Direita 3.6.3 Mquina de Turing com Mltiplas Fitas 3.6.4 Outras Modificaes sobre a Mquina de Turing 3.7 Hierarquia de Classes de Mquinas 3.8 Hiptese de Church

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3 MQUINAS UNIVERSAIS

    Algoritmo termo intuitivamente usado como soluo de um problema, como uma forma de descrever se determinada propriedade

    verificada ou no para uma dada classe de entrada.

    Investigao da solucionabilidade de um problema a investigao da existncia de um algoritmo capaz de resolv-lo.

    Noo intuitiva de algoritmo 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.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Mquina Universal Se for possvel representar qualquer algoritmo como um programa em tal mquina, ento esta denominada de mquina universal.

    As evidncias de que uma mquina universal: Evidncia Interna. Consiste na demonstrao de que qualquer

    extenso das capacidades da mquina universal proposta computa, no mximo, a mesma classe de funes, ou seja, no aumenta o seu poder computacional;

    Evidncia Externa. Consiste no exame de outros modelos que definem a noo de algoritmo, juntamente com a prova de que so, no mximo, computacionalmente equivalentes.

    Mquina Norma, uma mquina universal um conjunto de registradores naturais trs instrues sobre os registradores:

    operao de incrementar um - sucessor operao de decrementar um - antecessor teste se o valor armazenado zero.

    Mquina de Turing, proposta em 1936 por Alan Turing modelo mais utilizado como formalizao de algoritmo um mecanismo simples que formaliza a idia de uma pessoa que

    realiza clculos usando um instrumento de escrita e um apagador modelo formal baseado em

    uma fita (usada para entrada, sada e rascunho), uma unidade de controle um programa

    Na realidade, no se trata de uma mquina no sentido dado a essa

    palavra, mas sim de um programa para uma mquina universal.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Hiptese de Church, apresentada em 1936 por Alonzo Church afirma que qualquer funo computvel pode ser processada por

    uma Mquina de Turing, que existe um algoritmo expresso na forma de Mquina de Turing

    capaz de processar a funo. Como a noo intuitiva de algoritmo no matematicamente

    precisa, impossvel formalizar uma demonstrao de que a Mquina de Turing , efetivamente, o mais genrico dispositivo de computao.

    Entretanto, todas as evidncias internas e externas imaginadas foram sempre verificadas, reforando a Hiptese de Church.

    Os demais modelos de mquinas propostos, bem como qualquer extenso de suas capacidades, possuem, no mximo, a mesma capacidade computacional da Mquina Turing.

    Mquina de Post. Baseada na estrutura de dados do tipo fila (o

    primeiro dado armazenado o primeiro a ser recuperado); Autmato com Pilhas. Baseada na estrutura de dados do tipo pilha

    (o ltimo dado armazenado o primeiro a ser recuperado), onde so necessrias pelo menos duas pilhas para simular o mesmo poder computacional de uma fita ou fila.

    Extenses da Mquina de Turing no aumentam o seu poder computacional

    No-Determinismo. Permite que a mquina possa tentar diversos caminhos alternativos para uma mesma situao;

    Mltiplas fitas. Mais de uma fita. Mltiplas cabeas Fita infinita de ambos os lados

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Uso de Mquinas de Turing Existem trs maneiras de abordar o estudo das Mquinas de

    Turing

    a) Processar Funes. Funes computveis e suas propriedades;

    b) Reconhecer Linguagens. Linguagens que podem ser

    reconhecidas e suas propriedades;

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

    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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.1 Codificao de Conjuntos Estruturados codificao de conjuntos estruturados, onde elementos de tipos

    de dados estruturados so representados como nmeros naturais.

    Para um dado conjunto estruturado X, a idia bsica definir uma funo injetora c: X N, onde, para todo x, y X, tem-se que: se c(x) = c(y), ento x = y nesse caso, o nmero natural c(x) a codificao do elemento estruturado x.

    EXEMPLO 3.1 Codificao de n-Uplas Naturais. Suponha que desejado codificar, de forma unvoca, elementos de Nn como nmeros naturais, ou seja, deseja-se uma funo injetora

    c: Nn N. Uma codificao simples a seguinte: a) lembre-se de que, pelo Teorema Fundamental da Aritmtica, cada

    nmero natural univocamente decomposto em seus fatores primos;

    b) suponha os n primeiros nmeros primos denotados por p1 = 2, p2 = 3, p3 = 5 e assim sucessivamente.

    Ento, a codificao c: Nn N definida como segue unvoca (suponha (x1, x2, ..., xn) em N

    n e que o smbolo denota a operao de multiplicao nos naturais):

    c(x1, x2, ..., xn) = p1x1p2x2...pnxn Deve-se reparar que essa codificao no constitui uma funo bijetora, ou seja, nem todo nmero natural corresponde a uma n-upla. Entretanto, todo nmero natural decomponvel nos n primeiros nmeros primos corresponde a uma n-upla.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    EXEMPLO 3.2 Codificao de Programas Monolticos.

    Um programa monoltico pode ser codificado como um nmero natural.

    Suponha um programa monoltico P = (I, r) com m instrues rotuladas onde {F1, F2, ..., Ff} e {T1, T2, ..., Tt} so os correspondentes conjuntos de identificadores de operaes e testes, respectivamente.

    Seja P' = (I, 1) como P, exceto pelos rtulos, os quais so renomeados como nmeros naturais, onde 1 o rtulo inicial, e o 0 nico rtulo final (se existir).

    Assim, uma instruo rotulada pode ser de uma das duas seguintes formas:

    a) Operao. r1: faa Fk v_para r2

    b) Teste. r

    1: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. (0, k, r2, r2) b) Teste. (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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    A seguir, ilustrado como, a partir de um nmero natural que denota um programa monoltico, pode-se recuperar o programa original. Suponha o nmero p = (2150)(3105) Portanto, o programa possui duas instrues rotuladas correspondentes aos nmeros 150 e 105. Relativamente s decomposies em seus fatores primos, tem-se que: 150 = 21315270 e 105 = 20315171 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: faa F v_para 2 2: se T ento v_para 3 seno v_para 5 3: faa G v_para 4 4: se T ento v_para 1 seno v_para 0 5: faa F v_para 6 6: se T ento v_para 7 seno v_para 2 7: faa G v_para 8 8: se T ento v_para 6 seno v_para 0

    b) M2: 1: faa F v_para 2 2: se T ento v_para 3 seno v_para 1 3: faa G v_para 4 4: se T ento v_para 1 seno v_para 0

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.2 Mquina de Registradores - Norma A Mquina Universal Norma (Number TheOretic Register

    MAchine) possui como memria um conjunto infinito de registradores naturais e trs instrues sobre cada registrador: adio e subtrao do valor um e teste se o valor armazenado zero.

    Ndenota o conjunto de todas as uplas com infinitos (mas contveis) componentes sobre o conjunto dos nmeros naturais .

    Para evitar subscritos, as componentes das uplas so denotadas por letras maisculas como A, B, X, Y, ..., as quais denotam os registradores na Mquina Norma.

    Definio 3.1. Mquina Norma. A Mquina Norma uma sete-upla (suponha que K seja um registrador, K { A, B, X, Y,... }): Norma = (N, N, N, ent, sai, { adK, subK }, { zeroK }) a) Cada elemento do conjunto de valores de memria N denota uma

    configurao de seus infinitos registradores, os quais so denotados por: A, B, X, Y, ...

    b) A funo de entrada: ent: N N tal que carrega no registrador denotado por X o valor de entrada, inicializando todos os demais registradores com zero;

    c) A funo de sada: sai: N N tal que retorna o valor corrente do registrador denotado por Y;

    d) O conjunto de interpretaes de operaes uma famlia de operaes indexada pelos registradores, na qual, para cada registrador K { A, B, X, Y,... }, tem-se que:

    adK: N N adiciona um componente correspondente ao registrador K, deixando as demais com seus valores inalterados. K:=K+1

    subK: N N subtrai um da componente correspondente ao registrador K, se o seu valor for maior que zero (caso contrrio, mantm o valor zero), deixando as demais com seus valores inalterados. K:=K-1

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

    zeroK: N { verdadeiro, falso } resulta em verdadeiro, se a componente correspondente ao registrador K for zero e em falso, caso contrrio. K=0?

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.3 Mquina Norma como Mquina Universal uma mquina extremamente simples, de tal forma que parece

    difcil acreditar que o seu poder computacional , no mnimo, o de qualquer computador moderno.

    Caractersticas de mquinas reais so simuladas usando a Mquina Norma, reforando as evidncias de que se trata de uma mquina universal.

    As caractersticas so as seguintes: a) Operaes e Testes. Definio de operaes e testes mais

    complexos como adio, subtrao, multiplicao e diviso de dois valores e tratamento de valores diversos como os nmeros primos;

    b) Valores Numricos. Armazenamento de tratamento de valores numricos de diversos tipos como inteiros (negativos e no-negativos) e racionais;

    c) Dados Estruturados. Armazenamento de tratamento de dados estruturados como em arranjos (vetores uni e multidimensionais), pilhas, etc;

    d) Endereamento Indireto e recurso. Desvio para uma instruo determinada pelo contedo de um registrador;

    e) Cadeia de Caracteres. Definio e manipulao de cadeias de caracteres.

    3.3.1 Operaes e Testes EXEMPLO 3.3 Atribuio do Valor Zero a um Registrador A.

    Programa Iterativo A := 0: at A = 0 faa (A := A 1)

    pode-se tratar a operao A := 0 como uma macro, ou seja, um trecho de programa que substitudo pela sua definio sempre que referenciado.

    Usando a macro A := 0, fcil construir macros para definir operaes de atribuio de um valor qualquer.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    EXEMPLO 3.4 Atribuio de um Valor Natural a um Registrador. A macro de atribuio de um valor natural n a um registrador A,

    A := n, a generalizao do programa abaixo. Programa Iterativo n := 3:

    A := 0; A := A+1; A := A+1; A := A+1 EXEMPLO 3.5 Adio de Dois Registradores.

    A macro correspondente operao de adio do valor do registrador B ao do registrador A, denotada por: A : = A + B

    Programa Iterativo A : = A + B: at B = 0 faa (A := A + 1; B := B - 1)

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

    EXEMPLO 3.6 Adio de Dois Registradores, Preservando B A macro correspondente operao de adio do valor do

    registrador B ao do registrador A, preservando o valor em B, necessita usar um registrador auxiliar C

    Programa Iterativo A := A + B usando C C := 0; at B = 0 faa (A := A + 1; C := C + 1; B := B - 1); at C = 0 faa (B := B + 1; C := C - 1)

    como este programa no preserva o contedo original do registrador de trabalho C, faz-se necessrio explicitar o uso deste registrador.

    necessrio escolher um registrador de trabalho C que no seja usado!

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    EXEMPLO 3.10 Atribuio do n-simo nmero primo ao registrador. Programa Iterativo A := primo(B) usando D

    A := 1; D := B; at D = 0 faa (D := D - 1; A := A + 1; at teste_primo(A) usando C faa (A := A + 1) )

    a atribuio do n-simo nmero primo a um registrador A, usando um registrador de trabalho D,

    usa a macro teste_primo construda acima (suponha que 1 o 0-simo nmero primo)

    3.3.2 Valores Numricos

    Norma pode definir inteiros e racionais?

    EXEMPLO 3.11 Inteiros. Um valor inteiro m pode ser representado como um par ordenado: (s, m) onde:

    m denota magnitude dada pelo valor absoluto de m; s denota o sinal de m: se m < 0,

    ento s = 1 (negativo) seno s = 0 (positivo)

    Como representar pares ordenados em Norma?

    usando codificao de n-uplas naturais como introduzido em 3.1; usando dois registradores, o primeiro referente ao sinal, e o

    segundo, magnitude.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Representao de Inteiros utilizando dois registradores Supor que o registrador inteiro A representado pelo par (A1, A2)

    na representao conhecida como sinal-magnitude, ou seja, A1 (sinal) e A2 (magnitude ).

    necessrio desenvolver programas em Norma para executar as

    operaes inteiras A := A+1, A := A-1 e o teste A = 0?

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

    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 )

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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

    EXERCCIO: Desenvolva os programas iterativos em Norma que 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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

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

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

    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 4) Programa Iterativo zeroA(B) usando C C := primo(B) (se teste_div(A, B) ento falso seno verdadeiro)

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Observao3.2: Arranjo Unidimensional Norma com 2 Registradores. Usando a estrutura de arranjo unidimensional com indexao direta, pode-

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

    topo

    base

    desempilhaempilha

    sentidode

    crescimento

    Figura 3.1 Estrutura do tipo pilha

    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.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.3.4 Endereamento Indireto e Recurso Como definir desvios, usando endereamento indireto

    (determinado pelo contedo de um registrador) em programas do tipo monoltico?

    EXEMPLO 3.15 Endereamento Indireto em um Programa Monoltico.

    Uma operao com endereamento indireto da seguinte forma, onde A um registrador:

    r: faa F v_para A

    pode ser definida pelo seguinte programa monoltico: r: faa F v_para End_A

    vf

    parada

    partida

    A = 0A : = A - 1 0

    vfA = 0A : = A - 1 A : = A + 1

    ... 1vf

    A = 0A : = A - 1 A : = A + 1

    k

    ProgramaMonoltico

    End_A

    Figura 3.2 Fluxograma para tratar endereamento indireto

    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

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.4 Mquina de Turing proposta por Alan Turing em 1936; universalmente conhecida e aceita como formalizao de algoritmo; trata-se de um mecanismo simples que formaliza a idia de uma pessoa

    que realiza clculos; possui, no mnimo, o mesmo poder computacional de qualquer

    computador de propsito geral; no constitui uma mquina, como definida anteriormente, mas sim um

    programa para uma mquina universal.

    3.4.1 Noo Intuitiva O ponto de partida de Turing foi analisar a situao na qual uma pessoa,

    equipada com um instrumento de escrita e um apagador, realiza clculos em uma folha de papel organizada em quadrados.

    Inicialmente, a folha de papel contm somente os dados iniciais do problema.

    O trabalho da pessoa pode ser resumido em seqncias de operaes simples como segue: ler um smbolo de um quadrado; alterar um smbolo em um quadrado; mover os olhos para outro quadrado; quando encontrada alguma representao satisfatria para a

    resposta desejada, a pessoa termina seus clculos. Para viabilizar esse procedimento, as seguintes hipteses so aceitveis:

    a natureza bidimensional do papel no um requerimento essencial para os clculos.

    assumido que o papel consiste de uma fita infinita organizada em quadrados (clulas);

    conjunto de smbolos pode ser finito; conjunto de estados da mente da pessoa durante o processo de

    clculo finito. existem dois estados em particular: estado inicial e estado final,

    correspondendo ao incio e ao fim dos clculos, respectivamente; comportamento da pessoa a cada momento determinado somente pelo

    seu estado presente e pelo smbolo para o qual sua ateno est voltada; a pessoa capaz de observar e alterar o smbolo de apenas um quadrado de

    cada vez, bem como de transferir sua ateno somente para um dos quadrados adjacentes.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.4.2 Noo como Mquina

    I a b b c a ...

    controle

    fita

    cabeada fita unidade de

    controle

    marcador deincio de fita branco

    entrada

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

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

    ao alfabeto de entrada, ao alfabeto auxiliar branco b 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.

    Programa ou Funo de Transio. 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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

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

    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 { , b })

    para determinar: novo estado q Q, smbolo a ser gravado av ( V { , b }) sentido de movimento da cabea esquerda (E) e direita

    (D) m{E, D}

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    O programa pode ser representado como um grafo finito (p, au) = (q, av, m)

    novo estado

    smbolo lido

    estado corrente

    smbolo gravado

    sentido do movimento

    (au, av, m)qp

    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)

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

    Figura 3.6 Representao da Funo Programa como uma tabela

    O processamento de uma Mquina de Turing M=(,Q, , q0, F, V, , b) 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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    A parada pode ser de duas maneiras: aceitando ou rejeitando a entrada w. 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.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.4.4 Mquinas de Turing como Reconhecedores de

    Linguagens Uma das abordagens do estudo das Mquinas de Turing ou das

    Mquinas Universais em geral como reconhecedores de linguagens, ou seja, dispositivos capazes de determinar se uma dada palavra sobre o alfabeto de entrada pertence ou no a uma certa linguagem.

    Definio 3.7 Linguagem Aceita por uma Mquina de Turing. Seja M = (, Q, , q0, F, V, , b) uma Mquina de Turing.

    Ento: a) A linguagem aceita por M, denotada por ACEITA(M) ou L(M), o

    conjunto de todas as palavras pertencentes a * aceitas por M, ou seja:

    ACEITA(M)={wM ao processar w*, pra em um estado qfF} b) A linguagem rejeitada por M, denotada por REJEITA(M), o

    conjunto de todas as palavras de * rejeitadas por M, ou seja: REJEITA(M) = {wM ao processar w*, pra em um estado q F} c) A linguagem para a qual M fica em loop infinito, denotada por

    LOOP(M) conjunto de todas as palavras de * para as quais M fica processando indefinidamente. As seguintes afirmaes so verdadeiras:

    ACEITA(M) REJEITA(M) = ACEITA(M) LOOP(M) = REJEITA(M) LOOP(M) = ACEITA(M) REJEITA(M) LOOP(M) = ACEITA(M) REJEITA(M) LOOP(M) = *

    ACEITA(M) REJEITA(M)

    LOOP(M)

    *

    Conseqentemente, o complemento de: ACEITA(M) REJEITA(M) LOOP(M) REJEITA(M) ACEITA(M) LOOP(M) LOOP(M) ACEITA(M) REJEITA(M)

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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}, , b)

    ACEITA(MT_Duplo_Bal) = Duplo_Bal REJEITA(MT_Duplo_Bal) = * - Duplo_Bal LOOP(MT_Duplo_Bal) =

    q0 q1 q2

    q3

    q4

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

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

    (a, A, D) (b, B, E)

    (A, A, D)

    (B, B, D)

    (, , E)

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

    (I, I, D)

    b a b A B q0 (q0, b, D) (q1, A, D) (q3, B, D) (q4, , D) q1 (q1, a, D) (q2, B, E) (q1, B, D) q2 (q2, a, E) (q0, A, D) (q2, B, E) q3 (q3, B, D) (q4, , E) q4

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

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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 A B B ...A

    q3

    A B B ...

    A

    q2

    A B B ...

    A

    q3

    A B B ...

    A

    q1

    A B b ...

    A

    q2

    A B B ... A

    q0

    A B B ...

    A

    q1

    A B b ...

    A

    q2

    a B b ... A

    q2

    a B b ...

    A

    q0

    a B b ...

    A

    q1

    a b b ...I I I

    I I I

    I I I

    I I I

    ...a

    q0

    a b b I...a

    q0

    a b b I A

    q1

    a b b ...I

    q4

    Figura 3.9 Computao de uma Mquina de Turing

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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}

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.4.5 Mquinas de Turing como Processadores de Funes O estudo restrito s funes de mapeamento de palavras de um alfabeto em uma palavra do mesmo alfabeto. Definio 3.10 Funo Turing-Computvel. Uma funo parcial: f: (*)n * dita Funo Turing-Computvel ou simplesmente Funo Computvel se existe uma Mquina de Turing: M = ( { # }, Q, , q0, F, V, , b) que computa f, ou seja: a) Para (w1, w2, , wn) (*)n, tem-se que a palavra de entrada para

    M : b w1 w2 wn b) Se f definida para (w1, w2, , wn), ento o processamento de M

    para a entrada b w1 w2 wn tal que: pra (aceitando ou rejeitando); o contedo da fita (excetuando-se os smbolos brancos):

    b w c) Se f indefinida para (w1, w2, , wn), ento M, ao processar a

    entrada b w1 w2 wn , fica em loop infinito. Observao 3.11: Funo Turing-Computvel Condio de Parada.

    Na definio acima, considerado como resultado do processamento de M somente o contedo gravado na fita, sendo irrelevante o estado de parada da mquina.

    Portanto, relativamente a funo computvel, um processamento que pra em um estado no-final perfeitamente vlido. o

    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, , b) que computa f e sempre pra para qualquer entrada.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

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

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

    b a b # q0 (q0, b, D) (q0, a, D) (q0, b, D) (q0, #, D) (q1, , E) q1 (q2, , E) (q3, , E) (q4, , E) q2 (q2, a, E) (q3, a, E) (q4, a, E) q3 (q2, b, E) (q3, b, E) (q4, b, E) q4

    q0

    q1

    q2 q3

    q4

    (, , E)

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

    (a, , E) (b, , E)

    (a, a, E) (b, b, E)

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

    (#, , E)

    (b, a, E)

    (a, b, E)

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

    O programa recebe como entrada a palavra: b w1 # w2. posiciona a cabea no ltimo smbolo da palavra de entrada. move a cabea para a esquerda at encontrar o smbolo #, quando pra.

    Enquanto move a cabea, ao ler um smbolo, grava sobre este o smbolo lido anteriormente.

    A memorizao do smbolo anterior realizada pelos estados como segue: q2 memoriza que o smbolo anterior a; q3 memoriza que o smbolo anterior b.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    EXEMPLO 3.20 Mquina de Turing Funo Quadrado. A funo quadrado: { 1 }* { 1 }* tal que associa o valor natural n,

    representado em unrio, ao valor n2 (tambm em unrio). A Mquina de Turing:

    Quadr = ({1}, { q0, q1, q2, ..., q13 }, , q0, { q13 }, { A, B, C}, , b)

    b 1 A B C q0 (q0, b, D) (q1, A, D) (q0, B, D) (q3, , E) q1 (q1, 1, D) (q1, B, D) (q2, B, E) q2 (q2, 1, E) (q0, A, D) (q2, B, E) q3 (q13, b, D) (q4, , E) q4 (q5, A, D) (q4, B, E) q5 (q6, C, E) (q12, , E) q6 (q7, b, D) (q6, 1, E) (q6, C, E) q7 (q8, A, D) q8 (q9, A, D) (q11, C, D) q9 (q9, 1, D) (q9, B, D) (q9, C, D) (q10, 1, E) q10 (q10, 1, E) (q8, A, D) (q10, B, E) (q10, C, E) q11 (q12, 1, E) (q6, C, E) (q11, C, D) q12 (q13, b, D) (q12, 1, E) (q12, 1, E) q13

    O programa recebe como entrada a palavra: b n1 , onde n1 denota o valor n representado em unrio sobre { 1 }.

    (n1)2 simplesmente n1 concatenado consigo mesmo n vezes, ou seja: (n1)2 = n1 n1 .... n1 (n vezes) A concatenao obtida por: Em q0, q1 e q2, gerado bnA 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 b 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 b 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 :

    n + (n-1) * n = n + (n2 - n) = n2

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    q0 q1 q2

    q3

    (, B, E)

    (I, I, D)(B, B, D)

    (1, A, D)

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

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

    (A, A, D)(, , E)

    q4

    (B, , E)

    (B, B, E)

    q5

    (A, A, D)

    q6(B, C, E)

    (A, 1, E)(C, C, E)

    q7

    (I, I, D)q8

    (1, A, D)

    q11

    (C, C, D)

    (B, C, E)

    (C, C, D)

    q9

    (1, A, D)

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

    q10

    (, 1, E)

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

    (A, A, D)(, , E)

    q12(1, 1, E)

    (I, I, D)

    q13

    (I, I, D)

    (A, 1, E)(C, 1, E)

    Figura 3.12 Grafo da Mquina de Turing Funo Quadrado

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.4.6 Equivalncia entre as Mquinas de Turing e Norma

    Prova-se que a Mquina de Turing equivalente Mquina Norma.

    Reforam-se as evidncias de que ambas so Mquinas Universais

    Resumidamente, a prova como segue: a) Turing Norma.

    A estrutura de fita da Mquina de Turing simulada em Norma usando uma estrutura de arranjo unidimensional;

    b) Norma Turing.

    Conforme observado anteriormente os registradores X e Y so suficientes para realizar qualquer processamento em Norma.

    A Mquina de Turing pode simular os dois registradores X e

    Y como segue: O contedo de cada registrador (valor natural)

    implementado de forma unria em Turing; O registrador X ocupa as clulas mpares da fita, e

    Y, as pares.

    Lembre-se de que, no conceito de simulao, necessrio considerar funes de codificao e decodificao para permitir comparar mquinas com diferentes conjuntos de entrada e sada.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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, , b). 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 b como zero e n+1, respectivamente.

    Estados Para os estados de Q ={q0, q1,, qn} em M, o programa P possui

    correspondentes instrues rotuladas por 0, 1, , n; O rtulo inicial de P 0 (pois q0 o estado inicial de M), e, para qualquer

    qf F, f rtulo final; Estado Corrente 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); Cabea da Fita A posio corrente da cabea da fita de M simulada usando o registrador C

    de Norma, o qual contm a posio corrente do arranjo em X e inicializado com o valor 1; Funo Programa A funo programa de M pode ser simulada por um programa P de

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

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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;

    3) As macros End_A e End_Q referem-se ao endereamento

    indireto definido anteriormente. O contedo do registrador A denotado por a.

    Rtulo final A cada rtulo final f corresponde o seguinte trecho de programa em P, o qual

    especifica que o contedo de X ("fita") atribudo a Y (pois em Norma a funo de sada retorna o valor do registrador Y):

    f: faa Y := X v_para fim

    fim: Decodificao.

    o inverso da codificao acima.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Teorema 3.16 Mquina Norma Mquina de Turing

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

    Prova: Seja o programa monoltico P de Norma, com somente dois

    registradores X e Y A simulao do programa P de Norma por uma Mquina de

    Turing M = (, Q, , q0, F, V, , b) 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 b);

    Rtulos A cada rtulo r de instruo de P corresponde um estado qr de M. Aos rtulos

    inicial e finais correspondem os estados inicial e finais, respectivamente; Programa - Uma instruo rotulada de P da seguinte forma ADIO r: faa adK v_para s pode ser simulada por um trecho da funo programa de M resumido:

    1) No estado qr, move a cabea, pesquisando as clulas pares (caso K = X) ou mpares (caso K = Y) at encontrar o primeiro branco, o qual substitudo pelo smbolo 1;

    2) Reposiciona a cabea no incio da fita e assume o estado qs;

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    SUBTRAO r: faa subK v_para s pode ser simulada por um trecho da funo programa de M resumido

    1) No estado qr, move a cabea, pesquisando as clulas pares (caso K = X) ou mpares (caso K = Y) at encontrar o ltimo smbolo 1, o qual substitudo por um branco. Caso a primeira clula pesquisada j contenha o smbolo branco, nada substitudo;

    2) Reposiciona a cabea no incio da fita e assume o estado qs

    TESTE r: se zeroK v_para s seno v_para t

    pode ser simulada por um trecho da funo programa de M resumido como segue:

    1) No estado qr, move a cabea, pesquisando a primeira clula par (caso K = X) ou mpar (caso K = Y);

    2) Caso a clula pesquisada contenha o smbolo branco, reposiciona

    a cabea no incio da fita e assume o estado qs; caso contrrio, reposiciona a cabea no incio da fita e assume o estado qt.

    Codificao. contedo inicial do registrador X codificado em unrio nas

    clulas pares da fita de M; Decodificao.

    o inverso da codificao acima.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.5 Outros Modelos de Mquinas Universais

    Mquina de Post. A principal caracterstica da Mquina de Post que usa uma

    estrutura de dados do tipo fila para entrada, sada e memria de trabalho.

    Estruturalmente, a principal caracterstica de uma fila que o primeiro valor gravado tambm o primeiro a ser lido (uma leitura exclui o dado lido).

    dados armazenados

    leiturade

    dados

    gravaodedados

    inciodafila

    fimdafila

    Figura 3.13 Estrutura do tipo fila Mquina com Duas Pilhas.

    A principal caracterstica da Mquina de Duas Pilhas que usa estrutura do tipo pilha como memria de trabalho.

    So necessrias duas pilhas para que a Mquina seja, de fato, Universal.

    topo

    base

    desempilhaempilha

    sentidode

    crescimento

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.5.1 Mquina de Post

    Uma Mquina de Post consiste de duas partes: 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.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Componentes elementares de um diagrama de fluxos a) Partida. Existe somente uma instruo de incio em um programa b) Parada. Existem duas alternativas de instrues de parada em um programa,

    uma de aceitao e outra de rejeio:

    partida aceita rejeita

    c) Desvio (ou leitura com teste). X ler (X) denota o comando que l o smbolo mais esquerda da palavra armazenada em X, retirando o primeiro smbolo.

    uma instruo composta de uma leitura do smbolo esquerda (incio da fila), excluindo-o da fila e desviando o fluxo do programa de acordo com o smbolo lido;

    fluxo do programa determinado de acordo com o smbolo mais esquerda da palavra.

    deve ser prevista a possibilidade de X conter a palavra vazia. Portanto, um desvio condicional, e trata-se de uma funo total, estando

    definida para todos os valores do domnio. Se o cardinal de n, ento existem n+2 arestas de desvios condicionais,

    pois se deve incluir as possibilidades # e , XLer (X)

    a1 a2 an # ...

    d) Atribuio. XXs uma instruo de concatenao, gravando o smbolo indicado (pertencente

    a { # }) direita da palavra armazenada na varivel X (fim da fila). A operao de atribuio representada a seguir, supondo que s { # }.

    X Xs

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    EXEMPLO 3.21 Mquina de Post Duplo Balanceamento. Considere a seguinte linguagem Duplo_Bal = { anbn n 0 } A Mquina de Post: Post_Duplo_Bal = ({ a, b }, D, #) onde D , como ilustrado abaixo, tal que:

    ACEITA(Post_Duplo_Bal) = Duplo_Bal REJEITA(Post_Duplo_Bal) = * - Duplo_Bal LOOP(Post_Duplo_Bal) = .

    a b #,

    X ler (X)

    rejeita

    X X#

    a b, #

    X ler (X)

    rejeita aceita

    partida

    X Xa

    b # a,

    X ler (X)

    rejeitaX Xb X X#

    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.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

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

    Prova: Seja a Mquina de Turing M = (, Q, , q0, F, V, , b). 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;

    I a1 a2 a3 ... an ...

    controle

    a4

    X = a3 a4 ... an # a1 a2 b) Movimento para a Esquerda.

    I a1 a2 A3 ... an ...

    controle

    a4

    I a1 a2 a3 ... an ...

    controle

    a4antes

    depois

    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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    c) Movimento para a Direita.

    I a1 A2 a3 ... an ...

    controle

    a4

    I a1 a2 a3 ... an ...

    controle

    a4antes

    depois

    contedo da varivel X antes do movimento X = a2 a3 a4 ... an # a1

    Para simular o movimento para a direita da cabea necessrio

    alterar o contedo de X como segue, o que trivial: X = a3 a4 ... an # a1 A2

    d) Estados. A simulao dos estados como segue:

    Estado Inicial. Simulado pela instruo partida; Estados Finais. Simulados pela instruo aceita; Demais Estados. Cada estado corresponde a uma instruo desvio (leitura com teste);

    e) Condies de Rejeio.

    As condies de rejeio da Mquina de Turing (funo programa indefinida ou movimento invlido) so simuladas em Post por rejeita.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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, { # }, , b) 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

    I a1 a2 a3 ...

    controle

    am # am+1 ... an ...

    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

    I a2 a3 ...

    controle

    am # am+1 ... an ...

    I a1 a2 a3 ...

    controle

    am # am+1 ... an ...antes

    depois

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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.

    I a1 ...

    controle

    am # am+1 ... an ...antes

    I a1 ...

    controle

    am # am+1 ... an s ...depois

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

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.5.2 Mquina com Pilhas Definio 3.20 Mquina com Pilhas. Uma Mquina com Pilhas uma dupla: M = (, D) onde:

    alfabeto de smbolos de entrada; D programa ou diagrama de fluxos construdo a partir de

    componentes elementares denominados partida, parada, desvio, empilha e desempilha.

    Uma Mquina com Pilhas consiste, basicamente, de trs partes: a) Varivel X. De entrada, similar da Mquina de Post, mas usada

    somente para entrada; b) Variveis Yi. Do tipo pilha, utilizadas como memria de trabalho; c) Programa. uma seqncia finita de instrues, representado como um diagrama de fluxos onde cada vrtice uma instruo.

    As instrues podem ser de cinco tipos: partida, parada, desvio, desempilha e empilha.

    A varivel X no possui tamanho nem limite fixos. Os smbolos

    pertencem ao alfabeto de entrada. Inicialmente, o valor de X a palavra de entrada, e seu comprimento igual ao comprimento da palavra corrente armazenada. Caso X no contenha smbolos, a entrada vazia, representada por .

    As variveis Yi, em nmero varivel mas finito, tambm no possuem tamanho nem limite fixos, e os smbolos pertencem ao alfabeto de entrada. Inicialmente, o valor de cada pilha Yi a palavra vazia, e seu comprimento igual ao comprimento da palavra corrente armazenada.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    As componentes elementares de um diagrama de fluxos so: a) Partida. Existe somente uma instruo de incio (partida) em um

    programa. b) Parada. Existem duas alternativas de instrues de parada em um

    programa: uma de aceitao (aceita), e outra de rejeio (rejeita).

    partida aceita rejeita

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

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

    X ler(X)

    a1 a2 an ...

    Yi ler(Yi)

    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

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

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

    b

    a

    b, rejeita

    aceita

    partida

    X ler(X) Y aYa

    Y ler(Y)

    X ler(X)b rejeitaa

    Y ler(Y)

    rejeitaa,b

    Figura 3.27 Diagrama de Fluxo da Mquina com Pilhas Duplo Balanceamento

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

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

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

    c

    Y1 ler(Y1) rejeitaa,b,c

    X ler(X) rejeita

    b

    a

    b,c,rejeitaY1 ler(Y1)

    b

    Y2 bY2

    aceita

    rejeita

    Y2 ler(Y2) a,c,

    a,b,c

    X ler(X) rejeita

    b

    c a,b

    Y2 ler(Y2) rejeita

    partida

    X ler(X)Y1 aY1 a

    Y1 ler(Y1)a,b,c

    aceita

    rejeita

    crejeita

    a,

    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.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    EXEMPLO 3.24 Mquina com Pilhas Prefixo. Considere a seguinte linguagem: Prefixo_aaa={ww{a,b}* e w contm a subpalavra aaa como prefixo}

    Pilhas_Prefixo_aaa = ({ a, b }, D) onde D tal que:

    ACEITA(Pilhas_Prefixo_aaa ) = Prefixo_aaa REJEITA(Pilhas_Prefixo_aaa ) = * - Prefixo_aaa

    LOOP(Pilhas_Prefixo_aaa ) =

    a

    a

    b, rejeita

    aceita

    partida

    X ler(X)

    X ler(X) rejeitaa

    a,b

    X ler(X)

    X ler(X)

    b, rejeita

    b,

    Figura 3.29 Diagrama de Fluxo da Mquina com Pilhas Prefixo

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.5.3 Autmato com Duas Pilhas Autmato com Duas Pilhas ou simplesmente Autmato com

    Pilhas possui a memria de entrada separada das memrias de trabalho e de sada.

    Essas estruturas auxiliares so do tipo pilha, e cada mquina possui duas pilhas.

    Um Autmato com Pilhas composto por: a) Fita. Dispositivo de entrada que contm a informao a ser

    processada; b) Duas Pilhas. Memrias auxiliares que podem ser usadas livremente

    para leitura e gravao; Uma pilha dividida em clulas, armazenando, cada uma, um

    smbolo do alfabeto auxiliar (pode ser igual ao alfabeto de entrada). Em uma estrutura do tipo pilha, a leitura ou gravao sempre na mesma extremidade (topo). No possui tamanho fixo e nem mximo, sendo seu tamanho corrente igual ao tamanho da palavra armazenada. Seu valor inicial vazio.

    c) Unidade de Controle. Reflete o estado corrente da mquina. Possui uma cabea de fita e uma cabea para cada pilha;

    A unidade de controle possui um nmero finito e predefinido de estados. Possui uma cabea de fita e uma cabea para cada pilha: Cabea da Fita. Unidade de leitura que acessa uma clula da fita

    de cada vez e movimenta-se exclusivamente para a direita. Cabea da Pilha. Unidade de leitura e gravao para cada pilha

    que move para cima ao gravar e para baixo ao ler um smbolo. Acessa um smbolo de cada vez, estando sempre posicionada no topo. A leitura exclui o smbolo lido.

    d) Programa ou Funo de Transio. Comanda a leitura da fita, a leitura e gravao das pilhas e define o estado da mquina.

    programa uma funo parcial que, dependendo do estado corrente, smbolo lido da fita e do smbolo lido de cada pilha, determina o novo estado e o smbolo a ser gravado em cada pilha.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Definio 3.21 Autmato com Duas Pilhas. Um Autmato com Duas Pilhas ou simplesmente Autmato com Pilhas M uma 6-upla: M = (, Q, , q0, F, V) 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 { }) 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: determina 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;

    novo estado;

    smbolo gravado em cada pilha (pode ser omitido).

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    (p, ?, a, ) = { (q, , b) } indica que se: no estado p; a entrada foi completamente lida (na

    fita); o topo da pilha 1 contm o smbolo a; no l da pilha 2;

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

    pilha 2.

    novo estado

    smbolo lido da fita

    estado corrente

    smbolo lido da pilha 1

    (x, a1, b1, a2, b2)p q

    smbolo gravado na pilha 1 smbolo lido da pilha 2

    smbolo gravado na pilha 2

    Figura 3.30 Representao da funo programa como um grafo

    processamento de um Autmato com Pilhas, para uma palavra de entrada w, consiste na sucessiva aplicao da funo programa para cada smbolo de w (da esquerda para a direita) at ocorrer uma condio de parada.

    Um exemplo simples de ciclo infinito um programa que empilha e desempilha um mesmo smbolo indefinidamente, sem ler da fita.

    As condies de parada so as seguintes: Estado Final. O autmato assume um estado final: o autmato

    pra, e a palavra de entrada aceita; Funo Indefinida. A funo programa indefinida para o

    argumento: o autmato pra, e a palavra de entrada rejeitada.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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.

    q0 q1

    qf

    (a, , B, , ) (b, B, , , )

    (?, ?, , ?, ) (?, ?, , ?, )

    (b, B, , , )

    Figura 3.31 Grafo do Autmato com Pilhas - Duplo Balanceamento

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    EXEMPLO 3.26 Autmato com Pilhas Triplo Balanceamento. Considere a linguagem: Triplo_Bal = { anbncn n 0 } O Autmato com Pilhas A2P_Triplo_Bal = ({ a, b }, { q0, q1, q2, qf }, , q0, { qf }, { B, C }) tal que ACEITA(A2P_Triplo_Bal) = Triplo_Bal (e sempre pra).

    q0 q1

    qf

    (a, , B, , ) (b, B, , , C)

    (?, ?, , ?, ) (?, ?, , ?, )

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

    (c, , ?, C, )

    Figura 3.32 Grafo do Autmato com Pilhas - Triplo Balanceamento

    No estado q0, para cada smbolo a lido da fita, armazenado um smbolo B na pilha 1.

    No estado q1, realizado um batimento, verificando se, para cada smbolo b da fita, existe um correspondente B na pilha 1, bem como armazenado na pilha 2 um smbolo C.

    Por fim, no estado q2, realizado um batimento, verificando se, para cada smbolo c da fita, existe um correspondente C na pilha 2.

    O algoritmo somente aceita se, ao terminar de ler toda a palavra de entrada, as pilhas estiverem vazias.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    3.6 Modificaes sobre as Mquinas Universais Mquinas Universais so equivalentes s diversas verses

    modificadas do modelo bsico, com caractersticas que supostamente aumentariam o poder computacional. 3.6.1 No-Determinismo no-determinismo uma importante generalizao dos modelos de

    mquinas. No caso da Mquina de Turing, para o mesmo estado corrente e

    smbolo lido, diversas alternativas so possveis. Cada alternativa percorrida de forma totalmente independente. Isso significa que as alteraes de contedo na fita realizadas em

    um caminho no modificam o contedo da mesma nos demais caminhos alternativos.

    A mesma idia vlida para a varivel X da Mquina de Post ou para as pilhas do Autmato com Pilhas.

    Genericamente, no-determinismo interpretado como: a mquina, ao processar uma entrada, tem como resultado um conjunto de

    novos estados. ela assume um conjunto de estados alternativos, como se houvesse uma

    multiplicao da unidade de controle, uma para cada alternativa, processando independentemente, sem compartilhar recursos com as demais.

    processamento de um caminho no influi no estado geral, nem no smbolo lido dos demais caminhos alternativos.

    Para uma mquina M no-determinstica, uma palavra w pertence a:

    ACEITA(M) se existe pelo menos um caminho alternativo que aceita a palavra.

    REJEITA(M) se todas as alternativas rejeitam a entrada. LOOP(M) se nenhum caminho aceita a palavra e pelo menos

    um fica em loop.

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    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

    q0 q1

    qf

    (a, , a, , )(b, , b, , )

    (?, ?, , ?, ) (?, ?, , ?, )

    (a, a, , , )(b, b, , , ) (a, a, , , )

    (b, b, , , )

    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.

  • 3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    ____________________________________________________________

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

    Teorema 3.23 Mquina de Turing Mquinas No-Determinsticas. O formalismo Mquina de Turing pode ser simulado pelos seguintes formalismos e vice-versa.

    a) Mquina de Turing No-Determinstica; b) Mquina de Post No-Determinstica; c) Autmato com Pilhas No-Determinstico.

    Uma importante aplicao do no-determinismo nos sistemas de computadores atuais o estudo dos sistemas concorrentes, em especial dos conceitos de multiprogramao e multiprocessamento.

    Multiprocessamento a existncia de duas ou mais unidades de processamento, realizando computaes simultneas.

    Multiprogramao um conceito lgico, normalmente implementado em nvel de sistema operacional, que permite manter ativo mais de um programa ao mesmo tempo.

    Isso significa que o uso de multiprocessamento, ou de multiprogramao, embora resultem em computadores mais eficientes e flexveis, no aumentam o seu poder computacional.

    importante destacar que o conceito de no-determinismo no deve ser confundido com o de concorrncia.

    3.6.2 Mquina de Turing com Fita Infinita Esquerda e Direita A modificao da definio bsica da Mquina de Turing,

    permitindo que a fita seja infinita dos dois lados, no aumenta o poder computacional.

    Simulao: as clulas pares representam a parte direita da fita, e as mpares, a parte esquerda. O smbolo b usado para controlar a fronteira entre as partes esquerda e direita.

    I a1 a-1 a2 ...a-2 a3 a-3

    a-3 a-2 a-1 a1 ...... a3a2

    Figura 3.34 Simulao de uma fita infinita dos dois lados

    3 MQUINAS UNIVERSAIS ________________________________________________________________________________________

    _____