Здравствуйте. Мой вопрос возник в связи с применением цепей Маркова в компьютерной лингвистике.
Пусть дана однородная цепь Маркова
c
состояниями
вектором начальных вероятностей
где
и матрицей вероятностей перехода
где
не зависит от
Требуется найти несколько (например,
штук) наиболее вероятных конечных последовательностей событий-состояний цепи (пусть для начала, для простоты, событий-состояний цепи данной фиксированной длины
и стартующих из начального состояния, пусть даже они будут различными; дальше уже можно обобщать на случай конечных последовательностей переменной длины, начинающихся с некоторого
-го состояния и т.п.). Опишу подробнее, что имеется в виду. Вероятность цепочки событий
Пусть состояния в вышеприведённой цепочке
попарно различны (для простоты).
В принципе, можно тупо сосчитать все такие вероятности, отсортировать их по убыванию и выдать в качестве ответа несколько первых таких (скажем,
штук) конечных последовательностей длины
Но это очень "расточительное" решение, это тупой полный перебор. Нельзя ли его оптимизировать?
Мои соображения таковы. Прологарифмируем (по любому основанию большему единицы), тогда произведение превратится в сумму:
Тогда считая, что в ориентированном графе с петлями рассматриваемой однородной цепи Маркова дуги нагружены этими логарифмами вероятностей, получаем задачу о нахождении "длиннейшего" пути данной длины
в таком графе, точнее, нескольких "наиболее длинных" путей данной длины
(в том самом количестве
штук). Умножая все эти логарифмы на минус единицу, получаем задачу уже о кратчайшем пути данной длины в графе, ну или нескольких кратчайших путей. Выходит, нужно решать задачу о кратчайшем пути заданной длины в ориентированном графе с петлями? Как можно эффективно решать такие задачи?