поиск алгоритма K-первых коротких путей - PullRequest
1 голос
/ 18 ноября 2010

Я нашел много алгоритмов и подходов, которые говорят о поиске кратчайшего пути или наилучшего / оптимального решения проблемы.Тем не менее, я хочу сделать алгоритм, который находит первые K-кратчайшие пути из одной точки в другую.Проблема, с которой я сталкиваюсь, больше похожа на поиск по дереву, когда на каждом шаге есть несколько вариантов, каждый из которых имеет свой вес.Какие алгоритмы используются для решения подобных проблем?

Ответы [ 3 ]

1 голос
/ 18 ноября 2010

Есть бумага 2006 года Хосе Сантоса сравнение трех различных алгоритмов поиска кратчайшего пути.

0 голосов
/ 02 августа 2013

РЕДАКТИРОВАТЬ: по-видимому, я нажал на ссылку, потому что я думал, что отвечаю на новый вопрос; игнорируйте это, если - как это очень вероятно - этот вопрос больше не важен для вас.


Учитывая ограниченную версию проблемы, с которой вы имеете дело, это становится намного проще реализовать. Самое важное, на что следует обратить внимание, это то, что в деревьях кратчайшие пути являются единственными путями между двумя узлами. Итак, что вы делаете, это решаете все пары кратчайших путей, которые O(n²) в деревьях, выполняя n обходы BFS, и затем вы получаете k минимальные значения. Это, вероятно, можно оптимизировать каким-то образом, но наивный подход для этого заключается в сортировке расстояний O(n²) за O(n² log n) времени и принятии k наименьших значений; с помощью некоторого учета вы можете отслеживать, какое расстояние соответствует какому пути, без затрат времени. Это даст вам большую сложность, чем использование алгоритма KSPA для O(n²) возможных s-t-пар.


Если вы действительно имели в виду исправление источника и получение узлов k с наименьшим расстоянием от этого источника, подойдет одна BFS. Если вы хотите исправить и источник, и цель, достаточно и одной BFS.


Я не понимаю, как вы можете использовать тот факт, что все ребра, идущие от узла к узлам на уровне ниже, имеют одинаковый вес, не зная больше о структуре дерева.

0 голосов
/ 03 июня 2011

Реализация алгоритма Йены: http://code.google.com/p/k-shortest-paths/

Более простой алгоритм и обсуждение: Предложения для KSPA на ненаправленном графике

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...