Подсчёт количества поглощающих состояний и построение матриц переходов марковской цепи — различия между версиями

Материал из Викиконспекты
Перейти к: навигация, поиск
м (Косметические изменения)
м (Косметические изменения)
Строка 1: Строка 1:
 
==Подсчет количества поглощащих состояний==
 
==Подсчет количества поглощащих состояний==
Для хранения переходов марковской цепи создадим структуру <tex> \mathtt{jump}</tex> jump.  
+
Для хранения переходов марковской цепи создадим структуру <tex> \mathtt{jump}</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{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:41, 23 июня 2018

Подсчет количества поглощащих состояний

Для хранения переходов марковской цепи создадим структуру [math] \mathtt{jump}[/math].

Пусть [math]\mathtt{transition}[/math][math] \mathtt{jump}[\mathtt{m}], где \lt tex\gt \mathtt{transition}[\mathtt{i}]\mathtt{.prob}[/math] — вероятность перехода из состояния [math]\mathtt{transition}[\mathtt{i}]\mathtt{.from}[/math] в [math]\mathtt{transition}[\mathtt{i}]\mathtt{.to}[/math].

Тогда, по определению поглощающего состояния, если [math]\mathtt{j}[/math] — поглощающее состояние, то [math]\mathtt{transition}[\mathtt{j}]\mathtt{.prob} = 1[/math]. По этому признаку можно определить все поглощающие состояния в цепи.

Псевдокод

  • [math]\mathtt{absorbing}[\mathtt{n}][/math] — массив состояний. Если [math]\mathtt{i}[/math] — посглощающее состояние [math]\mathtt{absorbing}[\mathtt{i}] = true[/math] иначе [math]\mathtt{absorbing}[\mathtt{i}] = false[/math]
  • [math]\mathtt{n}[/math] — количество состояний
  • [math]\mathtt{m}[/math] — количество переходов
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оздадим сначала массив [math]\mathtt{position}[/math] где [math]\mathtt{i}[/math]-ый элемент указывает под каким номером будет находиться [math]\mathtt{i}[/math]-ое состояние среди существенных если оно существенное или несущественных в обратном случае, и заполним эти массивы.

Псевдокод

  • [math]\mathtt{position}[\mathtt{n}][/math] — массив нумерации состояний относительно существенной/несущественной матрицы.
  • [math]\mathtt{Q}[/math] — матрица перехода мужду несущественными состояниями.
  • [math]\mathtt{R}[/math] — матрица из несущественных состояний в поглощающие.
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

См. также

Источники информации