La complejidad espacial describe cuánta memoria adicional usa un algoritmo respecto del tamaño de la entrada n. En Python la memoria se gestiona de forma automática, pero entender cómo crecen las estructuras es clave para evitar sobrecostos.
k elementos ocupa O(k) referencias.O(1) amortizado por la sobre-asignación.buffer = [0] * n
Cada nodo en una lista, árbol o grafo aporta una unidad de memoria adicional. En Python, el recolector de basura libera cuando no hay referencias.
class Nodo:
def __init__(self, valor, siguiente=None):
self.valor = valor
self.siguiente = siguiente
El uso de memoria es O(n) en cantidad de nodos. El costo temporal de recorrer la lista sigue siendo O(n).
O(n) sin redimensionar.estatico = (0,) * 1024 # tupla fija
dinamico = [0] * n # lista con tamaño depende de n
O(mn) celdas; en enteros de 4 bytes, 1000x1000 → ~4 MB.O(V + E).O(V^2); solo conviene en grafos densos.def crear_matriz(filas, cols):
return [[0] * cols for _ in range(filas)]
with open("datos.txt", "r", encoding="utf-8") as archivo:
contenido = archivo.read()
procesar(contenido)