C# 快速图查找有向多重图的所有路径

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->2
  • 0-边A->1->2
  • 0-边B->1->2

我正试图使用以下QuickGraph实现来实现这一点:

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
因此,平行边似乎不会产生单独的路径。在QuickGraph中是否有任何方法可以实现这一点。 还有,有人知道“AllowParalleleges”参数在图形构造函数中的作用吗