Procesos Estocásticos y Cadenas de Markov · Tema 03

Espacio de estados

Todos los valores que X(t) puede tomar: cómo describir S, clasificarlo y codificarlo con índices para simular.

01 · Punto de partida

Del estado al conjunto de estados

En el Tema 2 elegimos el estado X(t): clientes en cola, stock, modo del servidor. Ahora damos un paso más: reunir todos los valores posibles en un solo conjunto S, el espacio de estados.

Sin S explícito no hay simulador serio: no podemos validar entradas, dimensionar una matriz P ni decidir si el sistema se satura, se vacía o deriva.

  • ¿Qué valores puede tomar X(t) y cuáles nunca?
  • ¿S es finito, infinito numerable o continuo?
  • ¿Las etiquetas tienen orden (0, 1, 2…) o no (sol, lluvia)?
  • ¿Cómo numeramos S para usarlo en código y matrices?

02 · Definición

¿Qué es el espacio de estados?

Todo S se describe con tres preguntas:

▦

Elementos

Quiénes son: {libre, ocupado}, {0, 1, 2…}, [0, 100]. Sin lista, no hay validación.

∞

Tamaño

Finito (6 caras), infinito numerable (0, 1, 2…) o continuo (temperatura real).

#

Índice

Numeración 0…K−1 para vectores y matrices. Las etiquetas se mapean a posiciones.

Esa pertenencia es la primera verificación de un simulador (Tema 35 del curso introductorio): si X(t) sale de S, la regla está mal o S está mal definido.

Clasificación de espacios con ejemplos del curso.
Tipo de SEjemploQué implica en código
Finito{sol, lluvia}, {0, 1, 2, 3, 4, 5}Lista cerrada; cabe en una matriz P de K × K.
Infinito numerable{0, 1, 2…} clientes en cola sin topeEnteros sin cota; se trunca para simular.
Continuo[0, 100] nivel de bateríaReales; se discretiza o se modela por densidad.
Mixto / vector(stock, en_camino), (cola, modo)Producto cartesiano; el índice combina componentes.

03 · Anatomía

Cardinalidad, orden y bordes

Tres distinciones evitan la mayoría de los errores de modelado:

S finito
K valores: caras, modos, niveles 0…K−1. Ideal para Markov con matriz. (Temas 19–28)
S numerable
0, 1, 2… sin fin: conteos como N(t) en Poisson. En la práctica se corta en un máximo.
S continuo
Intervalos reales: temperatura, precio, nivel. Requiere discretizar o cambiar de técnica.
Bordes
Límites con regla propia: la cola no baja de 0, el depósito no pasa del tope. El borde es parte de S.

S discreto

Se cuenta

Estados separados: se puede enumerar, tabular P y dibujar el diagrama de flechas.

S continuo

Se mide

Infinitos valores entre dos marcas: se trabaja con rangos, topes y precisión.

04 · Ejemplos

Espacios que aparecen en todo el curso

Estos S volverán en Poisson, Markov y aplicaciones. Conviene fijarlos ahora:

Sistema→Estado X(t)→S explícito
  1. 1
    Moneda / servidor binario.

    S = {0, 1} o {libre, ocupado}. El más chico útil: cabe en una P de 2 × 2.

  2. 2
    Dado / calificación.

    S = {1,…,6}. Finito ordenado con bordes 1 y 6.

  3. 3
    Cola sin tope.

    S = {0, 1, 2…}. Numerable: el laboratorio lo truncará en K−1.

  4. 4
    Depósito con tope.

    S = {0,…,K}. Finito con bordes absorbentes o reflejantes según la regla.

  5. 5
    Clima + stock.

    S = {sol, lluvia} × {0,…,K}. Vector mixto: el tamaño total es 2 × (K+1).

05 · Representación en Python

S es una lista, el índice es la posición

En Python, un espacio finito es una lista. Las etiquetas legibles viven en la lista y los cálculos usan índices 0…K−1: ese puente será la base de la matriz de transición (Tema 24).

Python en tu navegador. Estos bloques se ejecutan localmente con Pyodide, sin instalar nada. Podés editar S y volver a ejecutar para ver la validación.

S = ["libre", "ocupado", "caído"]
indice = {s: i for i, s in enumerate(S)}

def validar(estado):
    return estado in indice

print("S =", S, "| K =", len(S))
print("índice de 'ocupado':", indice["ocupado"])
print("¿'roto' pertenece a S?", validar("roto"))

Probá agregar "mantenimiento" a S: ¿qué cambia en K y en los índices? ¿Qué habría que agrandar después?

Bordes explícitos

Un S acotado {0,…,K} necesita regla de borde. Sin ella, la caminata se escapa de S:

