Complejidad espacial en práctica

Clase 8 de 18Curso de Complejidad Algorítmica con JavaScript

Resumen

La complejidad espacial es diferente a la complejidad temporal. Los diferentes compiladores asignan un espacio distinto de memoria para almacenar variables.

La diversidad de tamaños y formas con las que el compilador almacena información es interesante, pero para el propósito que tenemos, podemos simplificarlo a contar cuántas variables se definen para almacenar arreglos, números o cadenas.

Ejemplos de complejidad espacial

El algoritmo contar recibe como parámetro un número y cuenta hasta ese número. ¿Qué se genera en el algoritmo? Una variable i que almacena un número.

function contar(n) {
    for (let i = 0; i< n; i++){
        console.log(i)
    }
}

El algoritmo repetirArreglo recibe como parámetro un array y lo duplica, por ende, está generando un espacio en memoria similar al array inicial.

function repertirArreglo (array) {
    let arregloRepetido = [...array]
    return arregloRepetido
}

El algoritmo convertirAString recibe como parámetro un array de números, y por cada número lo convierte a string. De esta manera, se está generando un valor en memoria diferente, ya que los compiladores manejan los números y las palabras de diferente manera.

function convertirAString  (array) {
    let resultado = array.map(el => el.toString())
    return resultado
}

El algoritmo generarMatriz recibe un valor numérico como parámetro para generar una array de arrays o una matriz. En consecuencia, se está generando un número de elementos igual al cuadrado del parámetro y una cantidad de arrays igual al valor del parámetro.

function generarMatriz (valor){
    let matriz = new Array(valor)
    for (let i = 0; i < valor; i++){
        matriz[i] = new Array(valor).fill(0)
    }
    return matriz
}

console.log( generarMatriz(5))
/* 
[
  [ 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0 ],
  [ 0, 0, 0, 0, 0 ]
]*/

A partir de un valor numérico igual a 25, se generaron 25 elementos de la matriz y 5 arrays individuales en memoria.

Contribución creada por Marcelo Arias y Andrés Guano (Platzi Contributor).