Escolar Documentos
Profissional Documentos
Cultura Documentos
a Variável X. Trata-se de u ma variável do t ipo f ila que é utilizada como entrada, saída e
memória de trabalho.
I
início fim
da da
figura 7 .1
fila
~ Desvio ou teste. Determ ina o f luxo do prog rama de acordo com o sfmbolo mais à es- exemplo 7 .1 - Máquina de Post - duplo balanceamento
querda da pa lavra armazenada na variável X (início da fi la). Também deve ser prevista a Considere a seguinte linguagem introduzida anteriormente:
possibilidade de X conter a palavra vazia . Portanto, é um desvio condicional, e trata-se
Duplo_Bal = { a"b" 1 n .e!'! O}
de uma função tota l, ou seja, definida para todos os va lores do dom fnio. Assim, se o
cardinal de l: é n, então existem n+2 arestas de desvios condicionais, pois se deve incluir A máquina de Post:
as possibilidades# e e, como ilustrado na f igura 7 .3, onde X ~ ler(X) denota uma leitura Post_Duplo_Bal = ({ a, b }, D,#)
destrutiva ou seja, que lê o símbolo mais à esquerda da palavra, retirando da mesma o
sfmbolo lido. onde D é como ilustrado na figura 7 .5, é tal que:
ACEITA(Post_Duplo_Bal) = Duplo_Bal
REJEITA(Post_Duplo_Bal) ~ ~ * Duplo_Bal
X ler(X)
e, portanto, LOOP(Post_Duplo_Bal) =0
a # e partida
•••
figura 7 .3 Desvio em um diagrama de fluxos.
X X#
@ Atribuiçao. Concatena o símbolo indicado (pertencente a I U { # } ) à direita da palavra
armazenada na variável X (fim da fila) . A operação de atribuição é representada como
ilustrado na figura 7 .4, supondo que s E l: U { # }. O
X ler(X)
a b, t #
X .- Xs
'
X ler(X) e rejeita ) aceita
Em um d iag rama de fl uxos, existe somente uma instrução de partida, mas podem existir di-
X Xa rejeita
versas (zero ou mais) instruções de parada, tanto de aceitação como de rejeiçAo. Uma palavra
de entrada é aceita ou rejeitada se a computação, iniciada com a variável X, contendo a en-
trada, ating ir uma instrução aceita ou rejeita, respectivamente. Note-se que é perfeitamente
possível uma máquina de Post ficar em loop infinito (sugere-se, como exercício, exemplificar X ler(X)
um loop infinito).
O algoritmo lê e remove o primeiro símbolo a. Após, realiza uma varredura circular em busca A seguir, é enunciado o teorema que prova que a máquina de Post é equivalente à máquina
do correspondente b. Essa varredura é realizada por meio de sucessivas leituras (e remoções), de Turing, reforçando a evidência de que são máquinas universais. A prova é omitida e, resu-
armazenando-se o símbolo lido à direita de X. Ao encontrar o b, este é removido, e uma midamentel é como segue:
nova varredura circular é realizada até o fim da palavra de entrada (identificado pelo sfmbolo
a Máquina de Turing s máquina de Post.
auxiliar#, atribufdo a X no início do processamento). Esse ciclo é repetido até restar a palavra
• A estrutura de fita da máquina de Turing é simulada pela máquina de Post, usa ndo a
vazia ou ocorrer alguma condição de rejeição. Compare este algoritmo com o algoritmo cor-
variável X, onde a posição corrente da cabeça corresponde à primeira posição em X.
respondente para a máquina de Turing . Q
Por exemplol a f ita ilustrada na f igura 7.7 é simulada pela variável X com o seguinte
exemplo 7 .2 - Máquina de Post - duplo balanceamento em qualquer ordem conteúdo :
Considere a segu inte linguagem introduzida anteriormente: X = a3 a4 ... ªn # a, ª2
Duplo_Bal_2 = { w I w = anbn ou w = bnan, n ~ O} • o movimento para a esquerda da cabeça da fita exige a execução de tantas instruções
desvio e instruções atribuição quantos forem os símbolos da palavra corrente;
A máquina de Post:
• o movimento pa ra a d ireita da cabeça da fita exige a execução de uma instrução
Post_Duplo_Bal_2 = ({ a, b }, D, #) desvio (leitura com teste), consumindo um símbolo variável X (no início da fila) e a
correspondente atribuição (no fim da fila);
onde D é como ilustrado na figura 7 .6, é tal que:
• a simulação dos estados é como segue:
ACEITA(Post_Duplo_Bal_2) = Duplo_Bal_2 estado inicial é simulado pela instrução partida seguido pela execução de um
1
~
•••
X.-X#
controle
o a, # 1 ª m. 1 1 .. • p •••
controle
A máqyjna com pilhas diferencia-se das máquinas de Turing e de Post principalmente pelo
fato de possuir a memória de entrada separada das memórias de trabalho e de saída. Essas
estruturas auxiliares são do t ipo pilha, e cada máquina possui zero ou mais pilhas.
Um resultado importante que será detalhado ad iante é o fato de que a classe das máquinas com
duas pilhas possui o mesmo poder computacional que a classe das máquinas de Turing . Assim,
o uso de mais de duas pilhas não aumenta o poder das máquinas com pilhas. Entretanto, com