Procesos Estocásticos y Cadenas de Markov · Tema 34

Periodicidad

Retornos solo en múltiplos de d: oscilación con período y calma aperiódica.

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:

d

MCD de retornos

d(i) = mcd{n ≥ 1 : pᵢᵢ⁽ⁿ⁾ > 0}. Solo múltiplos de d permiten volver.

1

Aperiódica

d = 1: sin ciclo. Un lazo pᵢᵢ > 0 ya la garantiza.

2

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.

Tres cadenas, tres períodos.
CadenaRetornos a 0d
0↔1 puro2, 4, 6…2 (oscila)
0↔1 con lazos1, 2, 3…1 (converge)
Ciclo 0→1→2→03, 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:

Grafo→retornos→d
  1. 1
    Interruptor 0↔1.

    Sin lazos: d = 2, oscila siempre.

  2. 2
    Con lazos 0,1.

    d = 1: el lazo rompe el ciclo.

  3. 3
    Reloj 0→1→2→0.

    d = 3: rota por fase horaria.

  4. 4
    Cola ±1 con quedarse.

    Lazos ⇒ d = 1: converge.

  5. 5
    Paseo 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.

EXPERIMENTO 34

Oscilación vs convergencia

q = 0 → d = 2 · q > 0 → d = 1

Los resultados numéricos aparecen debajo.
P(Xₙ=1)0,000
Período d2
Amplitud |n − par|0,000
LecturaOscila

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

  1. Con q = 0, ¿la curva en n pares e impares cuánto vale? ¿Hay límite?
  2. Subí q a 0,2. ¿La oscilación persiste o se amortigua? ¿Hacia qué valor?
  3. ¿Qué lazo mínimo rompe el período? ¿q = 0,05 alcanza?
Ver respuestas sugeridas
  1. 0 y 1: no hay límite, solo fases. d = 2.
  2. Se amortigua hacia 0,5: d = 1 con memoria corta.
  3. 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.