La complejidad espacial de un algoritmo o una estructura de datos es la cantidad de espacio de memoria requerida para resolver una instancia del problema computacional en función de las características de la entrada. Es la memoria requerida por un algoritmo hasta que se ejecuta por completo. [1] Esto incluye el espacio de memoria utilizado por sus entradas, llamado espacio de entrada , y cualquier otra memoria (auxiliar) que utilice durante la ejecución, que se llama espacio auxiliar .
De manera similar a la complejidad temporal , la complejidad espacial a menudo se expresa asintóticamente en notación O grande , como etc., donde n es una característica de la entrada que influye en la complejidad espacial.
De manera análoga a las clases de complejidad temporal DTIME(f(n)) y NTIME(f(n)) , las clases de complejidad DSPACE(f(n)) y NSPACE(f(n)) son los conjuntos de lenguajes que son decidibles por máquinas de Turing deterministas (respectivamente, no deterministas) que usan el espacio. Las clases de complejidad PSPACE y NPSPACE permiten ser cualquier polinomio, de manera análoga a P y NP . Es decir, y
El teorema de jerarquía espacial establece que, para todas las funciones construibles en el espacio, existe un problema que puede ser resuelto por una máquina con espacio de memoria, pero no puede ser resuelto por una máquina con espacio asintóticamente menor .
Se cumplen las siguientes contenciones entre clases de complejidad. [2]
Además, el teorema de Savitch proporciona la contención inversa, es decir, si
Como corolario directo, este resultado es sorprendente porque sugiere que el no determinismo puede reducir el espacio necesario para resolver un problema solo en una pequeña cantidad. En contraste, la hipótesis del tiempo exponencial conjetura que, para la complejidad temporal, puede haber una brecha exponencial entre la complejidad determinista y la no determinista.
El teorema de Immerman-Szelepcsényi establece que, nuevamente, para es cerrado bajo complementación. Esto muestra otra diferencia cualitativa entre las clases de complejidad temporal y espacial, ya que no se cree que las clases de complejidad temporal no deterministas sean cerradas bajo complementación; por ejemplo, se conjetura que NP ≠ co-NP . [3] [4]
L o LOGSPACE es el conjunto de problemas que puede resolver una máquina de Turing determinista utilizando solo espacio de memoria con respecto al tamaño de entrada. Incluso un solo contador que pueda indexar toda la entrada de 1000 bits requiere espacio, por lo que los algoritmos LOGSPACE solo pueden mantener una cantidad constante de contadores u otras variables de complejidad de bits similar.
LOGSPACE y otras complejidades espaciales sublineales son útiles cuando se procesan datos grandes que no caben en la RAM de una computadora . Están relacionados con los algoritmos de Streaming , pero solo restringen la cantidad de memoria que se puede usar, mientras que los algoritmos de streaming tienen más restricciones sobre cómo se alimenta la entrada al algoritmo. Esta clase también se usa en el campo de la pseudoaleatoriedad y la desaleatoriedad , donde los investigadores consideran el problema abierto de si L = RL . [5] [6]
La clase de complejidad espacial no determinista correspondiente es NL .
El términoEl espacio auxiliar se refiere al espacio distinto del que consume la entrada. La complejidad del espacio auxiliar podría definirse formalmente en términos de unamáquina de Turingcon unacinta de entradaen la que no se puede escribir, solo leer, y una cinta de trabajo convencional en la que se puede escribir. La complejidad del espacio auxiliar se define (y analiza) a través de la cinta de trabajo. Por ejemplo, considere labúsqueda en profundidadde unárbol binario balanceadoconnodos: su complejidad del espacio auxiliar es
{{citation}}
: Mantenimiento de CS1: falta la ubicación del editor ( enlace ).