Documentaciónabsorbente(P, T, A)

absorbente(P,T,A)\texttt{absorbente}(P, T, A)

Nombre

absorbente - Analiza una cadena de Markov absorbente.

Sinopsis

ret = markov.absorbente(P, T, A)

Descripcion

Organiza la cadena en bloques Q y R, calcula la matriz fundamental N, las probabilidades de absorcion B y los tiempos esperados hasta la absorcion.

Resume en una sola llamada el analisis clasico de cadenas absorbentes.

Formulas:

P = \left[egin{array}{cc} Q & R \ 0 & I \end{array} ight]

N=(IQ)1N=(I-Q)^{-1}

B=NRB=NR

ti=jNijt_i=\sum_j N_{ij}

Validaciones y casos borde

  • Valida que P sea una matriz cuadrada no vacia y estocastica por filas.
  • Valida que T y A no sean vacios.
  • Valida que T y A particionen todos los estados de P, sin repetir indices ni compartirlos.
  • Valida que cada estado de A sea realmente absorbente.
  • Si alguna condicion falla, emite ERROR().
  • Si I-Q no es invertible, la inversion puede fallar dentro de matrices.inversa_gauss(...).

Comportamiento

  • Extrae Q y R a partir de los conjuntos de estados transientes y absorbentes.
  • Construye I - Q y calcula su inversa con matrices.inversa_gauss(...).
  • Obtiene B = N R como matriz de probabilidades de absorcion.
  • Calcula los tiempos esperados de absorcion sumando cada fila de N.
  • Retorna una TABLA con N, B, Q, R, ImenosQ y tiempos.

Funciones API relacionadas

  • markov.extraer_Q()
  • markov.extraer_R()
  • markov.es_estocastica()

Parámetros

ParámetroTipoDescripción
PMATRIZMatriz de transicion.
TVECTORIndices de estados transientes.
AVECTORIndices de estados absorbentes.

Valor de retorno

TABLA - Tabla con N, B, Q, R, ImenosQ y tiempos.

Ejemplo

ejemplo.blox
// Cadenas de MARKOV
// -------------------------------------------------
// Ejemplo 5 — Cadena absorbente (markov_absorbente)
//
// Estados:
// -------------------------
// 0 = A (transiente)
// 1 = B (transiente)
// 2 = Victoria (absorvente)
// 3 = Derrota (absorvente)
//
// P =
// [ [0,   0.5, 0,   0.5],
//   [0.4, 0,   0.6, 0  ],
//   [0,   0,   1,   0  ],
//   [0,   0,   0,   1  ] ]
//

INCLUIR "matrices.api"
INCLUIR "markov.api"

FUNCION PRINCIPAL
INICIO "ejemplo_absorbente"

    MATRIZ P[4][4]

 P =  [ [0.0,   0.5,  0.0,  0.5],
        [0.4,   0.0,  0.6,  0.0  ],
        [0.0,   0.0,  1.0,  0.0  ],
        [0.0,   0.0,  0.0,  1.0  ] ]

    // Estados transientes: 0 y 1. Cantidad de estados transientes = 2
    NUMERICO dimT
    dimT = 2
    VECTOR T[dimT]
    T[0] = 0
    T[1] = 1

    // Estados absorbentes: 2 y 3. Cantidad de estados absorbentes = 2
    NUMERICO dimA
    dimA = 2    
    VECTOR A[dimA]
    A[0] = 2
    A[1] = 3

    TABLA ret
    ret = markov.absorbente(P, T, A)

    MATRIZ N[dimT][dimT]
    MATRIZ B[dimA][dimA]
    VECTOR tiempos[dimT]

          N = ret.N
          B = ret.B
    tiempos = ret.tiempos

    IMPRIMIR("\nMatriz P = ")
    matrices.imprimir(P)

    IMPRIMIR("\nMatriz fundamental N = ")
    matrices.imprimir(N)

    IMPRIMIR("\nProbabilidades de absorcion B = ")
    matrices.imprimir(B)

    IMPRIMIR("\nTiempos esperados hasta absorcion (para cada estado transiente):")
    IMPRIMIR("\nDesde estado 0 (A): ", tiempos[0])
    IMPRIMIR("\nDesde estado 1 (B): ", tiempos[1], "\n")
    IMPRIMIR(tiempos)

FINAL