Como mapear as fitas de uma máquina de Turing de “fita k” na fita única de uma máquina de Turing de “1 fita”

11

Estou lendo Sipser e acho difícil entender como é o processo. Se você me der k máquinas de Turing com fitas k, posso cuspir uma máquina de Turing equivalente com apenas uma fita. Um exemplo seria bom. Na verdade, um exemplo elaborado que mostra como passar da TM com fitas para uma com 1 fita é o que realmente estou procurando. Não consegui encontrar um até agora. Também não estou procurando nenhuma prova.k

user678392
fonte
O que você quer dizer com "uma máquina equivalente"? Qual é a entrada e qual é a saída? (Talvez você significou uma máquina de Turing com fitas?)k
Yuval Filmus
Sim. Uma máquina de tornear com k fitas.
user678392

Respostas:

17

Uma resposta descaradamente copiada de mim mesma :

Uma máquina de Turing com várias fitas é basicamente a mesma que uma máquina com uma fita, exceto que temos uma função de transição estendida onde k é o número de fitas. Assim, em cada estado, a função de transição lê o conteúdo de cada fita, passa para um novo estado, (talvez) escreve algo em cada fita e move cada cabeça - como uma TM comum, exceto que agora temos mais coisas para ler, escrever e mexa-se.Q×ΓkQ×Γk×{L,R}kk

Como sua pergunta sugere, essa máquina pode ser simulada por uma única fita TM. Melhor ainda, isso pode ser feito com apenas desaceleração quadrática (portanto, para classes polinomialmente fechadas, basta falar sobre máquinas de fita única).

A prova disso é um pouco envolvente e está facilmente disponível com uma simples pesquisa na web, então vou esboçar o mapeamento das teclas das fitas em uma única fita.k

A idéia básica é bem direta; basta adicionar alguns símbolos novos e acompanhar cada fita e seguir um após o outro. Em cada etapa do cálculo, podemos ter visitado apenas uma quantidade finita de qualquer uma das fitas; portanto, precisamos armazenar apenas tanta informação sobre cada fita. Assim, para cada , adicionamos um novo símbolo γ _ a Γ que indica onde a cabeça (para cada fita) está em qualquer ponto do cálculo. Também apresentamos um caractere separador # a Γ que indicará o início e o fim das fitas "virtuais". Entrada dada ω = ω 1ω nγΓγ_Γ#Γω=ω1ωn(podemos supor que, mesmo na máquina de fita múltipla, toda a entrada está na primeira fita - provando o que é um bom exercício) na máquina de fita múltipla, nossa máquina de fita única terá a entrada

#ω1_ωn#_#_##_#k sections, one per tape

k

Um exemplo (espero) simples:

Σ={0,1}Γ={0,1,}ω=10101

Tape 1:10101Tape 2:Tape 3:

Para construir a máquina de fita única combinada, precisamos adicionar novos símbolos ao alfabeto da fita:

  1. Precisamos de um símbolo que indique o início e o fim das fitas simuladas
  2. Γ

Γ={0,1,,0_,1_,_,#}

#1_0101#_#_#
) e as cabeças simuladas das 3 fitas simuladas (os caracteres sublinhados). É claro que a fita se estende infinitamente para a direita, como de costume. Também traí levemente, movendo a cabeça da fita para o primeiro caractere na primeira corda; estritamente, deveria começar na célula mais à esquerda, mas esse é um detalhe técnico trivial.

#

1101

1

Tape 1:10101Tape 2:1Tape 3:

0

Tape 1:10101Tape 2:1Tape 3:1

Γ

#10_101#1_#_#

Após o segundo passo:

#101_01#1_#1_#

É claro que essa é uma visão de alto nível do processo - não tentei explicar como construir os estados ou como cada fita simulada fica mais longa (para isso, você precisa de uma pequena rotina que verifique se encontrou o final da fita simulada e, em seguida, move tudo para a direita um passo adiante e aperta um novo espaço em branco - ou seja, ele apenas adiciona células de fita simuladas quando são necessárias).

Luke Mathieson
fonte
2
Como alternativa, use " faixas " separadas para escrever as fitas separadas próximas uma da outra no mesmo espaço. Isso, no entanto, envolve a introdução de um novo alfabeto.
Hendrik Jan
2
@ user678392 Examinar detalhadamente a construção e escrever tudo aqui em cima levaria pelo menos algumas horas. Se você não vai nem explicar qual parte não entende, por que alguém deveria trabalhar tanto em seu nome? E se alguém fizer? Você apenas dirá: "Eu não entendo. Alguém faz isso".
David Richerby
1
@ user678392 Obrigado. E, só para esclarecer, é com o inglês que você está tendo dificuldades (ou seja, é provável que a reformulação ajude) ou precisa de mais detalhes na explicação?
David Richerby
1
@ user678392, adicionamos um exemplo da visualização de alto nível das primeiras etapas da conversão e da saída prática nas fitas. Evitei discutir como construir o novo conjunto de estados, pois isso é muito complexo e você não terá uma explicação melhor do que a do Sipser ou similar - é inerentemente complicado e matemático.
Luke Mathieson
1
@RomaKarageorgievich Parece que várias provas mais claras desapareceram nos últimos 5 anos (não confie na internet: D). O mais claro que encontrei está aqui (aviso, arquivo .doc!). A prova em "Introdução às línguas e à teoria da computação" de Martin é bastante boa, se você tiver acesso a esse livro (p. 244 na 4ª ed.). A prova de "Introdução à teoria da computação" de Sipser é suficiente (p. 177 na 3ª Ed.).
Lucas Mathieson