Documentaciónabsorbente(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]
Validaciones y casos borde
- Valida que
Psea una matriz cuadrada no vacia y estocastica por filas. - Valida que
TyAno sean vacios. - Valida que
TyAparticionen todos los estados deP, sin repetir indices ni compartirlos. - Valida que cada estado de
Asea realmente absorbente. - Si alguna condicion falla, emite
ERROR(). - Si
I-Qno es invertible, la inversion puede fallar dentro dematrices.inversa_gauss(...).
Comportamiento
- Extrae
QyRa partir de los conjuntos de estados transientes y absorbentes. - Construye
I - Qy calcula su inversa conmatrices.inversa_gauss(...). - Obtiene
B = N Rcomo matriz de probabilidades de absorcion. - Calcula los tiempos esperados de absorcion sumando cada fila de
N. - Retorna una
TABLAconN,B,Q,R,ImenosQytiempos.
Funciones API relacionadas
markov.extraer_Q()markov.extraer_R()markov.es_estocastica()
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
| P | MATRIZ | Matriz de transicion. |
| T | VECTOR | Indices de estados transientes. |
| A | VECTOR | Indices 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