Учитывая следующий Направленный взвешенный график, как можно найти кратчайший маршрут, который начинается и заканчивается в B?
Я пробую Дейкстру и обе ситуации, где путь существует, а не существует.работают нормально, но не смогли найти пример, чтобы охватить ситуацию, о которой я спрашивал выше.
Вот мой код, пока что
public static int ShortestDistance(Graph graph, Node from, Node to)
{
var distances = new Dictionary<Node, int>();
var actualNodes = graph.GetNodes() as List<Node> ?? Graph.GetNodes().ToList();
foreach (var node in actualNodes) distances[node] = node.Equals(from) ? 0 : int.MaxValue;
while (actualNodes.Count() != 0)
{
var actualShortest = actualNodes.OrderBy(n => distances[n]).First();
actualNodes.Remove(actualShortest);
if (distances[actualShortest] == int.MaxValue) break;
if (actualShortest.Equals(to)) return distances[actualShortest];
foreach (var adjacent in graph.GetAdjacentsByNode(actualShortest))
{
var actualDistance = distances[actualShortest] + adjacent.Weight;
if (actualDistance >= distances[adjacent.To]) continue;
distances[adjacent.To] = actualDistance;
}
}
throw new Exception($"There's no such route from '{from}' to '{to}'.");
}