Grandes lacunas entre a RAM e a complexidade da máquina de Turing

9

Se considerarmos apenas os problemas em P, existem grandes lacunas entre o algoritmo de RAM de palavras mais rápido e o algoritmo de máquina de Turing mais rápido para problemas específicos? Estou particularmente interessado se existem grandes lacunas para problemas naturais de interesse geral.

Lembik
fonte
6
uma máquina de RAM pode ser simulada por uma máquina de Turing com sobrecarga de em tempo de execução. Portanto, não haverá grandes lacunas. O(nlogn)
Shaull
@ Shaull Existe uma lacuna desse tamanho para qualquer problema natural / popular?
Lembik 11/05
3
O Palindrome leva em uma TM de fita única (e é O ( n ) na RAM). eecs.yorku.ca/course_archive/2008-09/W/6115/palindrome.pdfΩ(n2)O(n)
SamM
6
O comentário de Shaull é verdadeiro apenas para máquinas não determinísticas e na configuração de duas fitas TM, tanto quanto eu sei. Citação, Shaull?
Ryan Williams
11
@ qbt937 - Uau, que explosão do passado :) Acredito que não citei porque não tinha uma (nem a tenho agora), e pode ser que Ryan Williams esteja correto.
Shaull

Respostas:

6

Sabe-se que qualquer problema que você possa calcular em uma máquina de RAM no tempo , poderá fazê-lo em uma máquina de Turing no tempo no máximo T ( n ) 2 . Você precisa observar que o tamanho total da memória usada não pode ser maior que T ( n ) , pois isso significaria que você executou mais operações de gravação que T ( n ) ; portanto, toda vez que você busca algo da memória RAM, o Turing máquina levaria no pior caso T ( n )T(n)T(n)2T(n)T(n)T(n)tempo para encontrar o elemento desejado sequencialmente na fita. Além do acesso à memória, o restante das operações deve demorar aproximadamente o mesmo tempo. E assim você recebe o limite.

Javier Cano
fonte
2
As RAMs podem calcular o comprimento da entrada (e, portanto, também a parte desse comprimento) em tempo logarítmico, mas as Máquinas de Turing básicas precisam de tempo linear para calcular essa paridade.
1

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/21]Xt=0t=0log(n)1Xt 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/21]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

Daniel Porumbel
fonte
O limite inferior para palíndromos é válido apenas para o modelo de fita única não natural. É simples testar a igualdade de duas strings em uma TM em tempo linear. O mesmo vale para a igualdade de duas seqüências de entradas mais longas. Além disso, para que a questão faça algum sentido, as entradas para os dois modelos de máquinas devem ser idênticas, ou seja, escritas como cadeias de caracteres sobre um alfabeto finito. Assim, sua RAM precisaria de tempo O (log n) para ler cada entrada e convertê-la em uma palavra, tornando essa operação inútil.
Emil Jerabek
@Emil Jeřábek, editarei minha resposta para indicar que só penso na 1-tape TM. Quando você diz que uma TM pode testar a igualdade no tempo linear, suponho que você pense em uma TM com 2 fitas. No entanto, entendi que toda a questão é sobre TMs de 1 fita. Em relação ao formulário de entrada, devo confessar que você pode estar certo, pelo menos para algumas RAMs de palavras. Mas, tanto quanto eu sei, uma matriz int C ++ armazena os números inteiros um após o outro sem separador, como se eles armazenassem juntos uma sequência de bits. 10 ints em 16 bits ocupam exatamente 160 bits, não? Mesmo se não for esse o caso, pode-se construir uma máquina funcionando dessa maneira.
Daniel Porumbel
3
O(logn)O(1)logn
O(nlogn)
O(nlog(n))