Grandes brechas entre la RAM y la complejidad de la máquina Turing

9

Si solo consideramos los problemas en P, ¿hay grandes diferencias entre el algoritmo de palabra-RAM más rápido conocido y el algoritmo de máquina de Turing más rápido conocido para problemas particulares? Estoy particularmente interesado si existen grandes lagunas para los problemas naturales de interés general.

Lembik
fuente
66
una máquina RAM puede ser simulada por una máquina Turing con una sobrecarga de en tiempo de ejecución. Por lo tanto, no habrá brechas realmente grandes. O(nlogn)
Shaull
@Shaull ¿Existe una brecha de ese tamaño para algún problema natural / popular?
Lembik
3
Palindrome tarda en una TM de cinta única (y es O ( n ) en RAM). eecs.yorku.ca/course_archive/2008-09/W/6115/palindrome.pdfΩ(n2)O(n)
SamM
66
El comentario de Shaull solo es cierto para máquinas no deterministas y en la configuración de dos cintas TM, que yo sepa. Cita, Shaull?
Ryan Williams
1
@ qbt937 - Wow, qué maravilla del pasado :) Creo que no proporcioné una cita porque no tenía una (ni la tengo ahora), y es muy posible que Ryan Williams tenga razón.
Shaull

Respuestas:

6

Se sabe que cualquier problema que pueda calcular en una máquina RAM en el tiempo , puede hacerlo en una máquina Turing a tiempo como máximo T ( n ) 2 . Debe tener en cuenta que el tamaño total de la memoria utilizada no puede ser mayor que T ( n ) , ya que eso significaría que realizó más operaciones de escritura que T ( n ) , por lo que cada vez que obtiene algo de la memoria RAM, el Turing máquina tomaría en el peor de los casos T ( n )T(n)T(n)2T(n)T(n)T(n)tiempo para encontrar el elemento deseado secuencialmente de la cinta. Además del acceso a la memoria, el resto de las operaciones deben tomar alrededor del mismo tiempo. Y así consigues el límite.

Javier Cano
fuente
2
Las RAM pueden calcular la longitud de la entrada (y, por lo tanto, también la parte de esa longitud) en tiempo logarítmico, pero las máquinas de Turing básicas necesitan tiempo lineal para calcular esa paridad.
1

El siguiente ejemplo demuestra que un algoritmo que toma O ( n log ( n ) ) para resolver un problema en word-Ram podría necesitar O ( n 2 log ( n ) 3 ) en una máquina de Turing (TM) de 1 cinta que se ejecuta exactamente todos los cálculos indicados por A . Entiendo que la pregunta se relaciona con 1-tape TM, y solo uso esta en mi respuesta. Esta es una edición para abordar los comentarios de Emil Jeřábek.AO(nlog(n))O(n2log(n)3)A

Encontraremos la siguiente conclusión más general . Para demostrar que la TM puede resolver en un problema resuelto en O ( T ( n ) ) por un algoritmo A en RAM, es no suficiente de ejecución A en el TM. Es posible que se necesite un algoritmo inteligente . Lo mismo se aplica si se quiere probar un O ( n log ( n ) )O(T(n)2)O(T(n))AAO(nlog(n))gastos generales. Probar la existencia de un algoritmo inteligente siempre que sea necesario parece lejos de ser inmediato, por decir lo menos. Esto no está en línea con otras respuestas que básicamente solo proponen simular / ejecutar en el TM todos los cálculos de RAM (del algoritmo ) para anunciar una complejidad TM como O ( T ( n ) 2 ) u O ( T ( n ) n log ( n ) ) .AO(T(n)2)O(T(n)nlog(n))

Problema: se nos da una matriz / tabla con n = 2 k enteros cada uno almacenado en bits de registro ( n ) . Se nos da una segunda matriz d con posiciones log ( n ) , cada una registrando un número de bits log ( n ) . Para cualquier t [ 0 .. log ( n ) - 1 ] , definimos X t = 1 si 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 ] . De lo contrario, X t = 0 . Salida log ( n ) - 1 t = 0 X t . Considero que la entrada se da como una cinta con n log ( n ) +d[t]=tab[n/2+i]d[t] i[0..n/21]Xt=0t=0log(n)1Xt dígitos binarios, para abordar los comentarios de Emil Jeřábek.nlog(n)+log(n)log(n)

Algoritmo en RAMA Una RAM con tamaño de palabra necesita O ( n log ( n ) + log ( n ) 2 ) = O ( n log ( n ) ) para leer los datos de entrada de la cadena binaria. Pero después de leer los datos, solo puede funcionar con palabras de tamaño log ( n ) . El algoritmo A calcula cualquier X t en O ( nw=log(n)O(nlog(n)+log(n)2)O(nlog(n))log(n)AXt pasando por todo i [ 0 .. n / 2 - 1 ] y probando la condición. El bucle principal de A esFOR t = 0 , 1 , 2 , ... log ( n ) - 1 : calcular X t . La complejidad total es O ( n log ( n ) ) (lectura de datos) + O ( n log ( n ) )O(n)i[0..n/21]At=0,1,2,log(n)1XtO(nlog(n))O(nlog(n))(haciendo los cálculos), por lo que puede hacerlo todo en O ( n log ( n ) ) en RAM.AO(nlog(n))

AO(n2log(n)2)tAtO(nlog(n))tab[i]d[t]0tab[i]Atn(log(n)1)/2mO(m2)AO((nlogn)2)t=0,1,2,log(n)1O(n2log(n)3)


mmO(m2)x<0xO(m2)O(m2)

Además, hay algunos algoritmos de TM de prueba de igualdad y todos requieren tiempo cuadrático porque necesitan algo de zigzag, consulte, por ejemplo, el Ejemplo 2 de Turing Machine en course.cs.washington.edu/courses/cse431/14sp/scribes/ lec3.pdf

Daniel Porumbel
fuente
El límite inferior para palíndromos solo es válido para el modelo antinatural de una sola cinta. Es sencillo probar la igualdad de dos cadenas en una TM en tiempo lineal. Lo mismo vale para la igualdad de dos secuencias de entradas más largas. Además, para que la pregunta tenga sentido, las entradas para ambos modelos de máquina deben ser idénticas, es decir, escritas como cadenas sobre un alfabeto finito. Por lo tanto, su RAM necesitaría tiempo O (log n) para leer cada entrada y convertirla en una palabra, haciendo que esta operación no tenga sentido.
Emil Jeřábek
@Emil Jeřábek, editaré mi respuesta para indicar que solo pienso en 1-tape TM. Cuando dice que una TM puede probar la igualdad en el tiempo lineal, supongo que piensa en una TM de 2 cintas. Sin embargo, entendí que toda la pregunta es sobre TMs de 1 cinta. Con respecto al formulario de entrada, debo confesar que puede tener razón, al menos para algunas RAM de palabras. Pero hasta donde yo sé, una matriz C ++ int almacena los enteros uno tras otro sin separador, como si almacenaran juntos una secuencia de bits. 10 pulgadas en 16 bits ocupan exactamente 160 bits, ¿no? Incluso si este no es el caso, se podría construir una máquina que funcione de esta manera.
Daniel Porumbel
3
O(logn)O(1)logn
O(nlogn)
O(nlog(n))