Você pode fazer uma reversão no local de uma corda em uma máquina de torcer baunilha no tempo ?
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.nn 1 110 00
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 ?0 001 11o (n2)o(n2)
É 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 ...O (n2)O(n2)
Para provar o limite inferior , você pode usar os métodos de limites inferiores da Complexidade da comunicação . Por exemplo, você pode adaptar facilmente a prova de que os palíndromos ( ) requerem ao seu caso. Veja o exercício 13.2 do capítulo Complexidade da Comunicação de Arora e Barak, "Complexidade Computacional: Uma Abordagem Moderada"Ω(n2)Ω(n2){wwR}{wwR}Ω(n2)Ω(n2)
A dica para o exercício está incorreta: considere a máquina de Turing que simplesmente copia os primeiros n / 3 bits na área do meio e compara a área do meio com os últimos n / 3 bits. Esta máquina viaja apenas do local n / 3 para o local 2n / 3 uma vez.
Acho que não está errado: dada uma string , (existem três "zonas" de comprimento n / 3), se percursos da zona forem suficientes para decidir existe um protocolo para a igualdade. No seu caso, você deve verificar a complexidade da comunicação para reverter a string . w#nwRw#nwR|w|=n|w|=nkk##O(k)O(k){0,1}n#n{0,1}n{0,1}n#n{0,1}n
A maneira padrão de provar coisas assim é mostrar que os bits de informação devem cruzar pelo menos pontos .Θ(n)Θ(n)Θ(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/3n/3n/3n/3O(1)O(1)11n2/9n2/9Ω(n2)Ω(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 .
Ah, acho que finalmente entendi como fazer isso rigorosamente. Essencialmente, você só precisa mostrar que o número de vezes que o cabeçalho dá um passo do local k para o local k + 1 é pelo menos min (k, nk) dividido pelo logaritmo do número de estados.
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)Θ(n2)nnssssss
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)Ω(n2)0,1,…,n/20,1,…,n/23n/4,…,n3n/4,…,nn/2n/2bbn/(2b)n/(2b)nnn/(2b)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.nnn2/(2b)=Ω(n2)n2/(2b)=Ω(n2)