DescricaoMT
6 pág.

DescricaoMT


DisciplinaTeoria da Computação545 materiais16.681 seguidores
Pré-visualização2 páginas
Universidade Federal de Lavras 
Departamento de Ciência da Computação 
 
 
 
 
 
 
 
 
 
 
 
 
Descrição de Alto-nível de Máquinas de Turing: 
Definições, Convenções e Exemplos 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Disciplina: GCC108 \u2013 Teoria da Computação 
Material Complementar das aulas sobre Máquinas de Turing 
Prof. Dr.-Ing. Leonardo Andrade Ribeiro 
 
1) Descrições de Máquinas de Turing 
Foram apresentadas no curso duas alternativas para a descrição de Máquinas de Turing (MT): 
a definição formal e a definição de alto-nível. 
Descrição Formal 
Cada elemento da sétupla é formalmente definido; a função de 
transição de estados, , é representada sistematicamente através de um diagrama de estados, 
uma tabela, ou uma lista. 
Descrição de Alto-Nível 
Descrição em formato de pseudo-código. Neste formato, a palavra de entrada é definida 
explicitamente e as operações são descritas através de uma conjuntos de passos de 
processamento. Laços (loops) e ramificações (branches) são representados através de 
transições entre estes passos. 
Exemplo: 
MT = {Na palavra de entrada p: 
Passo 1: Leia o símbolo da fita. Se o símbolo lido for a, Rejeite. Caso contrário, mova 
a cabeça le para a direira e vá para o Passo 2. 
Passo 2: Leia o símbolo da fita. Se o símbolo lido for b, Rejeite. Se o símbolo lido for 
a, mova a cabeça le para a direita e vá para o Passo 1. Caso contrário, mova a cabeça 
de le para a direira e vá para o Passo 3. 
Passo 3: ...} 
 
Os objetos e operações utilizados no pseudo-código são definidos de acordo com os conceitos 
envolvendo Máquinas de Turing. Temos dois objetos básicos e quatro operações básicas: 
Objetos: Fita e cabeça le. 
Operações: Leitura de símbolo na fita; escrita de símbolo na fita; movimento da 
cabeça le para a esquerda; movimento da cabeça le. 
À partir das operações básicas, outras operações, mais complexas, podem ser utilizadas de 
acordo com as convenções definidas previamente (apresentadas na próxima seção), e com os 
objetivos do exercício. Como regra geral, em exercícios envolvendo a solução de problemas 
básicos deverão ser usadas operações básicas; exercícios envolvendo a solução de problemas 
complexos permitirão o uso de operações mais complexas. 
O pseudo-código poderá conter comentários representados da seguinte forma: 
/* Comentário */ ou // Comentário 
A seguir, apresentaremos algumas convenções que poderão ser usadas na resolução de 
qualquer exercício. 
2) Convenções 
\uf0b7 Vamos assumir que marcadores não fazem parte do alfabeto de entrada e, portanto, 
não é necessário explicitar isso na definição da MT; 
\uf0b7 Leia o símbolo atual da fita leia o símbolo da fita que encontra-se sob a cabeça le; 
\uf0b7 Quando não especificado explicitamente o contrário, o movimento da cabeça le é da 
esquerda para a direita; 
o Exemplo: \u201cLeia o próximo símbolo\u201d \u201cLeia o próximo símbolo à direita da 
posição atual da cabeça le\u201c; 
o Note que na definição formal, o movimento da cabeça le para a direita seria 
realizado na transição anterior; 
\uf0b7 Rebobinar a fita retorne a cabeça le para o ínicio da fita; 
\uf0b7 Final da fita leitura do símbolo \u201c\u2fd\u201c. 
 
3) Exemplo 
No exemplo a seguir, iremos apresentar três soluções para um exercício em diferentes níveis. 
As duas primeiras são soluções válidas para o exercício, ao passo que a terceira não é. 
Exercício 1: Projete uma MT que reconheça a linguagem | . Descreva-a 
em alto-nível. 
Solução 1: 
 Na palavra de entrada : 
