01 · Punto de partida
El reparto que ya no se mueve
Si la cadena arranca repartida como π y un paso después sigue repartida igual, está en equilibrio: πP = π. Ese π es el destino de π(n) y la base de μ = 1/π.
En 2×2 tiene fórmula cerrada; en K×K es un sistema lineal. Siempre se verifica multiplicando.
- ¿Qué π cumple π = πP y suma 1?
- ¿Existe uno solo o varios?
- ¿Cómo se calcula en 2×2 sin álgebra pesada?
- ¿La simulación larga lo confirma?
02 · Definición
¿Qué es π?
Tres condiciones la definen:
Invariante
πP = π: un paso no la cambia.
Distribución
π ≥ 0 y suma 1: es un reparto válido.
Única
En irreducible positiva: una sola. Con varias cerradas, una por mundo.
Con a = 0,3 y b = 0,5: π₀ = 0,5/0,8 = 0,625 y π₁ = 0,3/0,8 = 0,375. Verificación: [0,625 – 0,375]·P = [0,625 – 0,375].
| Caso | π₀ = b/(a+b) | π₁ = a/(a+b) |
|---|---|---|
| a = 0,3, b = 0,5 | 0,625 | 0,375 |
| a = b | 0,5 | 0,5 (simétrica) |
| a = 0,9, b = 0,1 | 0,1 | 0,9 (vive en 1) |
03 · Anatomía
Balance, unicidad y uso
Cuatro lecturas de π:
- Balance global
- Lo que sale de cada estado iguala lo que entra (πP = π por columnas ponderadas).
- Unicidad
- Irreducible + recurrente+ ⇒ una π. Reducible ⇒ una por cerrada (el inicio elige).
- Frecuencias
- πᵢ = fracción del tiempo en i a largo plazo. Lo que estiman las simulaciones largas.
- Base de μ
- μᵢ = 1/πᵢ: π sostiene retornos, dimensionamiento y SLA.
π(n)
En el paso n
Depende del inicio (Temas 26–27). Viaja hacia π.
π
El destino
No depende del inicio (irreducible). Ya no viaja.
04 · Ejemplos
Equilibrios que se usan para decidir
Todo «a largo plazo, ¿qué fracción?» es un π:
- 1Servidor ocupado 37,5 %.
π₁ = 0,375: dimensiona capacidad y turnos.
- 2Clima lluvioso 40 %.
π_lluvia agenda riego y stocks.
- 3Cliente activo 80 %.
π_activo proyecta ingresos recurrentes.
- 4Máquina caída 5 %.
π_caído = indisponibilidad para SLA.
- 5Dos mundos.
Sin π única: una por mundo según inicio.
05 · Representación en Python
Calcular π 2×2 y verificar πP
En Python, π 2×2 es fórmula y la verificación es multiplicar: πP debe devolver π. Con K×K se itera πP hasta converger (potencia).
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Cambiá a y b y verificá.
a, b = 0.3, 0.5
pi = [b / (a + b), a / (a + b)]
P = [[1 - a, a], [b, 1 - b]]
piP = [pi[0]*P[0][0] + pi[1]*P[1][0], pi[0]*P[0][1] + pi[1]*P[1][1]]
print([round(x, 4) for x in pi])
print([round(x, 4) for x in piP])
π = [0,625 – 0,375] y πP la replica: equilibrio verificado sin simular.
Iterar hasta π (método de potencias)
Con cualquier π(0), repetir πP converge a π (aperiódica):
P = [[0.7, 0.3], [0.5, 0.5]]
pi = [1.0, 0.0]
for _ in range(30):
pi = [pi[0]*P[0][0] + pi[1]*P[1][0], pi[0]*P[0][1] + pi[1]*P[1][1]]
print([round(x, 4) for x in pi])
06 · Exploración
Laboratorio: π manda el reparto
Cadena 2×2 con a y b ajustables. Las barras son π₀ y π₁ exactas; los puntos blancos, la fracción simulada en 5000 pasos. Movete a y b: las barras y los puntos viajan juntos.
Equilibrio exacto vs simulado
π₀ = b/(a+b) · π₁ = a/(a+b)
Con a 0,30 y b 0,50, π = [0,625 – 0,375].
Las barras son cálculo; los puntos, 5000 pasos simulados. Si coinciden, el generador y la fórmula se confirman mutuamente.
Preguntas para explorar
- Con a = 0,9 y b = 0,1, ¿π₁ cuánto da? ¿La simulada lo confirma?
- Igualá a = b. ¿π queda 50/50 siempre? ¿Por qué (simetría)?
- Generá nuevas simulaciones: ¿las barras o los puntos se mueven?
Ver respuestas sugeridas
- 0,9: vive en 1 (entra fácil, sale difícil). La simulada ≈ 0,9.
- Sí: π₀ = π₁ = 0,5. Tasas iguales equilibran.
- Los puntos (ruido); las barras son cálculo fijo.
07 · Comprensión
Confusiones frecuentes
«π es π(0)»
No: π(0) es el inicio arbitrario; π es el destino. Solo coinciden si se empieza en equilibrio.
«π = πP ya suma 1»
No: hay infinitas soluciones escaladas. La estacionaria exige además suma 1 y ≥ 0.
«Hay π única siempre»
Solo en irreducible positiva. Con varias cerradas hay una por mundo.
«π dice dónde estoy»
Dice la fracción del tiempo, no la posición actual. Es reparto, no GPS.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: calcular π 2×2
Con a = 0,2 y b = 0,8, calculá π y verificá πP = π.
a, b = 0.2, 0.8
pi = [b / (a + b), a / (a + b)]
P = [[1 - a, a], [b, 1 - b]]
piP = [pi[0]*P[0][0] + pi[1]*P[1][0], pi[0]*P[0][1] + pi[1]*P[1][1]]
print(pi, [round(x, 6) for x in piP])
Ver solución razonada
π = [0,8 – 0,2] y πP la replica: vive 80 % en 0 (sale poco, entra mucho).
Ejercicio 2: simular vs π
Sin ejecutar primero: con 8000 pasos y π₁ = 0,375, ¿fracción simulada cerca de qué? Comprobalo.
import random
random.seed(7)
a, b, x, unos, N = 0.3, 0.5, 0, 0, 8000
for _ in range(N):
x = 1 if random.random() < (a if x == 0 else 1 - b) else 0
unos += x
print(round(unos / N, 3))
Ver solución
≈ 0,375 (±0,01): la simulación larga confirma la fórmula.
Ejercicio 3: μ desde π
Con π = [0,625 – 0,375], calculá μ₀ y μ₁. ¿Cuál vuelve antes?
Ver una posible respuesta
print(1 / 0.625, 1 / 0.375)
1,6 y 2,67: el 0 (frecuente) vuelve antes (Tema 38).
09 · Síntesis
Ideas para recordar
- π = πP con ≥ 0 y suma 1: equilibrio.
- En 2×2: π₀ = b/(a+b), π₁ = a/(a+b).
- Única en irreducible positiva; una por mundo si no.
- πᵢ = fracción del tiempo; μᵢ = 1/πᵢ.
- En Python: fórmula + check πP y simulación larga.
En el próximo tema veremos si π(n) llega a π: convergencia.