01 · Punto de partida
Todas las chances en una tabla
Las pᵢⱼ sueltas (Tema 23) se ordenan en una tabla P de K×K: la fila i es el futuro estando en i. Con P y el estado actual se simula; con P y π(n) se predice (Tema 26).
Leer P es leer la cadena: diagonales altas = quietud, filas iguales = independencia, ceros = grafo (Tema 22).
- ¿Qué dice la fila i: a dónde va desde i?
- ¿Suman 1 todas las filas?
- ¿Dónde están los ceros y qué grafo dibujan?
- ¿Qué fila es más ruidosa (repartida) y cuál más segura?
02 · Definición
¿Qué es P?
Tres condiciones la definen:
Tabla K×K
Casillero (i, j) = pᵢⱼ. Orden de S fija filas y columnas.
Filas = 1
Cada fila suma 1 y sus entradas son ≥ 0. Matriz estocástica.
Fila = futuro
Estando en i, la fila i sortea el próximo. P es el motor de un paso.
Convención del curso: vectores fila π con π(n+1) = π(n)·P. Las columnas no suman 1 (salvo doble estocástica).
| Desde \ hacia | 0 libre | 1 ocupado | 2 caído |
|---|---|---|---|
| 0 | 0,60 | 0,35 | 0,05 |
| 1 | 0,40 | 0,50 | 0,10 |
| 2 | 0,90 | 0,00 | 0,10 |
03 · Anatomía
Diagonal, ceros y filas
Cuatro lecturas rápidas de cualquier P:
- Diagonal pᵢᵢ
- Chance de quedarse. Cerca de 1 = quietud; 0 = movimiento obligado.
- Ceros
- Flechas ausentes del grafo. Estructurales: no se estiman.
- Filas iguales
- El próximo no depende del actual: rachas independientes (caso límite).
- Filas concentradas
- Un 0,95 en una columna = destino casi seguro desde esa fila.
P densa
Todo conecta
Sin ceros: cualquier salto en 1 paso. Muchos parámetros.
P rala
Caminos obligados
Ceros estructurales (colas ±1). Pocos parámetros, grafo visible.
04 · Ejemplos
Matrices que leerás de un vistazo
Antes de calcular, mirá la forma:
- 1Identidad.
Diagonal 1: cada estado absorbente. Nada se mueve.
- 2Filas iguales.
Cada fila [0,5 – 0,5]: el pasado no importa en absoluto.
- 3Cola ±1.
Solo diagonal y vecinas: escalera rala con bordes.
- 4Absorbente en 2.
Fila 2 = [0, 0, 1]: del 2 no se sale (Tema 32).
- 5Ciclo 0→1→2→0.
Unos rotando: determinista en sentido, aleatorio en espera.
05 · Representación en Python
P es lista de listas con filas = 1
En Python, P es lista de listas y el paso sortea la fila actual por acumulada. La validación recorre filas sumando.
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Rompé una fila y mirá el validador.
P = [[0.6, 0.35, 0.05],
[0.4, 0.5, 0.1],
[0.9, 0.0, 0.1]]
def validar(P):
return all(abs(sum(f) - 1) < 1e-9 and all(x >= 0 for x in f) for f in P)
print("filas:", [round(sum(f), 9) for f in P])
print("válida:", validar(P))
Cambiá un 0,35 por 0,45: la fila suma 1,1 y el validador la rechaza. Así se atrapan bugs de tipeo.
Sortear la fila actual
El motor de un paso que usará todo el bloque Markov:
import random
P = [[0.6, 0.35, 0.05],
[0.4, 0.5, 0.1],
[0.9, 0.0, 0.1]]
def paso(x, P=P):
u, ac = random.random(), 0.0
for j, p in enumerate(P[x]):
ac += p
if u < ac:
return j
random.seed(7)
x = 1
for _ in range(6):
x = paso(x)
print(x, end=" ")
06 · Exploración
Laboratorio: leer P como mapa de calor
Anillo 0–1–2–3 con quedarse q, avanzar f y retroceder el resto (como el Tema 22, ahora con números). El color marca la chance: amarillo = casi seguro, oscuro = casi imposible. Movete q y f y mirá filas, diagonal y ceros.
Mapa de calor de P 4×4
fila i = futuro desde i · filas = 1
Con q 0,40 y f 0,40, cada fila reparte 0,40/0,40/0,20.
Filas = desde, columnas = hacia. La diagonal es quedarse; las vecinas, avanzar/retroceder; el resto, ceros del anillo.
Preguntas para explorar
- Con q = 0,9, ¿de qué color es la diagonal? ¿Y las vecinas?
- Con q = 0 y f = 1, ¿cómo queda cada fila? ¿Cuántos ceros hay?
- ¿Alguna fila deja de sumar 1 al mover los sliders? ¿Por qué no?
Ver respuestas sugeridas
- Diagonal amarilla (≈ 0,9), vecinas casi negras: quietud.
- Cada fila [0, 1, 0, 0] rotada: 12 ceros de 16. Anillo determinista.
- No: el resto va a retroceder por construcción. La estocasticidad se preserva.
07 · Comprensión
Confusiones frecuentes
«Las columnas suman 1»
No (salvo doble estocástica). Suman las filas: son distribuciones de salida.
«P simétrica = P cualquiera»
La simetría es un caso especial (reversibilidad futura). La mayoría de P no es simétrica.
«Un 0,9 en (i,j) dice que j es frecuente»
Dice que dado i casi seguro va a j. Si i casi no se visita, j no hereda frecuencia.
«El orden de S no importa»
Importa para leer: permutar S sin permutar P cambia qué fila es qué estado.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: validar y leer filas
Verificá esta P y leé en voz alta qué hace la fila 2.
P = [[0.6, 0.35, 0.05],
[0.4, 0.5, 0.1],
[0.9, 0.0, 0.1]]
print([sum(f) for f in P])
print("fila 2: 90% a 0, 0% a 1, 10% se queda")
Ver solución razonada
Filas = [1,0 – 1,0 – 1,0]: válida. La fila 2 casi siempre vuelve a 0 (reparación) y nunca va a 1: el cero es estructural.
Ejercicio 2: fila rota
Sin ejecutar primero: ¿esta P es válida? Detectá la fila rota.
P = [[0.5, 0.5], [0.3, 0.6]]
print([sum(f) for f in P])
Ver solución
No: la fila 1 suma 0,9. Falta 0,1 (tipeo o probabilidad perdida).
Ejercicio 3: contar ceros
Contá ceros estructurales de una cola 0…4 (±1 con lazos) y calculá la densidad.
Ver una posible respuesta
K = 5
P = [[1 if abs(i - j) <= 1 else 0 for j in range(K)] for i in range(K)]
ceros = sum(1 for i in range(K) for j in range(K) if P[i][j] == 0)
print("ceros:", ceros, "| densidad:", 1 - ceros / K**2)
Ceros = 12 de 25, densidad 0,52. La escalera es rala por construcción.
09 · Síntesis
Ideas para recordar
- P es K×K estocástica: ≥ 0 y filas = 1.
- La fila i es el futuro desde i.
- Diagonal = quietud; ceros = grafo; filas iguales = independencia.
- En Python: lista de listas + validador de filas.
- S fijo ordena filas y columnas para siempre.
En el próximo tema dibujaremos P: diagramas de transición.