Passo 1: Leia o símbolo atual da fita e realize uma das seguintes ações: 
1. Se for o símbolo (marcador), mova a cabeça para direita e repita Passo 1; 
2. Se for o símbolo , sobrescreva com , mova a cabeça le para a direita e vá 
para o Passo 2; 
3. Se for o final da fita, Aceite. 
4. Se for qualquer outro símbolo, Rejeite. 
 
 
Passo 2: Leia o símbolo atual da fita e realize uma das seguintes ações: 
1. Se for o símbolo ou o símbolo , mova a cabeça para direita e repita Passo 
2; 
2. Se for o símbolo , sobrescreva com , mova a cabeça le para a direita e vá 
para o Passo 3; 
3. Se for o final da fita, Rejeite. 
4. Se for qualquer outro símbolo, Rejeite. 
Passo 3: Leia o símbolo atual da fita e realize uma das seguintes ações: 
1. Se for o símbolo ou o símbolo , mova a cabeça para direita e repita Passo 
2; 
2. Se for o símbolo , sobrescreva com , rebobine a fita e vá para o Passo 1; 
3. Se for o final da fita, Rejeite. 
4. Se for qualquer outro símbolo, Rejeite.} 
/* Note que os testes em cada passo são realizados ordenamente. Portanto, teste só é 
realizado se o teste falha */ 
Soluçao 2: 
 Na palavra de entrada : 
Passo 1: Avance a cabeça le e procure pelo primeiro símbolo diferente de 
1. Se for o símbolo , sobrescreva com , vá para o Passo 2; 
2. Se for o final da fita, Aceite. 
3. Se for qualquer outro símbolo, Rejeite. 
Passo 2: Avance a cabeça le e procure pelo primeiro símbolo diferente de e de a 
1. Se for o símbolo , sobrescreva com , mova a cabeça le para a direita e vá 
para o Passo 3; 
2. Se for o final da fita ou qualquer outro símbolo, Rejeite. 
Passo 3: Avance a cabeça le e procure pelo primeiro símbolo diferente de e de b 
1. Se for o símbolo , sobrescreva com , rebobine a fita e vá para o Passo 1; 
2. Se for o final da fita ou qualquer outro símbolo, Rejeite} 
/* Solução 2 apresenta uma descrição mais alto-nível que Solução 1, mas ainda é válida*/ 
Solução 3: 
 Na palavra de entrada : 
Passo 1: Verifique se a palavra é vazia. Se for o caso, Aceite. 
Passo 2: Verifique se a palavra é composta por uma sequência de a\u2019s, seguida por uma 
sequência de b\u2019s que, por sua vez, é seguida por uma sequência de c\u2019s. Se for o caso, 
vá para o Passo 3. Caso contrário, Rejeite. 
Passo 3: Verifique se quantidade de a\u2019s, b\u2019s, e c\u2019s é a mesma. Se for o caso, Aceite. 
Caso contrário, Rejeite.} 
/*SOLUÇÃO INVÁLIDA: Solução 3 apresenta a correta intuição para resolver o problema, 
mas é demasiadamente de alto-nível. O objetivo do exercício é que seja demontrada a 
habilidade para controlar a sequência e quantidade dos símbolos através de operações sobre a 
fita e a cabeça le; esta habilidade não ficou demonstrada na Solução 3.*/ 
 
Considere agora o seguinte exércício: 
Exercício 2: Projete uma MT que receba uma lista de palavras sobre o alfabeto {a,b} 
separadas por # e que aceite se todas palavras são diferentes. Formalmente, a linguage é L = 
{#p1#p2#...#pk# | cada pi \u3f5 {a,b}
+
 e para . Descreva-a em alto-nível. 
Solução 
A solução para este exercício é apresentada em outro lugar. O ponto a ser considerado aqui é 
que o objetivo deste exercício é avaliar a capacidade do aluno de simular laços aninhados em 
uma MT. 
Neste contexto, o teste de igualdade entre palavras ( poderia ser definido neste 
exercício como uma operação do pseudo-código. Em outras palavras, não é necessário que o 
aluno descreva explicitamente as operações da MT necessárias para verificar se duas palavras 
são iguais. Neste caso, o trecho de código abaixo seria válido: 
Passo x: Compare as duas palavras à direita de cada marcador. Se forem iguais, Rejeite. 
Caso contrário vá para o Passo . 
 
 
 
4) Considerações Finais 
O formato para a descrição de MTs apresentado neste documento não é o único formato 
possível ou aceitável. O aluno poderá fazer adaptações ou, até mesmo, utilizar um formato 
próprio. Entrentanto, o nível de organização e a clareza dos exemplos acima devem ser 
reproduzidos pelo aluno. 
Finalmente, não é possível determinar formalmente e precisamente o nível de abstração 
adequado para a decrição de uma MT já que o mesmo depende do objetivo do exercício. De 
qualquer maneira, indicações de operações de alto-nível permitidas em um exercício serão 
apresentadas no enunciado do exercício. Em caso de dúvida, o aluno deverá consultar