O exemplo abaixo prova que um algoritmo que leva O ( n log ( n ) ) para resolver um problema na palavra Ram pode precisar de O ( n 2 log ( n ) 3 ) em uma Turing Machine (TM) de 1 fita que executa exatamente todos os cálculos indicados por um . Entendo que a pergunta está relacionada à 1-tape TM e só uso esta na minha resposta. Esta é uma edição para abordar as observações de Emil Jeřábek.AO(nlog(n))O(n2log(n)3)A
Encontraremos a seguinte conclusão mais geral . Para provar que a TM pode resolver em um problema resolvido em O ( T ( n ) ) por um algoritmo A na RAM, não basta executar A na TM. Um algoritmo inteligente pode ser necessário. O mesmo se aplica se alguém quiser provar um O ( n log ( n ) )O(T(n)2)O(T(n))AAO(nlog(n))a sobrecarga. Provar a existência de um algoritmo inteligente sempre que necessário parece longe de ser imediato, para dizer o mínimo. Isso não está de acordo com outras respostas que basicamente apenas propõem simular / executar na TM todos os cálculos de RAM (do algoritmo ) para anunciar uma complexidade de TM como O ( T ( n ) 2 ) ou O ( T ( n ) n log ( n ) ) .AO(T(n)2)O(T(n)nlog(n))
Problema: Recebemos uma matriz / tabela com n = 2 k números inteiros, cada um armazenado em bits de log ( n ) . Nos é dada uma segunda matriz d com posições de log ( n ) , cada uma registrando um número de bits de log ( n ) . Para qualquer t ∈ [ 0 .. log ( n ) - 1 ] , definimos X t = 1 se a tab [ i ]tabn=2klog(n)dlog(n)log(n)t∈[0..log(n)−1]Xt=1tab[i]MOD MOD d [ t ] ∀ i ∈ [ 0 .. n / 2 - 1 ] . Caso contrário, X t = 0 . Saída ∑ log ( n ) - 1 t = 0 X t . Considero que a entrada é dada como uma fita com n log ( n ) +d[t]=tab[n/2+i]d[t] ∀i∈[0..n/2−1]Xt=0∑log(n)−1t=0Xt dígitos binários, para endereçar os comentários de Emil Jeřábek.nlog(n)+log(n)log(n)
Algoritmo na RAMA Uma RAM com tamanho de palavra precisa de O ( n log ( n ) + log ( n ) 2 ) = O ( n log ( n ) ) para ler os dados de entrada da string binária. Mas depois de ler os dados, ele pode funcionar apenas com palavras do tamanho do log ( n ) . O algoritmo A calcula qualquer X t em O ( nw=log(n)O(nlog(n)+log(n)2)O(nlog(n))log(n)AXt passando por todo i ∈ [ 0 .. n / 2 - 1 ] e testando a condição. O loop principal de A éFOR t = 0 , 1 , 2 , … log ( n ) - 1 : calcula X t . A complexidade total é O ( n log ( n ) ) (leitura de dados) + O ( n log ( n ) )O(n)i∈[0..n/2−1]At=0,1,2,…log(n)−1XtO(nlog(n))O(nlog(n))(fazendo os cálculos), para que possa fazer tudo em O ( n log ( n ) ) na RAM.AO(nlog(n))
Algoritmo na TM com 1 fita:A Argumento que a TM com uma fita precisa de tempo para um t fixo . Do ponto de vista da TM, a determinação Um t é equivalente a testar a igualdade das duas cadeias binárias de comprimento ó ( n log ( n ) ) . Por exemplo, a guia de operação MOD [ i ] MOD d [ t ] pode ser equivalente a remover o bit 0 da guiaO(n2log(n)2)tAtO(nlog(n))tab[i]d[t]0 . Em tais casos, a determinação Um t é equivalente ao teste de igualdade em cadeias de bits com um comprimento n ( log ( n ) - 1 ) / 2 . É sabido que testar a igualdade de duas seqüências de comprimento m requer O ( m 2 ) na 1-tape TM, mas não consigo realmente encontrar uma referência no momento. No entanto, forneço uma prova no ps. Se a TM executar oloop principalde A , precisará gastar pelo menos O ( ( n log ntab[i]Atn(log(n)−1)/2mO(m2)A para cada t = 0 , 1 , 2 , … log ( n ) - 1 , terminando em O ( n 2 log ( n ) 3 ) .O((nlogn)2)t=0,1,2,…log(n)−1O(n2log(n)3)
ps. Eu mostro que o teste de igualdade em cadeias de bits com bits não pode ser mais rápido do que o teste de síndrome em cadeias com m bits (sabe-se que a síndrome leva pelo menos O ( m 2 ) tempo). Podemos modificar qualquer algoritmo de TM para teste de igualdade para resolver palíndromo. Suponha que a TM de teste de igualdade comece com dois números inteiros: um à esquerda da cabeça, um à direita (este é o formulário de entrada mais simples para a TM). Cada movimento sobre as posições da esquerda pode ser espelhado (refletido) sobre as posições da direita. Construímos uma TM espelhada: sempre que a TM inicial estiver em uma posição - x < 0 (à esquerda), a TM espelhada estará na posição xmmO(m2)−x<0x(a direita). Se um TM resolvesse o teste de igualdade em menos de , esse TM espelhado modificado resolveria o palíndromo em menos de O ( m 2 ) .O(m2)O(m2)
Além disso, existem alguns algoritmos de TM para teste de igualdade e todos eles exigem tempo quadrático porque precisam de zigue-zague, veja, por exemplo, o Exemplo 2 da Máquina de Turing em cursos.cs.washington.edu/courses/cse431/14sp/scribes/ lec3.pdf