54
правки
Изменения
м
Косметические изменения
Для хранения переходов марковской цепи создадим структуру <tex> \mathtt{jump}</tex>.
Пусть <tex>\mathtt{transition}</tex> — <tex> \mathtt{jump}[\mathtt{m}]</tex>, где <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>. По этому признаку можно определить все поглощающие состояния в цепи.
'''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
'''int''' count_q = 0
'''int''' count_r = 0
'''for''' i = 0 '''to''' n - 1
'''if''' absorbing[i]
position[i] = count_q
count_q++
'''for''' i = 0 '''to''' m - 1
'''if''' absorbing[transition[i].to]
'''else'''
Q[position[transition[i].from]][position[transition[i].to]] = transition[i].prob
'''return Q'''