En un algoritmo, ¿cuál es el significado real de la complejidad del espacio?

La complejidad espacial de un algoritmo es el espacio total (memoria intermedia) utilizado por un algoritmo en tiempo de ejecución con respecto al tamaño de entrada.

  • Espacio total = espacio auxiliar + tamaño de entrada

Espacio auxiliar: es el espacio adicional o espacio temporal distinto de la entrada dada utilizada por un algoritmo en tiempo de ejecución.

Consideremos un programa,

sum (int x, int y, int z) {
int r = x + y + z;
volver r;
}

Requiere 3 unidades de espacio para los parámetros y 1 para la variable local, y esto nunca cambia, por lo que esto es de o (4). También podemos escribirlo como o (1), porque el espacio de contacto se puede representar como o ( 1)

Ahora, consideremos otro ejemplo,

int sum (int a [], int n) {
int r = 0;
para (int i = 0; i <n; ++ i) {
r + = a [i];
}
volver r;
}

Requiere N unidades para a , más espacio para n , r e i , por lo que es O (N).

Si encuentra algo mal, escriba un comentario.

Formalmente, la complejidad del espacio es la longitud máxima de la cinta utilizada para una máquina de Turing … La complejidad del tiempo versus la complejidad del espacio en las máquinas de Turing.

Lo cual no es … una idea totalmente factible para la realidad.

Por lo tanto, una redefinición de la complejidad del espacio en términos de informática moderna es:

“Cuántas ubicaciones de memoria estoy usando para resolver este problema”.

Esto es diferente de las variables, ya que una matriz de tamaño k requiere k ubicaciones.

La complejidad del espacio es solo la cantidad de espacio de memoria que requiere el programa para producir la salida deseada para alguna entrada en función de las variables de entrada.

Si I = {x1, x2, … t … he, xk} es un conjunto de variables de entrada, entonces la complejidad del espacio se define como la función Espacio (I) = f (x1, x2, …, xk)

El siguiente video es un gran recurso para la introducción a la complejidad del tiempo y el espacio en el análisis de algoritmos.