<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=217.66.157.158&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=217.66.157.158&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/217.66.157.158"/>
		<updated>2026-04-11T04:13:48Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D1%91%D1%82_%D0%B2%D0%B5%D1%80%D0%BE%D1%8F%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BF%D0%BE%D0%B3%D0%BB%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B8&amp;diff=29093</id>
		<title>Расчёт вероятности поглощения в состоянии</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A0%D0%B0%D1%81%D1%87%D1%91%D1%82_%D0%B2%D0%B5%D1%80%D0%BE%D1%8F%D1%82%D0%BD%D0%BE%D1%81%D1%82%D0%B8_%D0%BF%D0%BE%D0%B3%D0%BB%D0%BE%D1%89%D0%B5%D0%BD%D0%B8%D1%8F_%D0%B2_%D1%81%D0%BE%D1%81%D1%82%D0%BE%D1%8F%D0%BD%D0%B8%D0%B8&amp;diff=29093"/>
				<updated>2013-01-09T08:26:07Z</updated>
		
		<summary type="html">&lt;p&gt;217.66.157.158: /* Псевдокод */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Поглощающее(существенное) состояние цепи Маркова - состояние с вероятностью перехода в самого себя &amp;lt;tex&amp;gt;p_{ii}=1&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Составим матрицу G, элементы которой &amp;lt;tex&amp;gt;g_{ij}&amp;lt;/tex&amp;gt; равны вероятности того, что, выйдя из i, попадём в поглощающее состояние j.&lt;br /&gt;
{{Теорема&lt;br /&gt;
|statement=&lt;br /&gt;
&amp;lt;tex&amp;gt; G = N \cdot R &amp;lt;/tex&amp;gt;&lt;br /&gt;
|proof=&lt;br /&gt;
Пусть этот переход будет осуществлён за r шагов:  i &amp;amp;rarr;  &amp;lt;tex&amp;gt;i_{1}&amp;lt;/tex&amp;gt; &amp;amp;rarr; &amp;lt;tex&amp;gt;i_{2}&amp;lt;/tex&amp;gt; &amp;amp;rarr; ... &amp;amp;rarr; &amp;lt;tex&amp;gt;i_{r-1}&amp;lt;/tex&amp;gt; &amp;amp;rarr; j, где все &amp;lt;tex&amp;gt;i, i_{1}, ... i_{r-1}&amp;lt;/tex&amp;gt; являются несущественными.&lt;br /&gt;
Тогда рассмотрим сумму &amp;lt;tex&amp;gt;\sum\limits_{\forall(i_{1} ... i_{r-1})} {p_{i, i_{1}} \cdot p_{i_{1}, i_{2}} \cdot ... \cdot p_{i_{r-1}, j}} = Q^{r-1} \cdot R&amp;lt;/tex&amp;gt;, где Q - матрица переходов между несущественными состояниями, R - из несущественного в существенное. &lt;br /&gt;
Матрица G определяется их суммированием по всем длинам пути из i в j: &amp;lt;tex&amp;gt;G = \sum\limits_{r = 1}^{\infty}{Q^{r-1} \cdot R} = (I + Q + Q^{2} + Q^{3} + ...) \cdot R = NR&amp;lt;/tex&amp;gt;, т.к. &amp;lt;tex&amp;gt;(I + Q + Q^2 + ...) \cdot (I - Q) = I - Q + Q - Q^{2} + ... = I&amp;lt;/tex&amp;gt;, а фундаментальная матрица марковской цепи &amp;lt;tex&amp;gt;N = (I - Q)^{-1}&amp;lt;/tex&amp;gt; }}&lt;br /&gt;
=Псевдокод=&lt;br /&gt;
Пусть &amp;lt;tex&amp;gt;n&amp;lt;/tex&amp;gt; - количество состояний Марковской цепи, &amp;lt;tex&amp;gt;m&amp;lt;/tex&amp;gt; - количество переходов. Состояния пронумерованы от &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;n - 1&amp;lt;/tex&amp;gt;, переходы от &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt; до &amp;lt;tex&amp;gt;m - 1&amp;lt;/tex&amp;gt;.  Входные данные хранятся в массиве &amp;lt;tex&amp;gt;input&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ая строка характеризует &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ый переход таким образом: &amp;lt;tex&amp;gt;input[i][2]&amp;lt;/tex&amp;gt; - вероятность перехода из состояния &amp;lt;tex&amp;gt;input[i][0]&amp;lt;/tex&amp;gt; в состояние &amp;lt;tex&amp;gt;input[i][1]&amp;lt;/tex&amp;gt;.&lt;br /&gt;
Создадим массив &amp;lt;tex&amp;gt;absorbing&amp;lt;/tex&amp;gt; типа boolean, где &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ое true обозначает что &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ое состояние является поглощающим и наоборот. Обнаружим поглощающие состояния по такому признаку: если состояние поглощающее то с вероятностью 1 оно переходит само в себя. Также посчитаем количество поглощающих состояний &amp;lt;tex&amp;gt;abs&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;code style = &amp;quot;display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
 '''for''' i = 0 '''to''' m - 1&lt;br /&gt;
    '''if''' input[i][0] == input[i][1] '''and''' input[i][2] == 1&lt;br /&gt;
       absorbing[input[i][0]] = true;&lt;br /&gt;
       abs++;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Найдем число несущественных состояний &amp;lt;tex&amp;gt;nonabs = n - abs&amp;lt;/tex&amp;gt;. Теперь нужно заполнить матрицы &amp;lt;tex&amp;gt;Q&amp;lt;/tex&amp;gt; (переходов между несущественными состояниями) и &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; (переходов из несущественных состояний в поглощающие). Для этого создадим сначала массив &amp;lt;tex&amp;gt;position&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ый элемент указывает под каким номером будет находиться &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ое состояние среди существенных если оно существенное или несущественных в обратном случае, и заполним эти массивы.&lt;br /&gt;
