01 · Punto de partida
Un mundo o varios
Dos grupos sin puente son dos mundos: lo que empieza a la izquierda muere a la izquierda. Con un puente (aunque chico) vuelven a ser un mundo: todo llega a todo.
Esa es la irreducibilidad: todos los estados se comunican. Cierra el bloque de clasificación y abre tiempos y equilibrio.
- ¿Desde i se llega a j por algún camino?
- ¿Y de vuelta de j a i?
- ¿Hay un puente cuya chance 0 parte el mundo?
- ¿El destino final depende del inicio?
02 · Definición
¿Qué es irreducible?
Una sola condición exigente:
Ida y vuelta
i→j y j→i por algún camino (≥ 1 paso) para todo par i, j.
Una clase
Todo S es una sola clase de comunicación. Sin islas.
Puente
Una flecha con p > 0 que une mundos. En 0 los parte.
En finitas, irreducible ⇒ todos recurrentes (un mundo cerrado). El destino a largo plazo no depende del inicio (salvo período).
| Caso | Clases | Destino |
|---|---|---|
| Anillo 0–1–2–3 | 1 (todas) | Único, no depende del inicio. |
| Dos mundos sin puente | 2 cerradas | El mundo inicial decide. |
| Fuga + trampa | 1 abierta + 1 cerrada | La trampa (si se alcanza). |
03 · Anatomía
Puente, corte y herencia
Cuatro reglas para dictaminar:
- Puente > 0
- Una sola flecha ida y otra vuelta (o un camino) bastan para unir. La cantidad no importa, la existencia sí.
- Corte en 0
- Si el puente vale 0, el mundo se parte. Un parámetro en cero cambia la topología.
- Herencia
- En irreducibles finitas: recurrencia, período y π unica se comparten.
- Destino único
- Con una sola cerrada, el largo plazo no depende de X₀ (aperiódica mediante).
Irreducible
Un mundo
Todo llega a todo. Una π, un destino, un análisis.
Reducible
Varios mundos
Destinos rivales o trampas. El inicio elige.
04 · Ejemplos
Mundos que se unen o se parten
Buscá el puente: si existe en ambas direcciones, hay un mundo.
- 1Anillo con lazos.
Irreducible: todo conecta por el anillo.
- 2Dos equipos sin pases.
Reducible: cada equipo es un mundo cerrado.
- 3Fuga + trampa.
Reducible: abierta → cerrada sin vuelta.
- 4Puente chico b = 0,01.
Irreducible igual: tarda, pero llega.
- 5Cola 0…K.
Irreducible en su rango: escalera conectada con bordes.
05 · Representación en Python
Todos con todos por BFS
En Python, irreducible se verifica con alcanzabilidad mutua: desde cada i se llega a cada j. Un solo par sin vuelta y es reducible.
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Cortá el puente y mirá el diagnóstico.
def alcanzables(g, i):
vistos, pila = set(), [i]
while pila:
x = pila.pop()
if x in vistos:
continue
vistos.add(x)
pila.extend(g.get(x, []))
return vistos
def irreducible(g):
nodos = list(g)
return all(j in alcanzables(g, i) for i in nodos for j in nodos)
anillo = {0: [0, 1, 3], 1: [0, 1, 2], 2: [1, 2, 3], 3: [2, 3, 0]}
print("anillo:", irreducible(anillo))
El anillo da True: 4 nodos, un mundo. Cada par tiene ida y vuelta por el aro.
Cortar el puente
Sin las flechas 1↔2 quedan dos mundos:
def alcanzables(g, i):
vistos, pila = set(), [i]
while pila:
x = pila.pop()
if x in vistos:
continue
vistos.add(x)
pila.extend(g.get(x, []))
return vistos
def irreducible(g):
nodos = list(g)
return all(j in alcanzables(g, i) for i in nodos for j in nodos)
corte = {0: [0, 1], 1: [0, 1], 2: [2, 3], 3: [2, 3]}
print("corte:", irreducible(corte))
print("0->2:", 2 in alcanzables(corte, 0))
06 · Exploración
Laboratorio: el puente une mundos
Izquierda {0, 1} y derecha {2, 3} con puente b = P(1→2) = P(2→1). Con b = 0 son dos mundos (colores separados, destinos propios); con b > 0 el puente verde los une en uno. Simulamos 200 pasos desde 0 y desde 3.
De dos mundos a uno
b = 0 → 2 clases · b > 0 → 1 clase
Con b 0,00, nadie cruza: dos mundos cerrados.
El grosor verde del puente marca b. Las barras laterales muestran cruces en 200 pasos: con b = 0 son cero.
Preguntas para explorar
- Con b = 0, ¿desde 0 se llega a la derecha en 200 pasos? ¿Y al revés?
- Subí b a 0,05. ¿Ya hay cruces? ¿Cuántas clases quedan?
- ¿Un puente de un solo sentido (1→2 sin vuelta) une o no?
Ver respuestas sugeridas
- No y no: 0 % ambos. Dos clases cerradas.
- Sí: aunque pocas, hay cruces y queda 1 clase. b > 0 une.
- No: haría abierta → cerrada (fuga), no un mundo. Hace falta ida y vuelta.
07 · Comprensión
Confusiones frecuentes
«Puente chico no une»
Sí une: b = 0,001 ya comunica (tarda, pero llega). Solo el 0 exacto parte.
«Irreducible = denso»
No: el anillo ralo es irreducible. Densidad es cantidad; irreducibilidad es alcance.
«Un sentido alcanza»
No: hace falta vuelta. Un sentido da fuga (abierta → cerrada).
«Irreducible garantiza convergencia»
Garantiza destino único, no convergencia: falta aperiódica (d = 1).
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: diagnosticar un mundo
¿Esta cadena 3×3 en anillo es irreducible? Verificá todos con todos.
def alcanzables(g, i):
vistos, pila = set(), [i]
while pila:
x = pila.pop()
if x in vistos:
continue
vistos.add(x)
pila.extend(g.get(x, []))
return vistos
g = {0: [1, 2], 1: [0, 2], 2: [0, 1]}
print(all(j in alcanzables(g, i) for i in g for j in g))
Ver solución razonada
True: denso y simétrico, claramente un mundo.
Ejercicio 2: partir con un cero
Sin ejecutar primero: al quitar 1→2 y 2→1 del anillo 0–1–2–3, ¿sigue irreducible? Comprobalo.
def alcanzables(g, i):
vistos, pila = set(), [i]
while pila:
x = pila.pop()
if x in vistos:
continue
vistos.add(x)
pila.extend(g.get(x, []))
return vistos
g = {0: [0, 1, 3], 1: [0, 1], 2: [2, 3], 3: [2, 3, 0]}
nodos = list(g)
print(all(j in alcanzables(g, i) for i in nodos for j in nodos))
print("0->2:", 2 in alcanzables(g, 0))
Ver solución
Sigue True por el camino 0→3→2: el aro se recorre por el otro lado. Cortar un puente no siempre parte.
Ejercicio 3: puente mínimo
¿Qué par de flechas une {0,1} con {2,3} en un mundo? Escribí el grafo mínimo.
Ver una posible respuesta
g = {0: [1], 1: [0, 2], 2: [3, 1], 3: [2]}
print("puente: 1->2 y 2->1")
Bastan 1→2 y 2→1: ida y vuelta mínimas. Una sola no une.
09 · Síntesis
Ideas para recordar
- Irreducible: todos ⟷ todos; una sola clase.
- Un puente > 0 en ambas direcciones une mundos.
- En finitas: un mundo ⇒ todos recurrentes.
- Destino único (aperiódica mediante).
- En Python: BFS mutua entre todo par.
Cerramos clasificación. En el próximo bloque mediremos tiempos: alcance y absorción.