01 · Punto de partida
El modelo que anda con 60 y muere con 60 mil
En el Tema 45 el modelo rendía examen con pocos. Ahora la cantidad es el examen: el doble bucle que con 60 ni se siente, con 60 mil no termina. La escalabilidad une N (Tema 40), vecinos (Tema 13) y rendimiento (Tema 47) en una pregunta antes de agrandar.
Por eso escalar no es subir N: es cambiar cómo se buscan vecinos. Fuerza bruta compara todos con todos; rejilla solo con los de al lado.
- ¿Cuántos agentes tiene que bancar?
- ¿Cuánto cuesta buscar vecinos?
- ¿Qué atajo baja el costo sin cambiar la regla?
- ¿Dónde se parte el mapa para repetir?
02 · Definición
N, costo y atajo
Todo escalado combina cuántos, cuánto cuesta y cómo se abarata:
N
Cantidad de agentes: el que multiplica todo. Sin N objetivo no hay diseño.
Costo
Chequeos por tick: todos con todos es N². Lo que mata antes que la memoria.
Atajo
Rejilla que parte el mapa: solo celdas vecinas. Mismo resultado, fracción del costo.
| Mundo | Vecinos | Atajo típico |
|---|---|---|
| Multitud | peatones cerca (Tema 34) | celdas que solo miran al lado |
| Epidemia | contactos en radio (Tema 32) | rejilla que evita pares lejanos |
| Tráfico | auto de adelante (Tema 33) | orden por carril, no todos |
| Mercado | par de feria (Tema 36) | rondas por turnos, no todos |
03 · Costo
Fuerza bruta frente a rejilla
El doble bucle cobra N²; la rejilla cobra N por vecinos reales. Con N chico empatan, con N grande no hay partido.
Fuerza bruta
Todos con todos
Doble bucle: chequeos = N·(N−1)/2. Simple y correcta, imposible con miles.
Rejilla espacial
Solo los de al lado
Celdas más vecinas: chequeos = N·k. Misma regla, costo lineal en la práctica.
- Escalabilidad
- Cómo crece el costo con N. Se mide con chequeos y ms por tick.
- Complejidad
- Forma del costo: cuadrática duele, lineal aguanta. El apellido del doble bucle.
- Rejilla
- Partido del mapa en celdas del tamaño del radio: solo 9 celdas se miran. El atajo del tema.
- Lote
- Corridas por partes o en paralelo: partir N para repetir. Puerta al Tema 47.
04 · Ciclo
La ronda que mide antes de crecer
Cada escalado cuenta, parte y repite, en este orden:
- 1Medir el costo.
Chequeos y ms con N chico en ambos métodos: el mapa del dolor.
- 2Partir el mapa.
Rejilla con celda ≥ radio: solo vecinas se comparan.
- 3Repetir en grande.
Subir N con rejilla y vigilar ms: lineal aguanta, cuadrática no.
05 · Representación en Python
Doble bucle que duele, rejilla que salva
Contar pares es una fórmula; partir es un diccionario por celda. Mismo resultado, otro costo.
Python en tu navegador. Duplicá N y observá cómo el bruto se cuadruplica y la rejilla acompaña.
def chequeos_bruto(n):
return n * (n - 1) // 2
print(chequeos_bruto(60), chequeos_bruto(600), chequeos_bruto(6000))
Con 60 son miles y con 6000 son millones: el N² avisa antes de correr.
Celda que filtra lejos
Llave de celda por división: lejos ni se mira.
def celda(x, y, radio=0.1):
return (int(x // radio), int(y // radio))
print(celda(0.25, 0.7), celda(0.29, 0.72))
06 · Exploración
Laboratorio: bruto contra rejilla
Nube de agentes con radio vecinal radio sobre rejilla de celdas por lado. Se cuentan pares cercanos con ambos métodos y se cronometra en tu navegador. Verde par cercano, gris punto. ¿A qué N el bruto se vuelve imposible?
El costo a la vista
N·(N−1)/2 vs N·k
Con 120 agentes, la rejilla ahorra.
Cada punto es un agente fijo: la cuadrícula parte el mapa y las líneas unen pares cercanos. Más celdas es filtro más fino hasta el tamaño del radio. Pulsá Nueva réplica para otra nube con los mismos parámetros.
Preguntas para explorar
- Con pocos agentes, ¿el ahorro importa? ¿Por qué con N chico el bruto alcanza aunque sea torpe?
- Subí N al máximo con radio grande. ¿El bruto explota? ¿Qué número lo delata antes que el reloj?
- Repetí 3 veces con valores medios. ¿El ahorro es idéntico? ¿Qué parte es N y qué parte es mapa?
Ver respuestas sugeridas
- No: miles de chequeos ni se sienten. Con N chico la simpleza gana.
- Sí: decenas de miles de pares contra cientos. Los chequeos avisan antes que los ms.
- No exacto: la nube mueve los pares reales. N pone el techo, el mapa pone los vecinos.
07 · Comprensión
Confusiones frecuentes
«Escalar es subir N»
Subir N sin atajo es pedir N². Escalar es cambiar el método y recién subir.
«Rejilla cambia la regla»
Bien hecha da lo mismo: celda ≥ radio mira todo lo que importa. Si cambia, la celda quedó chica.
«Los ms sobran»
Los ms dependen de tu máquina; los chequeos no. Se informan ambos: uno avisa, el otro compara.
«Con N chico alcanza»
Alcanza para la idea, no para la calle. Probar chico, medir y recién agrandar.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: N² que avisa
Ejecutá y compará 100 contra 1000. Luego probá 10 mil.
def bruto(n): return n * (n - 1) // 2
print(bruto(100), bruto(1000), bruto(10000))
Ver solución razonada
Da miles, cientos de miles y decenas de millones: cada cero en N suma dos en costo. El N² no perdona.
Ejercicio 2: predecir el ahorro
Sin ejecutar primero: bruto 20 mil y rejilla 2 mil. ¿Ahorro %?
print((20000 - 2000) / 20000)
Ver solución
Da 0,9: 90 % menos chequeos con el mismo resultado. El atajo paga.
Ejercicio 3: celda que cubre
Si el radio es 0,1 y hay 8 celdas por lado, ¿la celda cubre? Escribilo.
Ver una posible respuesta
print(1 / 8, (1 / 8) >= 0.1)
Celda 0,125: cubre justo. Menos celdas sobra, más celdas miente.
09 · Síntesis
Ideas para recordar
- Escalar es medir costo con N chico antes de subir.
- Bruto es N²; rejilla con celda ≥ radio es N·k.
- Se informa chequeos y ms de ambos con el mismo N.
- Celda chica miente; celda justa ahorra.
- En Python, fórmula de pares más diccionario por celda.
En el próximo tema optimizaremos el rendimiento con grandes poblaciones: tiempo, memoria y optimización.