C# 快速图查找有向多重图的所有路径
我有一个有向多重图,其中两个节点之间可以存在多条边。对于这个图,我想知道两个节点之间所有可能的路径。因此,对于下面的示例,节点0和2之间的结果路径为:C# 快速图查找有向多重图的所有路径,c#,quickgraph,C#,Quickgraph,我有一个有向多重图,其中两个节点之间可以存在多条边。对于这个图,我想知道两个节点之间所有可能的路径。因此,对于下面的示例,节点0和2之间的结果路径为: 0->2 0-边A->1->2 0-边B->1->2 我正试图使用以下QuickGraph实现来实现这一点: var startNode = "0"; var endNode = "2"; var graph = new AdjacencyGraph<string, TaggedEdge<
- 0->2
- 0-边A->1->2
- 0-边B->1->2
var startNode = "0";
var endNode = "2";
var graph = new AdjacencyGraph<string, TaggedEdge<string, string>>(allowParallelEdges: true);
var edges = new List<TaggedEdge<string, string>>{
new TaggedEdge<string, string>("0", "1", "edge A"),
new TaggedEdge<string, string>("0", "1", "edge B"),
new TaggedEdge<string, string>("1", "2", string.Empty),
new TaggedEdge<string, string>("0", "2", string.Empty),
new TaggedEdge<string, string>("0", "3", string.Empty),
new TaggedEdge<string, string>("1", "3", string.Empty), };
edges.ForEach(x => graph.AddVerticesAndEdge(x));
var algo = new EdgeDepthFirstSearchAlgorithm<string, TaggedEdge<string, string>>(graph);
var observer = new EdgePredecessorRecorderObserver<string, TaggedEdge<string, string>>();
using (observer.Attach(algo))
{
algo.Compute(startNode);
}
var allPaths = observer.AllPaths().Where(x => x.Last().Target == endNode);
var startNode=“0”;
var endNode=“2”;
var图=新的邻接图(AllowParalleleges:true);
var edges=新列表{
新标记(“0”、“1”、“边A”),
新标记(“0”、“1”、“边B”),
新的TaggedEdge(“1”,“2”,string.Empty),
新的TaggedEdge(“0”,“2”,string.Empty),
新的TaggedEdge(“0”,“3”,string.Empty),
新的TaggedEdge(“1”,“3”,string.Empty),};
ForEach(x=>graph.AddVerticesAndEdge(x));
var algo=新的EdgeDepthFirstSearchAlgorithm(图形);
var observer=新的EdgePredAccessor RecorderobServer();
使用(observer.Attach(algo))
{
算法计算(startNode);
}
var allpath=observer.allpath()。其中(x=>x.Last().Target==endNode);
但是,此实现仅返回两条路径:
- 0->2
- 0->1->2