En la teoría de la complejidad computacional , DTIME (o TIME ) es el recurso computacional del tiempo de cálculo para una máquina de Turing determinista . Representa la cantidad de tiempo (o número de pasos de cálculo) que una computadora física "normal" tardaría en resolver un determinado problema computacional utilizando un determinado algoritmo . Es uno de los recursos de complejidad mejor estudiados, porque se corresponde muy de cerca con un importante recurso del mundo real (la cantidad de tiempo que le toma a una computadora resolver un problema).
El recurso DTIME se utiliza para definir clases de complejidad , conjuntos de todos los problemas de decisión que se pueden resolver utilizando una cierta cantidad de tiempo de cálculo. Si un problema de tamaño de entrada n se puede resolver en , tenemos una clase de complejidad (o ). No hay ninguna restricción en la cantidad de espacio de memoria utilizado, pero puede haber restricciones en algunos otros recursos de complejidad (como la alternancia ).
Muchas clases de complejidad importantes se definen en términos de DTIME , que contienen todos los problemas que se pueden resolver en una cierta cantidad de tiempo determinista. Se puede utilizar cualquier función de complejidad adecuada para definir una clase de complejidad, pero solo ciertas clases son útiles para estudiar. En general, deseamos que nuestras clases de complejidad sean robustas frente a los cambios en el modelo computacional y que estén cerradas bajo la composición de subrutinas.
DTIME satisface el teorema de jerarquía temporal , lo que significa que cantidades de tiempo asintóticamente mayores siempre crean conjuntos de problemas estrictamente mayores.
La conocida clase de complejidad P comprende todos los problemas que se pueden resolver en una cantidad polinómica de DTIME . Se puede definir formalmente como:
P es la clase robusta más pequeña que incluye problemas de tiempo lineal (AMS 2004, lección 2.2, pág. 20). P es una de las clases de mayor complejidad consideradas "computacionalmente factibles".
Una clase mucho más grande que utiliza tiempo determinista es EXPTIME , que contiene todos los problemas que se pueden resolver utilizando una máquina determinista en tiempo exponencial . Formalmente, tenemos
Las clases de mayor complejidad se pueden definir de manera similar. Debido al teorema de la jerarquía temporal, estas clases forman una jerarquía estricta; sabemos que , y así sucesivamente.
Para clases robustas, como P, el modelo de máquina exacto utilizado para definir DTIME puede variar sin afectar la potencia del recurso. La literatura sobre complejidad computacional a menudo define DTIME en función de máquinas de Turing de múltiples cintas , en particular cuando se analizan clases de tiempo muy pequeñas. Una máquina de Turing determinista de múltiples cintas nunca puede proporcionar más que una aceleración de tiempo cuadrática en comparación con una máquina de una sola cinta. [1]
Debido al teorema de aceleración lineal para las máquinas de Turing, las constantes multiplicativas en el límite de tiempo no afectan la extensión de las clases DTIME; siempre se puede obtener una aceleración multiplicativa constante aumentando el número de estados en el control de estados finitos y el tamaño del alfabeto de cinta. En la declaración de Papadimitriou, [2] para un lenguaje L ,
Si utilizamos un modelo distinto de una máquina de Turing determinista, existen varias generalizaciones y restricciones de DTIME. Por ejemplo, si utilizamos una máquina de Turing no determinista , tenemos el recurso NTIME . La relación entre los poderes expresivos de DTIME y otros recursos computacionales se entiende muy poco. Uno de los pocos resultados conocidos [3] es
para máquinas multicinta. Esto se amplió a
por Santhanam. [4]
Si utilizamos una máquina de Turing alterna , tenemos el recurso ATIME.