Изменения

Перейти к: навигация, поиск
м
==Подсчет количества поглощащих состояний==
Пусть Для хранения переходов марковской цепи создадим структуру <tex> \mathtt{jump}</tex>.  Введем <tex>\mathtt{transition}:</tex> <tex> \mathtt{jump}[\mathtt{m}] </tex> — массив переходов марковской цепи, где <tex>\mathtt{transition}[\mathtt{i}][2]\mathtt{.prob}</tex> — вероятность перехода из состояния <tex>\mathtt{transition}[\mathtt{i}][0]\mathtt{.from}</tex> в <tex>\mathtt{transition}[\mathtt{i}][1]\mathtt{.to}</tex>. Тогда, по определению поглощающего состояния, если <tex>\mathtt{j}</tex> — поглощающее состояние, то <tex>\mathtt{transition}[\mathtt{j}][2] \mathtt{.prob} = 1</tex>. По этому признаку можно определить все поглощающие состояния в цепи.
===Псевдокод===
*<tex>\mathtt{m}</tex> — количество переходов
'''boolean[]''' findAbsorbings(transition: '''intjump'''[m][2]):
'''boolean''' absorbing[n]
'''for''' '''jump''' i = 0 '''toin''' m - 1transition absorbing[transition[i][0].from] = transition[i][0] .from == transition[i][1] .to '''and''' transition[i][2] .prob == 1
'''return''' absorbing
*<tex>\mathtt{R}</tex> — матрица из несущественных состояний в поглощающие.
'''procedurefloat[][]''' buildTransitionMatrix(absorbing: '''boolean'''[n], transition: '''jump'''[m]):
'''int''' count_q = 0
'''int''' count_r = 0
'''float''' Q[n][n]
'''float''' R[n][n]
'''int''' position[n]
'''for''' i = 0 '''to''' n - 1
'''if''' absorbing[i]
position[i] = count_q
count_q++
'''for''' '''jump''' i = 0 '''toin''' m - 1transition '''if''' absorbing[transition[i][1].to] '''if''' !absorbing[transition[i][0].from] R[position[transition[i][0].from]][position[transition[i][1].to]] = transition[i][2].prob
'''else'''
Q[position[transition[i][0].from]][position[transition[i][1].to]] = transition[i][2].prob '''return''' Q
== См. также ==

Навигация