&amp;lt;code style = &amp;quot;display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
 count_q = 0;&lt;br /&gt;
 count_r = 0;&lt;br /&gt;
 '''for''' i = 0 '''to''' n - 1&lt;br /&gt;
    '''if''' absorbing[i]&lt;br /&gt;
       position[i] = count_r;&lt;br /&gt;
       count_r++;&lt;br /&gt;
    '''else''' &lt;br /&gt;
       position[i] = count_q;&lt;br /&gt;
       count_q++;&lt;br /&gt;
 '''for''' i = 0 '''to''' m - 1&lt;br /&gt;
    '''if''' absorbing[input[i][1]]&lt;br /&gt;
       '''if''' !absorbing[input[i][0]]&lt;br /&gt;
          R[position[input[i][0]]][position[input[i][1]]] = input[i][2];&lt;br /&gt;
    '''else'''&lt;br /&gt;
       Q[position[input[i][0]]][position[input[i][1]]] = input[i][2];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Найдем Матрицу &amp;lt;tex&amp;gt;E = I - Q&amp;lt;/tex&amp;gt; и создадим единичную матрицу &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;code style = &amp;quot;display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
 '''for''' i = 0 '''to''' nonabs - 1&lt;br /&gt;
    N[i][i] = 1;&lt;br /&gt;
    E[i][i] = 1;&lt;br /&gt;
    '''for''' j = 0 '''to''' nonabs - 1&lt;br /&gt;
       E[i][j] -= Q[i][j];  &lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Теперь приведем матрицу &amp;lt;tex&amp;gt;E&amp;lt;/tex&amp;gt; к единичной методом Гаусса - Жордана, применяя те же преобразования к матрице &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;code style = &amp;quot;display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
 '''for''' i = 0 '''to''' nonabs - 1&lt;br /&gt;
    '''if''' E[i][i] != 1&lt;br /&gt;
       mul = E[i][i];&lt;br /&gt;
       '''for''' j = 0 '''to''' nonabs - 1&lt;br /&gt;
          E[i][j] /= mul;&lt;br /&gt;
          N[i][j] /= mul;&lt;br /&gt;
    '''for''' row = 0 '''to''' nonabs - 1&lt;br /&gt;
       '''if''' i != row&lt;br /&gt;
          mul = E[row][i];&lt;br /&gt;
          '''for''' j = 0 '''to''' nonabs - 1&lt;br /&gt;
             E[row][j] -= mul * E[i][j];&lt;br /&gt;
             N[row][j] -= mul * N[i][j];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
В результате &amp;lt;tex&amp;gt;N = E^{-1}&amp;lt;/tex&amp;gt;  т.е. &amp;lt;tex&amp;gt;N&amp;lt;/tex&amp;gt; - фундаментальная матрица Марковской цепи. Найдем матрицу &amp;lt;tex&amp;gt;G = N * R&amp;lt;/tex&amp;gt;.&lt;br /&gt;
&amp;lt;code style = &amp;quot;display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
 '''for''' i = 0 '''to''' nonabs - 1&lt;br /&gt;
    '''for''' j = 0 '''to''' abs - 1&lt;br /&gt;
       G[i][j] = 0;&lt;br /&gt;
       '''for''' k = 0 '''to''' nonabs - 1&lt;br /&gt;
          G[i][j] += N[i][k] * R[k][j];&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
Выведем ответ: в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ой строке вероятность поглощения в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ом состоянии. Естественно, для несущественного состояния это &amp;lt;tex&amp;gt;0&amp;lt;/tex&amp;gt;, в ином случае &amp;lt;tex&amp;gt;p_i=(($$\sum_{k=1}^n G[k][j]$$)+1)/n&amp;lt;/tex&amp;gt; где &amp;lt;tex&amp;gt;j&amp;lt;/tex&amp;gt; - номер соответствующий &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ому состоянию в матрице &amp;lt;tex&amp;gt;G&amp;lt;/tex&amp;gt; (т.е. под которым оно располагалось в матрице &amp;lt;tex&amp;gt;R&amp;lt;/tex&amp;gt; т.е. значение &amp;lt;tex&amp;gt;position[i]&amp;lt;/tex&amp;gt;). Прибавлять 1 нужно т.к. вероятность поглотиться в &amp;lt;tex&amp;gt;i&amp;lt;/tex&amp;gt;-ом поглощающем состоянии, оказавшись изначально в нем же равна 1.&lt;br /&gt;
&amp;lt;code style = &amp;quot;display: inline-block;&amp;quot;&amp;gt;&lt;br /&gt;
 '''for''' i = 0 '''to''' n - 1&lt;br /&gt;
    prob = 0;&lt;br /&gt;
    '''if''' absorbing[i]&lt;br /&gt;
       '''for''' j = 0 '''to''' nonabs - 1&lt;br /&gt;
          prob += G[j][position[i]];&lt;br /&gt;
       prob++;&lt;br /&gt;
       prob /= n;&lt;br /&gt;
    println(prob);&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Литература=&lt;br /&gt;
* [http://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BF%D1%8C_%28%D0%BC%D0%B0%D1%82%D0%B5%D0%BC.%29, Википедия - Цепи Маркова]&lt;br /&gt;
* Кемени Дж., Снелл Дж. &amp;quot;Конечные цепи Маркова&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Категория:Дискретная математика и алгоритмы]]&lt;br /&gt;
&lt;br /&gt;
[[Категория: Марковские цепи ]]&lt;/div&gt;</summary>
		<author><name>217.66.157.158</name></author>	</entry>

	</feed>