我试图弄清楚如何使用QuickGraph for C#创建无向加权图的新实例。

我的目标是创建一个无向加权图,其中填充了随机数量的节点以及随机生成的开始和结束节点,这些节点的最短路径可以使用“广度优先搜索”算法找到。

该文档没有太多内容,因此如果有人可以提供任何帮助,我们将不胜感激。

最佳答案

理查德,QuickGraph不会为您做任何事情,它只会提供您可以订阅的事件。通过订阅这些事件,您可以做出相应的响应。由于公认缺乏深度优先搜索的QuickGraph文档(是的,我知道您正在执行BFS而不是DFS,但是如何订阅事件的概念是相同的):

  • InitializeVertex,在开始计算之前在每个顶点上调用
  • DiscoverVertex,首次遇到顶点
  • 时调用
  • ExamineEdge,在发现每个顶点后,在每个顶点的每个边缘上调用
  • TreeEdge,在每个边缘上都将被调用,因为它成为形成搜索树的边缘的成员。
  • FinishVertex,在将其所有外边缘都添加到搜索树中并且已发现所有相邻顶点之后(但在检查其外边缘之前)在顶点上调用。

  • 顺便说一句,打开Reflector并查看QuickGraph.Algorithms.Observers。与BFS相比,使用不同的方法将更容易满足您的最短路径要求。

    关于c# - 在QuickGraph中使用BFS创建无向图并遍历它,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2348251/

    10-11 13:07