Supongo que hay mult. constantes escondidas allí. Puede probar que . Simplemente enumere todas las posibles suposiciones no deterministas del algoritmo y ejecute su algoritmo con estas suposiciones. Acepte si una de las conjeturas lleva a un estado de aceptación. NTIME(f(n))⊆DSPACE(2⋅f(n))
Igor Shinkar
1
¿Por qué no hacer esto una respuesta?
Yuval Filmus
@IgorShinkar Hay varios resultados, como el teorema de aceleración lineal y el teorema de compresión de cinta que dicen que puede deshacerse de esas constantes en "la mayoría" de las circunstancias. La aceleración lineal dice que para cualquier ϵ > 0 ; la compresión de cinta dice que D S P A C E ( f ( nDTIME(f(n))⊆DTIME(ϵf(n)+n+2)ϵ>0 , nuevamente para cualquier ϵ > 0 . DSPACE(f(n))⊆DSPACE(ϵf(n)+O(1))ϵ>0
David Richerby
Respuestas:
4
Aquí hay una versión ampliada del comentario de Igor Shinkar. La forma más simple de simular una máquina no determinista que se ejecuta en el tiempo y el espacio s ( n ) ≤ f ( n ) utiliza s ( n ) + 2 f ( n ) + O ( 1 ) espacio. Enumeramos todos los lanzamientos de monedas posibles, simulando la máquina original en cada uno de ellos; esto requiere espacio f ( n ) para almacenar los lanzamientos de monedas, y s ( nf(n)s(n)≤f(n)s(n)+2f(n)+O(1)f(n) espacio para simular la máquina real. Aquí hay una ligera dificultad: cuando los lanzamientos de monedas son "leídos" por la máquina (original), necesitamos marcar de alguna manera dónde estamos en la secuencia de lanzamientos de monedas; podemos usar un bit adicional por lanzamiento de moneda. Probablemente sea posible optimizar esto aún más.s(n)
Si tenemos cuidado, podríamos obtener algo aún mejor, ya que en cada ejecución del programa, el número total de lanzamientos de monedas y el espacio total utilizado se suman como máximo . Sospecho que es posible ejecutar la simulación en el espacio ( 1 + o ( 1 ) ) f ( n ) . Tal vez tendremos que asumir algo como f ( n ) = Ω ( log n ) para eso.f(n)(1+o(1))f(n)f(n)=Ω(logn)
Como menciona Igor, por lo general, las clases limitadas por recursos solo se definen "hasta O grande", de modo que el resultado, que usa el espacio , todavía está en D S P A C E ( f ( n ) ) .O(f(n))DSPACE(f(n))
Respuestas:
Aquí hay una versión ampliada del comentario de Igor Shinkar. La forma más simple de simular una máquina no determinista que se ejecuta en el tiempo y el espacio s ( n ) ≤ f ( n ) utiliza s ( n ) + 2 f ( n ) + O ( 1 ) espacio. Enumeramos todos los lanzamientos de monedas posibles, simulando la máquina original en cada uno de ellos; esto requiere espacio f ( n ) para almacenar los lanzamientos de monedas, y s ( nf(n) s(n)≤f(n) s(n)+2f(n)+O(1) f(n) espacio para simular la máquina real. Aquí hay una ligera dificultad: cuando los lanzamientos de monedas son "leídos" por la máquina (original), necesitamos marcar de alguna manera dónde estamos en la secuencia de lanzamientos de monedas; podemos usar un bit adicional por lanzamiento de moneda. Probablemente sea posible optimizar esto aún más.s(n)
Si tenemos cuidado, podríamos obtener algo aún mejor, ya que en cada ejecución del programa, el número total de lanzamientos de monedas y el espacio total utilizado se suman como máximo . Sospecho que es posible ejecutar la simulación en el espacio ( 1 + o ( 1 ) ) f ( n ) . Tal vez tendremos que asumir algo como f ( n ) = Ω ( log n ) para eso.f(n) (1+o(1))f(n) f(n)=Ω(logn)
Como menciona Igor, por lo general, las clases limitadas por recursos solo se definen "hasta O grande", de modo que el resultado, que usa el espacio , todavía está en D S P A C E ( f ( n ) ) .O(f(n)) DSPACE(f(n))
fuente