У меня есть график, и я хочу выполнить поиск кратчайшего пути с помощью алгоритма Дейкстры (меня не волнует этот алгоритм, но мне знаком знаком Дейкстра).
Это соответствующая часть графика, который у меня есть:
Теперь я делаю поиск dijkstra по документации Quickgraph:
//Build QuickGraph UndirectedGraph from our data
UndirectedGraph<int, Edge<int>> ug = g.CreateUndirectedQuickGraph();
Func<Edge<int>,double> weightFunc = (Edge<int> edge) =>
{
return 1; //without weights at this moment
};
var tryGetPath = ug.ShortestPathsDijkstra(weightFunc, 20);
IEnumerable<Edge<int>> path;
if (tryGetPath(23, out path))
foreach (var e in path)
Trace.WriteLine(e);
Как вы видите, я пытаюсь получить кратчайший путь между узлами 20 и 23. И получаю вывод:
20 -> 4
22 -> 4
23 -> 22
Кажется, это вроде как правильно, но я не совсем понимаю, как извлечь из него путь к узлу. Я ожидал что-то вроде:
20 -> 4
4 -> 22
22 -> 23
Как я могу построить окончательный путь из этого вывода?
Пример получения от 20 до 34:
20->3
5->3
8->5
9->8
36->9
36->11
34->11
Обратите внимание, как 36->11
появляется перед последним краем.