我正在尝试弄清楚如何使用C#的QuickGraph创建一个新的无向加权图实例。
我的目标是创建一个无向加权图,其中填充了随机数量的节点和随机生成的开始和结束节点,这些节点的最短路径可以使用广度优先搜索算法找到。
文档没有太多内容,所以如果有人能提供任何帮助,我们将不胜感激。
发布于 2011-06-14 22:27:05
理查德,QuickGraph不会为你做任何这些事情,它只提供你可以订阅的事件。通过订阅这些事件,您可以做出相应的响应。从公认缺乏深度优先搜索的QuickGraph文档(是的,我知道您正在做的是BFS而不是DFS,但是如何订阅事件的概念是相同的):
在开始计算之前在每个顶点上调用
顺便说一下,打开Reflector并查看QuickGraph.Algorithms.Observers。使用不同的方法比使用BFS更容易满足您的最短路径要求。
发布于 2010-08-03 04:42:19
目前还没有关于这个算法的文档;但是有一个下一个最好的东西(或者甚至更好的东西):单元测试!
如果您下载QuickGraph源代码,并找到BreadthFirstAlgorithmSearchTest.BreadthFirstSearchAll()
,您将看到该算法的示例用法,该算法在测试项目中的所有有向图上运行。
发布于 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"
https://stackoverflow.com/questions/2348251
复制相似问题