Подсчёт количества поглощающих состояний и построение матриц переходов марковской цепи
Версия от 00:59, 20 июня 2018; Arimon (обсуждение | вклад) (→Подсчет количества поглощащих состояний: упразднен if)
Содержание
Подсчет количества поглощащих состояний
Пусть — массив переходов марковской цепи, где — вероятность перехода из состояния в . Тогда, по определению поглощающего состояния, если — поглощающее состояние, то . По этому признаку можно определить все поглощающие состояния в цепи.
Псевдокод
- — массив состояний. Если — посглощающее состояние иначе
- — количество состояний
- — количество переходов
boolean[] findAbsorbings(transition: int[m][2]):
boolean absorbing[n]
for i = 0 to m - 1
absorbing[transition[i][0]] = transition[i][1] and transition[i][2] == 1
return absorbing
Построение матриц переходов
Cоздадим сначала массив где -ый элемент указывает под каким номером будет находиться -ое состояние среди существенных если оно существенное или несущественных в обратном случае, и заполним эти массивы.
Псевдокод
- — массив нумерации состояний относительно существенной/несущественной матрицы.
- — матрица перехода мужду несущественными состояниями.
- — матрица из несущественных состояний в поглощающие.
procedure buildTransitionMatrix(absorbing: boolean[]):
int count_q = 0
int count_r = 0
for i = 0 to n - 1
if absorbing[i]
position[i] = count_r
count_r++
else
position[i] = count_q
count_q++
for i = 0 to m - 1
if absorbing[transition[i][1]]
if !absorbing[transition[i][0]]
R[position[transition[i][0]]][position[transition[i][1]]] = transition[i][2]
else
Q[position[transition[i][0]]][position[transition[i][1]]] = transition[i][2]
См. также
- Марковская цепь
- Расчет вероятности поглощения в состоянии
- Математическое ожидание времени поглощения