Изменения

Перейти к: навигация, поиск

Алгоритм Витерби

155 байт добавлено, 23:32, 17 мая 2018
Алгоритм
'''Входные данные:'''
#Пространство наблюдений <tex>\mathtt{O } =\{\mathtt{o_1},\mathtt{o_2 } \ldots \mathtt{o_N}\}}</tex>#Пространство состояний <tex>\mathtt{S } =\{\mathtt{s_1},\mathtt{s_2 } \ldots \mathtt{s_K}}\}}</tex>#Последовательность наблюдений <tex>\mathtt{Y } =\{\mathtt{y_1},\mathtt{y_2 } \ldots \mathtt{y_T}}\}}</tex>#Матрица <tex>\mathtt{A}</tex> переходов из <tex>\mathtt{i}</tex>-того состояния в <tex>\mathtt{j}</tex>-ое, размером <tex>\mathtt{K } \times \mathtt{K}</tex> #Матрица эмиссии <tex>\mathtt{B}</tex> размера <tex>\mathtt{K } \times \mathtt{N}</tex>, которая определяет вероятность наблюдения <tex>\mathtt{o_j}</tex> из состояния <tex>\mathtt{s_i}</tex>
#Массив начальных вероятностей <tex>\mathtt{\pi}</tex> размером <tex>\mathtt{K}</tex>, показывающий вероятность того, что начальное состояние <tex>\mathtt{s_i}</tex>
'''Выходные данные''':
<tex>\mathtt{X } =\{\mathtt{x_1},\mathtt{x_2 } \ldots \mathtt{x_T}\}}</tex> {{---}} последовательность состояний, которые привели к последовательности наблюдений <tex>\mathtt{Y}</tex>.
'''Алгоритм:'''
Создадим две матрицы <tex>\mathtt{TState}</tex> и <tex>\mathtt{TIndex}</tex> размером <tex>\mathtt{K } \times \mathtt{T}</tex>. Каждый элемент <tex>\mathtt{TState}[\mathtt{i},\mathtt{j}]</tex> содержит вероятность того, что на <tex>\mathtt{j}</tex>-ом шаге мы находимся в состоянии <tex>\mathtt{s_i}</tex>. Каждый элемент <tex>\mathtt{TIndex}[\mathtt{i},\mathtt{j}]</tex> содержит индекс наиболее вероятного состояния на <tex>{\mathtt{j-1}}</tex>-ом шаге.
'''Шаг 1.''' Заполним первый столбец матриц <tex>\mathtt{TState}</tex> на основании начального распределения, и <tex>\mathtt{TIndex}</tex> нулями.
62
правки

Навигация