가능한 해결책은 그래프를 AdjacencyGraph<string, Edge<string>>
으로 모델링하고 비용이 거리 인 Dictionary<Edge<string>, double>
비용 사전을 작성하는 것입니다. 귀하의 _graph
// ...
private AdjacencyGraph<string, Edge<string>> _graph;
private Dictionary<Edge<string>, double> _costs;
public void SetUpEdgesAndCosts()
{
_graph = new AdjacencyGraph<string, Edge<string>>();
_costs = new Dictionary<Edge<string>, double>();
AddEdgeWithCosts("A", "D", 4.0);
// snip
AddEdgeWithCosts("C", "B", 1.0);
}
private void AddEdgeWithCosts(string source, string target, double cost)
{
var edge = new Edge<string>(source, target);
_graph.AddVerticesAndEdge(edge);
_costs.Add(edge, cost);
}
는 지금 :
은 그럼 당신은 사용하는 E A에서 최단 경로를 찾을 수 있습니다
private void PrintShortestPath(string @from, string to)
{
var edgeCost = AlgorithmExtensions.GetIndexer(_costs);
var tryGetPath = _graph.ShortestPathsDijkstra(edgeCost, @from);
IEnumerable<Edge<string>> path;
if (tryGetPath(to, out path))
{
PrintPath(@from, to, path);
}
else
{
Console.WriteLine("No path found from {0} to {1}.");
}
}
이이 QuickGraph wiki에서 적응된다. 그것은 인쇄 [Github에서의 예를 작업
Path found from A to E: A > D > B > E
(https://github.com/serra/QuickgraphExamples/blob/master/src/examples/CalculateDistance.cs) – Marijn