def paso_acotado(x, K, sube=True):
    # S = {0, ..., K}. Reflejo: no se sale de S.
    x = x + 1 if sube else x - 1
    if x < 0:
        x = 0
    if x > K:
        x = K
    return x


K = 5
print([paso_acotado(x, K, sube=True) for x in [4, 5]])
print([paso_acotado(x, K, sube=False) for x in [0, 1]])

06 · Exploración

Laboratorio: vivir dentro de un S finito

Caminata en S = {0, …, K−1} con reflejo en los bordes: si intenta salir, se queda en el borde. Cambiá el tamaño K y observá cómo el mismo azar produce historias distintas según el espacio que lo contiene.

EXPERIMENTO 03

S finito con bordes reflejantes

X(n+1) = reflejo(X(n) ± 1) en {0, …, K−1}

Los resultados numéricos aparecen debajo.
Media final0,00
Estados visitados0 de 6
Toques de borde0 %
LecturaInterior

Con K 6, las trayectorias rebotan entre 0 y 5.

Las líneas horizontales grises son los estados de S. Ninguna trayectoria puede salir de la franja: los bordes la devuelven. Con K chico el borde manda; con K grande casi no se toca.

Preguntas para explorar

  1. Con K = 2, ¿cuántos valores puede tomar X(n)? ¿Qué proceso de 2 estados conocés?
  2. Con K = 12 y X(0) = 3, ¿se tocan los bordes en 40 pasos? ¿Qué cambia si X(0) = 11?
  3. Si quitás el reflejo del código, ¿sigue valiendo X(n) ∈ S?
Ver respuestas sugeridas
  1. Solo {0, 1}: es el caso binario (moneda, libre/ocupado). Todo cabe en una matriz 2 × 2.
  2. Desde 3 casi no se llega a 11 en 40 pasos; desde 11 el borde superior se toca seguido. El inicio importa en horizontes cortos.
  3. No: sin reflejo la caminata sale de S y la pertenencia X(n) ∈ S se rompe. El borde es parte del modelo.

07 · Comprensión

Confusiones frecuentes

«El espacio es el estado actual»

El estado es un elemento x ∈ S; el espacio es todo el conjunto S. Confundirlos es confundir un habitante con la ciudad.

«Las etiquetas ya son índices»

«Caído» no es el 2 hasta que lo numerás. Sin el mapeo etiqueta → 0…K−1 no hay vectores ni matrices.

«Infinito se programa igual»

No: {0, 1, 2…} se trunca en un K con regla de borde declarada. Infinito en el papel, finito en la máquina.

«El borde es un detalle»

El borde decide saturaciones, vaciados y absorciones. Dos modelos con igual interior y distinto borde son distintos.

08 · Práctica guiada

Ejercicios con Python

Ejercicio 1: describir S

Ejecutá este espacio mixto y calculá su tamaño total. Luego agregá un modo y recalculá.

climas = ["sol", "lluvia"]
K = 6  # stock 0..5
S = [(c, s) for c in climas for s in range(K)]

print("K por clima:", K)
print("|S| =", len(S))
print(S[:3])
Ver solución razonada

El tamaño es 2 × 6 = 12. Si agregás «nublado», pasa a 3 × 6 = 18. Los espacios producto crecen rápido: por eso conviene el estado mínimo (Tema 2).

Ejercicio 2: validar pertenencia

Sin ejecutar primero: con S = {0,…,5}, ¿qué devuelve validar cada valor? Comprobalo después.

S = list(range(6))

def validar(x):
    return x in S


print(validar(5))
print(validar(6))
print(validar(-1))
Ver solución

Devuelve True, False, False: 5 es el borde superior válido, 6 ya está fuera y −1 también. La pertenencia es la primera verificación del simulador.

Ejercicio 3: mapear etiquetas a índices

Construí el mapeo para S = {libre, ocupado, caído} y usalo para contar visitas por índice.

Ver una posible respuesta
S = ["libre", "ocupado", "caído"]
indice = {s: i for i, s in enumerate(S)}
visitas = [0] * len(S)

for obs in ["libre", "ocupado", "ocupado", "caído", "libre"]:
    visitas[indice[obs]] += 1

print(S)
print(visitas)

Da [2, 2, 1]: 2 libres, 2 ocupados, 1 caído. Este vector de conteos será la base de π(n) y de la matriz P.

09 · Síntesis

Ideas para recordar

  • S reúne todos los valores posibles: X(t) ∈ S siempre.
  • S puede ser finito, numerable o continuo; el código trabaja con finitos o truncados.
  • Las etiquetas se mapean a índices 0…K−1 para vectores y matrices.
  • Los bordes (0, topes) llevan regla propia y son parte del modelo.
  • Sin S explícito no se puede validar ni dimensionar el simulador.

En el próximo tema estudiaremos la evolución aleatoria en el tiempo: trayectorias, incrementos y cómo el presente genera el futuro.