Подсчёт количества поглощающих состояний и построение матриц переходов марковской цепи — различия между версиями
Arimon (обсуждение | вклад) м (Косметические изменения, введена структура jump, исправлен псевдокод) |
Arimon (обсуждение | вклад) м (Косметические изменения) |
||
Строка 1: | Строка 1: | ||
==Подсчет количества поглощащих состояний== | ==Подсчет количества поглощащих состояний== | ||
Для хранения переходов марковской цепи создадим структуру <tex> \mathtt{jump}</tex> jump. | Для хранения переходов марковской цепи создадим структуру <tex> \mathtt{jump}</tex> jump. | ||
+ | |||
Пусть <tex>\mathtt{transition}</tex> — <tex> \mathtt{jump}[\mathtt{m}], где <tex>\mathtt{transition}[\mathtt{i}]\mathtt{.prob}</tex> — вероятность перехода из состояния <tex>\mathtt{transition}[\mathtt{i}]\mathtt{.from}</tex> в <tex>\mathtt{transition}[\mathtt{i}]\mathtt{.to}</tex>. | Пусть <tex>\mathtt{transition}</tex> — <tex> \mathtt{jump}[\mathtt{m}], где <tex>\mathtt{transition}[\mathtt{i}]\mathtt{.prob}</tex> — вероятность перехода из состояния <tex>\mathtt{transition}[\mathtt{i}]\mathtt{.from}</tex> в <tex>\mathtt{transition}[\mathtt{i}]\mathtt{.to}</tex>. | ||
Тогда, по определению поглощающего состояния, если <tex>\mathtt{j}</tex> — поглощающее состояние, то <tex>\mathtt{transition}[\mathtt{j}]\mathtt{.prob} = 1</tex>. По этому признаку можно определить все поглощающие состояния в цепи. | Тогда, по определению поглощающего состояния, если <tex>\mathtt{j}</tex> — поглощающее состояние, то <tex>\mathtt{transition}[\mathtt{j}]\mathtt{.prob} = 1</tex>. По этому признаку можно определить все поглощающие состояния в цепи. |
Версия 23:39, 23 июня 2018
Содержание
Подсчет количества поглощащих состояний
Для хранения переходов марковской цепи создадим структуру
jump.Пусть
— — вероятность перехода из состояния в . Тогда, по определению поглощающего состояния, если — поглощающее состояние, то . По этому признаку можно определить все поглощающие состояния в цепи.Псевдокод
- — массив состояний. Если — посглощающее состояние иначе
- — количество состояний
- — количество переходов
boolean[] findAbsorbings(transition: jump[m]): boolean absorbing[n]
for jump i: transition absorbing[i.from] = i.from == i.to and i.prob == 1
return absorbing
Построение матриц переходов
Cоздадим сначала массив
где -ый элемент указывает под каким номером будет находиться -ое состояние среди существенных если оно существенное или несущественных в обратном случае, и заполним эти массивы.Псевдокод
- — массив нумерации состояний относительно существенной/несущественной матрицы.
- — матрица перехода мужду несущественными состояниями.
- — матрица из несущественных состояний в поглощающие.
float[][] buildTransitionMatrix(absorbing: boolean[n], transition: jump[m]): 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].to] if !absorbing[transition[i].from] R[position[transition[i].from]][position[transition[i].to]] = transition[i].prob else Q[position[transition[i].from]][position[transition[i].to]] = transition[i].prob
return Q
См. также
- Марковская цепь
- Расчет вероятности поглощения в состоянии
- Математическое ожидание времени поглощения