01 · Punto de partida
Moverse mezcla, el vecindario filtra
En el Tema 12 los agentes caminaban y se cruzaban. Pero ¿todos los que están cerca cuentan igual? ¿Y los lejos conectados por amistad, jerarquía o mercado? El vecindario es la lista corta de otros que este agente toma en cuenta en este paso.
Esa lista manda en todo lo anterior: a quién percibo (Tema 11), con quién me encuentro (Tema 9), a quién escucho (Tema 10). Cambiar la definición de vecino cambia el modelo sin tocar ninguna regla.
- ¿Vecino es el que está cerca o el que está conectado?
- ¿Cuántos vecinos como máximo y a qué distancia?
- ¿La relación es mutua o dirigida?
- ¿El vecindario cambia cuando se mueven o es fijo?
02 · Definición
Distancia, red y celda
Tres criterios cubren casi todos los modelos del curso, del mapa al grafo:
Por distancia
Métrico: vecinos los que están a menos del radio. Se mueve con el cuerpo y se recalcula cada paso.
Por red
Topológico: vecinos los conectados por amistad, equipo o mercado, aunque estén lejos. La red persiste.
Por celda
Celular: vecinos las casillas linderas (Moore 8, von Neumann 4). Fijo, barato y perfecto para rejillas (Tema 14).
| Mundo | Criterio | Vecinos típicos |
|---|---|---|
| Multitud | distancia < 2 m | cuerpos que empujan y frenan |
| Opiniones | red de amistad | contactos que influyen aunque lejos |
| Juego de la Vida | celda Moore | 8 casillas linderas, ni una más |
| Mercado | red + distancia | vendedores cercanos y conocidos |
03 · Tipos
Métrico que respira frente a topológico que persiste
El métrico cambia a cada paso con el movimiento; el topológico aguanta aunque se alejen. Muchos modelos combinan ambos con un tope.
Vecindario métrico
Los de alrededor
Todos dentro del radio: si dist < r → vecino. Simple y realista en multitudes, pero el costo crece con la densidad y hay que recalcularlo.
Vecindario topológico
Los k más cercanos
Los k conectados aunque el radio cambie: bandadas que siguen a 7 vecinos fijos. Estable y barato, pero ignora amontonamientos.
- Vecindario
- Lista de otros que el agente considera en este paso. Todo lo que no está en la lista no existe para la regla.
- Grado
- Cantidad de vecinos de un agente. El grado medio mide cuán conectada está la población.
- Moore / von Neumann
- En rejilla: Moore son 8 linderas con diagonales; von Neumann son 4 ortogonales. Base de autómatas (Temas 27–28).
- Dirigido
- Relación no mutua: a escucha a b pero b no escucha a a. Seguidores, jerarquías y contagios asimétricos.
04 · Ciclo
El paso con lista corta
Cada paso reconstruye vecindarios antes de decidir, en este orden:
- 1Listar candidatos.
Todos los agentes o celdas que podrían contar, según espacio o red.
- 2Filtrar por criterio.
Aplicar radio, k más cercanos o celda, con tope y sin duplicar (i < j si es mutuo).
- 3Usar solo vecinos.
Percepción, encuentro y comunicación (Temas 9–11) leen esa lista corta.
05 · Representación en Python
Vecinos por radio y por k cercanos
El mundo guarda posiciones; cada agente pide su lista. Por radio devuelve todos los cercanos; por k devuelve los más próximos con tope.
Python en tu navegador. Cambiá el radio y el tope k y observá cómo se achica la lista.
import math
pos = [(0.2, 0.2), (0.25, 0.22), (0.9, 0.9), (0.3, 0.25)]
def vecinos_radio(i, radio=0.15):
xi, yi = pos[i]
return [j for j, (x, y) in enumerate(pos)
if j != i and math.hypot(x - xi, y - yi) < radio]
print(vecinos_radio(0))
Con radio 0,15, el agente 0 ve a 1 y 3 pero no a 2: el lejano queda fuera aunque exista.
Tope k para no saturarse
En multitudes densas el radio devuelve cientos; el tope k se queda con los más cercanos.
def vecinos_k(i, radio=0.3, k=2):
xi, yi = pos[i]
cand = []
for j, (x, y) in enumerate(pos):
if j == i:
continue
d = math.hypot(x - xi, y - yi)
if d < radio:
cand.append((d, j))
cand.sort()
return [j for _, j in cand[:k]]
print(vecinos_k(0, radio=0.3, k=2))
06 · Exploración
Laboratorio: radio que conecta, tope que recorta
Los agentes están quietos: solo cambia la red. Cada uno conecta con sus vecinos dentro del radio, hasta un tope k de más cercanos. Las líneas son vínculos; los grises están aislados. ¿Cuánto radio hace falta para que nadie quede solo?
El criterio dibuja la red
vecino si dist < radio, hasta k
Con 40 agentes y radio 0,20, la red está fragmentada.
Cada punto es un agente fijo y cada línea un vínculo de vecindario. Los puntos apagados no tienen vecinos con este criterio. Pulsá Nueva réplica para otra disposición con los mismos parámetros.
Preguntas para explorar
- Con radio mínimo, ¿cuántos aislados hay? ¿Por qué sin alcance no hay vecindario aunque haya multitud?
- Subí el radio al máximo con k = 1. ¿El grado medio se dispara o lo frena el tope? ¿Qué red dibuja?
- Duplicá los agentes sin tocar radio ni k. ¿Suben los enlaces? ¿Qué dice eso de densidad contra atención?
Ver respuestas sugeridas
- Casi todos: sin radio que los alcance no hay candidatos. El vecindario métrico exige coincidir en espacio.
- Lo frena el tope: cada uno mira a un solo cercano y la red se vuelve cadena fragmentada. Radio grande con k chico da red rala pero barata.
- Sí hasta saturar k: más densidad da más candidatos, pero cada agente atiende hasta k. La densidad crea oferta, el tope pone el límite.
07 · Comprensión
Confusiones frecuentes
«Vecino es el que está cerca»
Solo en el criterio métrico. En red el vecino puede estar lejos y en celda el vecino es la casilla lindera aunque esté vacía. El criterio se declara.
«Más vecinos siempre informan mejor»
Más vecinos es más cómputo y más ruido: promediar cientos borra lo local. El tope k protege la localidad y la escala.
«Si a es vecino de b, b es vecino de a»
Solo si el vínculo es mutuo. Con k cercanos o jerarquías la relación es dirigida: a atiende a b pero b atiende a otros.
«El vecindario se calcula una vez»
Solo si nadie se mueve y la red es fija. Con movimiento el métrico se recalcula cada paso; si no, cada agente vive en el pasado.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: listar por radio
Ejecutá y verificá quiénes son vecinos del 0. Luego bajá el radio a 0,05 y comprobá que se queda solo.
import math
pos = [(0.2, 0.2), (0.25, 0.22), (0.9, 0.9)]
xi, yi = pos[0]
radio = 0.1
print([j for j, (x, y) in enumerate(pos) if j != 0 and math.hypot(x - xi, y - yi) < radio])
Ver solución razonada
Da [1]: solo el segundo está a ~0,05. Con radio 0,05 el límite es estricto y puede quedar []: aislado por criterio.
Ejercicio 2: predecir el tope
Sin ejecutar primero: 5 candidatos en radio y k = 2. ¿Cuántos vecinos devuelve? ¿Importa el orden?
cand = [(0.20, 4), (0.05, 1), (0.12, 2), (0.08, 3), (0.15, 0)]
cand.sort()
print([j for _, j in cand[:2]])
Ver solución
Devuelve 2 vecinos: [1, 3], los más cercanos. El orden por distancia decide quién entra con k chico.
Ejercicio 3: Moore contra von Neumann
En rejilla, celda (1,1). ¿Cuántos vecinos Moore y cuántos von Neumann? Escribí ambas listas.
Ver una posible respuesta
moore = [(0,0),(0,1),(0,2),(1,0),(1,2),(2,0),(2,1),(2,2)]
neumann = [(0,1),(1,0),(1,2),(2,1)]
print(len(moore), len(neumann))
Da 8, 4: Moore suma diagonales, von Neumann no. Elegir uno cambia contagios y difusiones en rejilla (Temas 14 y 27).
09 · Síntesis
Ideas para recordar
- El vecindario es la lista corta que la regla sí ve: distancia, red o celda.
- Métrico respira con el movimiento; topológico persiste por conexión; celular fija la rejilla.
- Radio pone alcance y k pone atención: juntos dan red local y escalable.
- El vínculo puede ser dirigido: atender no siempre es mutuo.
- En Python, vecinos es filtrar por criterio y ordenar por distancia antes del tope.
En el próximo tema estudiaremos los espacios discretos: rejillas, celdas y mundos por casillas.