01 · Punto de partida
De historias a chances por paso
Simular trayectorias (Temas 19–25) muestra historias; pero para decidir conviene la distribución π(n): ¿con qué chance está la cadena en cada estado en el paso n?
Esa distribución evoluciona con una regla exacta: multiplicar por P. Sin azar, sin réplicas: puro cálculo.
- ¿Dónde empieza π(0): estado seguro o reparto?
- ¿Cómo se obtiene π(1), π(2)… desde π(0)?
- ¿Hacia dónde tiende π(n) con n grande?
- ¿Cuántos pasos faltan para estabilizar?
02 · Definición
¿Qué es π(n)?
Tres ideas la fijan:
Vector fila
π(n) = [P(Xₙ=0), …, P(Xₙ=K−1)]. Entradas ≥ 0 que suman 1.
Paso
π(n+1) = π(n)·P: repartir cada masa según su fila.
Límite
Si converge, va a π con π = πP: la estacionaria (Tema 39).
En 2×2 con a = 0,3 y b = 0,5, la chance de estar en 1 sigue πₙ₊₁ = a + πₙ·(1−a−b): converge a a/(a+b) = 0,375.
| n | π(n) en 0 | π(n) en 1 |
|---|---|---|
| 0 | 1,000 | 0,000 |
| 1 | 0,700 | 0,300 |
| 2 | 0,640 | 0,360 |
| ∞ | 0,625 | 0,375 |
03 · Anatomía
Inicio, paso y velocidad
Cuatro lecturas de la evolución:
- π(0)
- El inicio: seguro en un estado o reparto. Manda los primeros pasos. (Tema 27)
- Paso πP
- Cada multiplicación mezcla según P. N pasos = π(0)·Pⁿ. (Tema 28)
- Velocidad
- Qué tan rápido se olvida π(0): con a+b grande, en 3–5 pasos; con diagonales ≈ 1, lento.
- Límite π
- Si existe, cumple π = πP y ya no cambia. (Temas 39–40)
Trayectorias
Historias con azar
Muestran ruido y casos. Para promediar hacen falta réplicas.
π(n)
Chances exactas
Sin azar: el cálculo da la distribución de todas las historias.
04 · Ejemplos
Evoluciones que anticipan el equilibrio
La misma P, distintos inicios, mismo destino:
- 1Clima desde sol seguro.
π(0) = [1, 0] converge al reparto nublado medio.
- 2Servidor desde caído.
π(0) = [0, 0, 1]: la reparación lo lleva al régimen.
- 3Desde el equilibrio.
Si π(0) = π, nada cambia: ya está estable.
- 4Cadena lenta.
Diagonales 0,99: tarda cientos de pasos en olvidar.
- 5Cadena rápida.
Filas casi iguales: en 2–3 pasos ya está.
05 · Representación en Python
Multiplicar vector por matriz
En Python, π es una lista y el paso es suma ponderada por columnas: π'(j) = Σᵢ π(i)·P(i,j). Repetir N veces da π(N).
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Cambiá π(0) y mirá la convergencia.
P = [[0.7, 0.3], [0.5, 0.5]]
def paso(pi):
K = len(pi)
return [sum(pi[i] * P[i][j] for i in range(K)) for j in range(K)]
pi = [1.0, 0.0]
for n in range(4):
print(n, [round(x, 3) for x in pi])
pi = paso(pi)
Desde [1, 0] la chance de 1 sube 0 → 0,3 → 0,36 → 0,372: se acerca a 0,375 sin simular historias.
Evolución en N pasos de una vez
Encapsular el bucle para comparar inicios:
P = [[0.7, 0.3], [0.5, 0.5]]
def paso(pi):
return [sum(pi[i] * P[i][j] for i in range(len(pi))) for j in range(len(pi))]
def evolucionar(pi0, N):
pi = pi0[:]
for _ in range(N):
pi = paso(pi)
return pi
print([round(x, 4) for x in evolucionar([1.0, 0.0], 10)])
print([round(x, 4) for x in evolucionar([0.0, 1.0], 10)])
06 · Exploración
Laboratorio: π(n) persigue al equilibrio
Cadena 2×2 (a = 0,3, b = 0,5, equilibrio 0,375 en 1). Elegí el inicio π₀(1) y el paso n: la curva muestra P(Xₙ=1) y el punto marca tu n. Cambiá el inicio: todas las curvas van al mismo 0,375.
De π(0) a π
π(n+1) = π(n)·P · π₁ = 0,375
Desde 0, en n 2 la chance de 1 es 0,360: casi en equilibrio.
La curva parte de tu π₀(1) y se pega a 0,375. La distancia cae geométrica: cada paso multiplica el error por (1−a−b) = 0,2.
Preguntas para explorar
- Desde π₀ = 0 y desde π₀ = 1, ¿a qué valor tienden ambas? ¿En cuántos pasos se juntan?
- En n = 0, ¿la distancia es 0? ¿Qué significa empezar lejos?
- Si π₀ = 0,375, ¿la curva se mueve? ¿Por qué?
Ver respuestas sugeridas
- A 0,375; en ~4–5 pasos ya coinciden. El inicio se olvida rápido (1−a−b = 0,2).
- No: es |π₀ − 0,375|. Empezar lejos solo cuesta unos pasos.
- No: es el equilibrio (π = πP). Empezar ahí es quedarse.
07 · Comprensión
Confusiones frecuentes
«π(n) es la trayectoria n»
No: π(n) es la distribución de todas las trayectorias en n. Una lista de chances, no de estados.
«Multiplicar por P es como simular»
Es mejor: da la distribución exacta sin ruido. Simular estima lo que πP calcula.
«El orden da igual: P·π»
Con vectores fila es π·P. P·π es para columnas: mezclarlos transpone el resultado.
«Siempre converge»
No: periódicas oscilan y absorbentes múltiples dependen del inicio. Convergencia se estudia (Tema 40).
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: un paso a mano
Con π = [0,5 – 0,5] y P 2×2 (a = 0,3, b = 0,5), calculá π(1) a mano y verificá.
P = [[0.7, 0.3], [0.5, 0.5]]
pi = [0.5, 0.5]
pi1 = [pi[0]*P[0][0] + pi[1]*P[1][0], pi[0]*P[0][1] + pi[1]*P[1][1]]
print([round(x, 3) for x in pi1])
Ver solución razonada
Da [0,6 – 0,4]: cada columna pondera las filas por π. La suma sigue 1,0.
Ejercicio 2: olvidar el inicio
Sin ejecutar primero: desde [1, 0] y [0, 1], ¿π(5) será igual o distinto? Comprobalo.
P = [[0.7, 0.3], [0.5, 0.5]]
def evolucionar(pi0, N):
pi = pi0[:]
for _ in range(N):
pi = [sum(pi[i] * P[i][j] for i in range(2)) for j in range(2)]
return pi
print([round(x, 4) for x in evolucionar([1, 0], 5)])
print([round(x, 4) for x in evolucionar([0, 1], 5)])
Ver solución
Ambos dan ≈ [0,625 – 0,375]: en 5 pasos el inicio ya se olvidó (error ×0,2⁵).
Ejercicio 3: velocidad del olvido
Compará el error en n = 3 con (a+b) = 0,8 vs 0,2. ¿Cuál olvida más rápido?
Ver una posible respuesta
print("rápida:", round(0.2**3, 4))
print("lenta:", round(0.8**3, 4))
0,008 vs 0,512: con 1−a−b = 0,2 el error se esfuma; con 0,8 persiste. Diagonales altas = memoria larga.
09 · Síntesis
Ideas para recordar
- π(n) es la distribución en n; evoluciona con πP.
- π(n) exacto reemplaza miles de réplicas para chances.
- El inicio manda al principio; P manda al final.
- En Python: listas fila + bucle de pasos con assert de suma 1.
- Si converge, va a π = πP.
En el próximo tema detallaremos el punto de partida: distribución inicial.