Por uma máquina de Turing de baunilha, quero dizer uma máquina de Turing com uma fita (sem fitas especiais de entrada ou saída).
O problema é como se segue: a fita é inicialmente vazia, com excepção de uma série de s e s terminadas por um caractere de fim-de-corda. A cabeça da fita começa no início da corda. O objetivo é que a fita contenha a sequência original em ordem inversa, terminada por um caractere de fim de sequência, com a cabeça da fita retornada ao início da sequência quando a máquina de Turing finalmente parar.
A máquina de Turing pode usar um alfabeto do tamanho que desejar (contanto , e um caractere de fim de cadeia) e pode ter quantos estados desejar. Existe uma máquina de Turing fixa que pode concluir esta tarefa no tempo ?
É fácil fazer isso no tempo usando apenas alguns estados e símbolos. Parece intuitivamente claro que algo nos impede de fazê-lo mais do que um fator constante mais rapidamente, mas nunca consegui provar isso, e muitas vezes me preocupo até tarde da noite com aplicações milagrosas de codificação de rede ou magia do vodu que de alguma forma aceleração logarítmica ...
Respostas:
A maneira padrão de provar coisas assim é mostrar que os bits de informação devem cruzar pelo menos pontos .Θ(n) Θ(n)
Ou seja, se você estiver invertendo "no lugar", o primeiro terço dos bits deverá cruzar todas as células do meio e terminar nas últimas células. Como a cabeça move bits uma distância no máximo célula por etapa, isso requer etapas. Se a cópia invertida terminar em um conjunto diferente de células, um argumento muito semelhante fornecerá um limite inferior .n/3 n/3 O(1) 1 n2/9 Ω(n2)
É preciso algum trabalho para tornar rigorosa essa idéia intuitiva, mas foi concluída, embora eu não tenha tempo suficiente para localizar os trabalhos em que esses resultados apareceram. Se alguém puder apontar para um trabalho relevante, edite esta resposta para fazê-lo .
fonte
Também não vejo como fazê-lo.
Parece levar tempo apenas para fazer uma segunda cópia da string (por exemplo, se a entrada for a string de bits , , no final do cálculo, queremos que a fita contenha a string ) Talvez isso possa ser formalizado de alguma maneira usando os métodos de complexidade da comunicação; Eu não sei.Θ(n2) n s ss
Aqui está uma intuição sobre por que a reversão parece exigir etapas . Posições de bit de cor da fita verde; essa é "a zona verde". Da mesma forma, vamos tratar as posições de bits como "a zona vermelha". Intuitivamente, temos que transmitir bits de informação da zona verde para a zona vermelha. Se o autômato de estado finito da máquina de Turing puder conter bits de informação, a máquina de Turing precisará visitar a zona verde vezes e precisará percorrer pelo menos posições para chegar a a zona vermelha. Assim, parece que a máquina de Turing terá que fazer pelo menosΩ(n2) 0,1,…,n/2 3n/4,…,n n/2 b n/(2b) n n/(2b) passa (onde em cada passe entra na zona verde, depois viaja da zona verde para a zona vermelha), e cada passe dá passos apenas para o movimento da cabeça, para um total de pelo menos etapas. Esta não é uma prova completa, mas parece dar uma idéia do porquê não espero que haja uma maneira mais rápida de fazer isso.n n2/(2b)=Ω(n2)
fonte