我有一个问题,基本上可以看作一个图。我正在考虑使用JGraphT来实现它,而不是滚动我自己的。使用JGraphT从图中获得最小生成树的最佳方法是什么?Java:使用JGraphT生成最小生成树?
2
A
回答
5
不幸的是,我不知道足够的图论给你一个完整的,直接的答案,但我已经在几个项目中使用jgrapht,所以也许这会有所帮助。
包含jgrapht是这里的算法列表:http://www.jgrapht.org/javadoc/org/jgrapht/alg/package-summary.html,你还可以找到图遍历实现迭代器(如果这是任何帮助)在这里:http://www.jgrapht.org/javadoc/org/jgrapht/traverse/package-summary.html
我敢肯定,没有这些算法将让你想要开箱即用,所以你必须自己编写代码,但我可以从经验告诉你,在jgraph之上编写代码而不是从头开始更容易。还有一个FibonacciHeap类,可能有助于实施Prim的算法。
如果您需要算法本身的帮助,有许多关于维基百科条目的算法,包括详细的描述和伪代码。 Minimum spanning tree article链接到他们。
2
Jung有一个这样的实现。
1
ClosestFirstIterator可能会帮助你。它在遍历顶点时使用FibonacciHeap构建生成树。
ClosestFirstIterator提供方法getShortestPathLength()和getSpanningTreeEdge()来获取最小生成树的部分。
// instantiate the iterator
ClosestFirstIterator<V,E> it = new ClosestFirstIterator<V,E>(graph, start_vertex);
// iterate to build the tree
while(it.hasNext())
it.next();
// query
double distance = getShortestPathLength(vertex);
E next_edge = getSpanningTreeEdge(vertex);
相关问题
- 1. 通用最小生成树
- 2. Java最小生成树问题
- 3. 动态最小生成树
- 4. JGrapht:使用DirectedSubgraph.java类生成子图
- 5. 最快最小生成树算法
- 6. 用于生成和使用生成的决策树的Java库
- 7. 什么是最小叶生成树?
- 8. 最小直径生成树算法
- 9. 关于切入最小生成树
- 10. R:深度最小生成树
- 11. Sollin的最小生成树算法
- 12. 关于最小生成树图
- 13. Networkx最小生成树 - 精度问题?
- 14. 多重最小生成树图
- 15. 使用Java CUP解析树生成
- 16. StackOverflowError决策树生成JAVA
- 17. Java中的邻接矩阵的最小生成树
- 18. 使用邻接表来表示最小生成树
- 19. 如何使用Neo4j查找最小生成树?
- 20. 查找具有最大最小度的生成树
- 21. 使特定节点的程度最小化的最小生成树
- 22. 为jsTree生成树
- 23. 递归树生成
- 24. XML树的生成
- 25. 使用java的Xml生成
- 26. jquery生成树的最佳控件
- 27. Java USSD菜单树生成 - 如何
- 28. 设计一个图,其中最短路径树比最小生成树长
- 29. 使用BGL创建生成树
- 30. 使用csv文件生成类别树