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