首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >创建一个无向图并在QuickGraph中使用BFS遍历它

创建一个无向图并在QuickGraph中使用BFS遍历它
EN

Stack Overflow用户
提问于 2010-02-28 01:24:14
回答 3查看 2.8K关注 0票数 5

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

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

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

EN

回答 3

Stack Overflow用户

发布于 2011-06-14 22:27:05

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

在开始计算之前在每个顶点上调用

  1. InitializeVertex,,在第一次遇到顶点时调用
  2. DiscoverVertex,,在发现顶点后在每个顶点的每个外边上调用
  3. ExamineEdge,在每个边成为形成搜索tree.
  4. FinishVertex,的边的成员时在每个边上调用
  5. TreeEdge,在将顶点的所有外边添加到搜索树并且所有相邻顶点都已被发现(但在检查其外边之前)之后在顶点上调用。

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

票数 2
EN

Stack Overflow用户

发布于 2010-08-03 04:42:19

目前还没有关于这个算法的文档;但是有一个下一个最好的东西(或者甚至更好的东西):单元测试!

如果您下载QuickGraph源代码,并找到BreadthFirstAlgorithmSearchTest.BreadthFirstSearchAll(),您将看到该算法的示例用法,该算法在测试项目中的所有有向图上运行。

票数 1
EN

Stack Overflow用户

发布于 2020-01-25 01:41:58

在Github上有一个简短的线程,其中有一个有用的基本示例,说明如何设置BFS并从中获得一些结果。

特定于您的应用程序的其他详细信息(创建随机图等)显然不在本例中。

来源:https://github.com/YaccConstructor/QuickGraph/issues/189#issuecomment-487493207

下面是一个完整的示例:

UndirectedGraph g= new UndirectedGraph();g.AddVerticesAndEdge(new UndirectedGraph(g);var UndirectedGraph();var rootVertex = "0";using (observer.Attach(algo)) { algo.Compute(rootVertex);} var targetVertex = "3";bool foundPath = observer.TryGetPath(targetVertex,out IEnumerable path);

然后,路径将包含两条边:

:"0"->"2“1:"2"->"3"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2348251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档