Подсчёт количества поглощающих состояний и построение матриц переходов марковской цепи — различия между версиями
Arimon (обсуждение | вклад) м (→Псевдокод:  исправлен псевдокод)  | 
				Arimon (обсуждение | вклад)  м (→Псевдокод:  исправлен псевдокод)  | 
				||
| Строка 4: | Строка 4: | ||
===Псевдокод===  | ===Псевдокод===  | ||
| − | *<tex>\mathtt{absorbing}  | + | *<tex>\mathtt{absorbing}[\mathtt{n}]</tex> — массив состояний. Если <tex>\mathtt{i}</tex> — посглощающее состояние <tex>\mathtt{absorbing}[\mathtt{i}] = true</tex> иначе <tex>\mathtt{absorbing}[\mathtt{i}] = false</tex>  | 
*<tex>\mathtt{n}</tex> — количество состояний  | *<tex>\mathtt{n}</tex> — количество состояний  | ||
*<tex>\mathtt{m}</tex> — количество переходов  | *<tex>\mathtt{m}</tex> — количество переходов  | ||
| Строка 22: | Строка 22: | ||
*<tex>\mathtt{R}</tex> — матрица из несущественных состояний в поглощающие.  | *<tex>\mathtt{R}</tex> — матрица из несущественных состояний в поглощающие.  | ||
| − |   '''procedure''' buildTransitionMatrix():  | + |   '''procedure''' buildTransitionMatrix(absorbing: boolean[]):  | 
| − |      count_q = 0  | + |      '''int''' count_q = 0  | 
| − |      count_r = 0  | + |      '''int''' count_r = 0  | 
     '''for''' i = 0 '''to''' n - 1  |      '''for''' i = 0 '''to''' n - 1  | ||
        '''if''' absorbing[i]  |         '''if''' absorbing[i]  | ||
Версия 00:57, 20 июня 2018
Содержание
Подсчет количества поглощащих состояний
Пусть — массив переходов марковской цепи, где — вероятность перехода из состояния в . Тогда, по определению поглощающего состояния, если — поглощающее состояние, то . По этому признаку можно определить все поглощающие состояния в цепи.
Псевдокод
- — массив состояний. Если — посглощающее состояние иначе
 - — количество состояний
 - — количество переходов
 
boolean[] findAbsorbings(transition: int[m][2]):
   boolean absorbing[n] 
   for i = 0 to m - 1
      if transition[i][0] == transition[i][1] and transition[i][2] == 1
        absorbing[transition[i][0]] = true
   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]
См. также
- Марковская цепь
 - Расчет вероятности поглощения в состоянии
 - Математическое ожидание времени поглощения