我在 C# 中使用 QuickGraph 并有一个图,我可以通过在节点上调用 Compute 来遍历该图并沿图向下遍历。但是,有时我想选择一个子节点并沿所有边的相反方向遍历。
文档真的很差,所以我想知道是否有人知道如何做到这一点。
这是一个例子
BidirectionalGraph<string, Edge<string>> graph = new BidirectionalGraph<string, Edge<string>>();
graph.AddVertex("node1");
graph.AddVertex("node2");
graph.AddVertex("node3");
graph.AddVertex("node4");
graph.AddEdge(new Edge<string>("node1", "node2"));
graph.AddEdge(new Edge<string>("node2", "node3"));
graph.AddEdge(new Edge<string>("node2", "node4"));
var dfs = new DepthFirstSearchAlgorithm<string, Edge<string>>(graph);
var observer = new VertexPredecessorRecorderObserver<string, Edge<string>>();
observer.Attach(dfs);
dfs.Compute("node1");
foreach(var obj in observer.VertexPredecessors) {
System.Console.WriteLine(obj.Key);
}
如果我计算“node1”,我得到 node2、node3、node4。
我还想做的是计算“node4”并得到node2,node1