这个问题是我之前提出的类似问题的延续:Find path between two nodes in graph, based on given criteria - optimization task。
问题摘要:我需要在图中找到从顶点 A 到顶点 B 的最佳路径,假设路径质量计算为路径上边缘权重的最小值,下一个最佳路径是具有最大最小值的路径。通常它就是所谓的“最宽路径问题”。
以前我需要在非常小的图形(最多 15 个顶点)中解决这个问题,所以我不需要复杂的算法,在好心人的帮助下,我设计了我的工作算法。不幸的是,现在我需要以这种方式重新定义我的必需品,以使我的图可以非常大(甚至 5 万条边)。我知道我需要为我的图找到最大生成树,并在获得的 MST 中获得从开始到停止顶点的简单路径。我决定使用jGraphT库。它实现了Kruskal 最小生成树算法。我可以通过将每个边权重乘以 (-1) 并将 Kruskal 用于最小生成树来获得最大生成树,但库中的算法已设计用于检索 MST 边的哈希集。
我的问题如下: 我已经获得了图的最大生成树作为边的 java HashSet。如何以最有效的方式在这种结构中找到从顶点 A 到顶点 B 的路径,以及什么数据结构对此最有效?你给我推荐什么?
此外,我担心这种情况,我的图并不总是一致的(它可能包含孤立的顶点或孤立的子图),这是 Kruskal 算法正确性的主要条件。有没有办法绕过这个问题?
感谢您提供任何帮助或提示。