01 · Punto de partida
Volver sí, pero solo cada tanto
Un estado recurrente vuelve seguro (Tema 30), pero ¿cuándo? Si solo vuelve en pasos pares, tiene período 2: la cadena oscila y π(n) nunca se queda quieta.
La periodicidad es el último obstáculo para la convergencia (Tema 40): con período 1 (aperiódica) hay límite; con d > 1 hay ciclo.
- ¿En qué pasos se puede volver a i: múltiplos de qué d?
- ¿La cadena oscila entre grupos o se mezcla?
- ¿Basta un lazo pᵢᵢ > 0 para romper el ciclo?
- ¿π(n) converge o gira?
02 · Definición
¿Qué es el período?
Tres ideas lo fijan:
MCD de retornos
d(i) = mcd{n ≥ 1 : pᵢᵢ⁽ⁿ⁾ > 0}. Solo múltiplos de d permiten volver.
Aperiódica
d = 1: sin ciclo. Un lazo pᵢᵢ > 0 ya la garantiza.
Periódica
d = 2: bipartita (par/impar). π(n) oscila sin límite.
El período es de clase: estados que se hablan comparten d. En irreducibles hay un solo d.
| Cadena | Retornos a 0 | d |
|---|---|---|
| 0↔1 puro | 2, 4, 6… | 2 (oscila) |
| 0↔1 con lazos | 1, 2, 3… | 1 (converge) |
| Ciclo 0→1→2→0 | 3, 6, 9… | 3 (rota) |
03 · Anatomía
Ciclos, lazos y clases
Cuatro reglas para diagnosticar:
- Lazo ⇒ aperiódica
- Si pᵢᵢ > 0, el 1 entra al conjunto y el mcd cae a 1. El remedio estándar.
- Bipartita d = 2
- La cadena alterna entre dos grupos (par/impar). Típica sin lazos.
- Período de clase
- Todos los que se hablan comparten d. Basta calcularlo en un estado.
- Convergencia
- Solo las aperiódicas (más irreducibles y recurrentes+) tienen Pⁿ → π. Las periódicas giran.
Aperiódica (d = 1)
Se mezcla
π(n) converge. Ideal para estimar π simulando.
Periódica (d > 1)
Gira
π(n) oscila por fase. El promedio temporal sí estabiliza.
04 · Ejemplos
Ciclos que verás en código
Si el grafo es bipartito sin lazos, sospechá d = 2:
- 1Interruptor 0↔1.
Sin lazos: d = 2, oscila siempre.
- 2Con lazos 0,1.
d = 1: el lazo rompe el ciclo.
- 3Reloj 0→1→2→0.
d = 3: rota por fase horaria.
- 4Cola ±1 con quedarse.
Lazos ⇒ d = 1: converge.
- 5Paseo bipartito.
Tablero alterno: par/impar estricto.
05 · Representación en Python
Detectar retornos con Pⁿ
En Python, el período se estima mirando en qué n pᵢᵢ⁽ⁿ⁾ > 0 y tomando el mcd. Con potencias pequeñas alcanza para decidir.
Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Quitá el lazo y mirá el mcd.
import math
def matmul(A, B):
K = len(A)
return [[sum(A[i][k] * B[k][j] for k in range(K)) for j in range(K)] for i in range(K)]
P = [[0.1, 0.9], [0.9, 0.1]] # con lazos chicos
R, retornos = [[1.0, 0.0], [0.0, 1.0]], []
for n in range(1, 9):
R = matmul(R, P)
if R[0][0] > 1e-9:
retornos.append(n)
print("retornos a 0:", retornos)
d = 0
for n in retornos:
d = math.gcd(d, n)
print("d =", d)
Con lazos 0,1 salen retornos 1, 2, 3… y d = 1. Sin lazos solo pares y d = 2.
Ver la oscilación en π(n)
Con d = 2, π(n) no converge: alterna según la paridad:
P = [[0.0, 1.0], [1.0, 0.0]] # flip puro
pi = [1.0, 0.0]
for n in range(6):
print(n, [round(x, 1) for x in pi])
pi = [pi[0]*P[0][0] + pi[1]*P[1][0], pi[0]*P[0][1] + pi[1]*P[1][1]]
06 · Exploración
Laboratorio: del flip a la mezcla
Cadena 0↔1 con lazo q en ambos (quedarse) y flip si no. Con q = 0 es flip puro d = 2: P(Xₙ=1) desde 0 oscila 0, 1, 0, 1… Subí q y la oscilación se amortigua hasta converger en 0,5.
Oscilación vs convergencia
q = 0 → d = 2 · q > 0 → d = 1
Con q 0,00, en n 5 vale 1: fase impar.
La curva es P(Xₙ=1) partiendo de 0. Con q = 0 es cuadrada; con q > 0 se suaviza hacia 0,5.
Preguntas para explorar
- Con q = 0, ¿la curva en n pares e impares cuánto vale? ¿Hay límite?
- Subí q a 0,2. ¿La oscilación persiste o se amortigua? ¿Hacia qué valor?
- ¿Qué lazo mínimo rompe el período? ¿q = 0,05 alcanza?
Ver respuestas sugeridas
- 0 y 1: no hay límite, solo fases. d = 2.
- Se amortigua hacia 0,5: d = 1 con memoria corta.
- Sí: cualquier q > 0 mete el 1 en los retornos y el mcd cae a 1.
07 · Comprensión
Confusiones frecuentes
«Periódica = determinista»
No: el ritmo es rígido pero el camino tiene azar (qué rama del ciclo).
«Con d = 2 no hay estacionaria»
Sí hay π = πP ([0,5 – 0,5]); lo que no hay es convergencia π(n) → π.
«Un lazo chico no cambia nada»
Cambia todo: q = 0,01 ya da d = 1. Cualitativo, no cuantitativo.
«El período se ve en una trayectoria»
Se ve en retornos posibles (Pⁿ), no en una historia ruidosa. Una racha par no prueba d = 2.
08 · Práctica guiada
Ejercicios con Python
Ejercicio 1: mcd de retornos
Con retornos {2, 4, 6} y {3, 6, 9}, calculá d de cada uno.
import math
print(math.gcd(math.gcd(2, 4), 6))
print(math.gcd(math.gcd(3, 6), 9))
Ver solución razonada
2 y 3: el primero es bipartito, el segundo rota de a 3.
Ejercicio 2: flip sin límite
Sin ejecutar primero: desde [1, 0] con flip puro, ¿π(4) y π(5)? Comprobalo.
pi = [1.0, 0.0]
P = [[0.0, 1.0], [1.0, 0.0]]
for n in range(6):
if n in (4, 5):
print(n, pi)
pi = [pi[0]*P[0][0] + pi[1]*P[1][0], pi[0]*P[0][1] + pi[1]*P[1][1]]
Ver solución
π(4) = [1, 0] y π(5) = [0, 1]: oscila sin converger.
Ejercicio 3: romper con lazo
Agregá lazo 0,1 al flip y mirá π(20). ¿Converge? ¿A qué?
Ver una posible respuesta
P = [[0.1, 0.9], [0.9, 0.1]]
pi = [1.0, 0.0]
for _ in range(20):
pi = [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 pi])
Sí: ≈ [0,5 – 0,5]. El lazo 0,1 rompe el ciclo y mezcla.
09 · Síntesis
Ideas para recordar
- d = mcd de retornos posibles; d = 1 aperiódica.
- Un lazo pᵢᵢ > 0 garantiza d = 1.
- Con d > 1, π(n) oscila por fase (no converge).
- El período es de clase: se hereda.
- En Python: Pⁿ + mcd de retornos.
En el próximo tema cerraremos clasificación: irreducibilidad.