【发布时间】:2015-03-28 09:34:44
【问题描述】:
我在 Java 中实现 Dijkstra 算法时遇到了一些麻烦。
我使用这个(第一个)伪代码:http://en.wikipedia.org/wiki/Dijkstra%27s_algorithm
第 15 行,您需要获取距离最短的顶点。
但是我怎样才能用相应的距离保存距离。
注意: 顶点定义为整数。
我无法正常工作的解决方案:
- K = 顶点,V = 距离的地图,问题:长时间搜索以获得最小距离
- K = 距离,V = 顶点的 SortedMap,问题:几乎每个距离都定义为 Integer.MAX_VALUE
所以我正在寻找一种将顶点保存到远处的快速方法,并且使用 min dist 获取顶点应该很容易。
【问题讨论】:
-
我认为您找不到比 Map for you 解决方案更快的东西
-
或者你可以使用一些已经实现的java图形结构
-
那么最好的解决方案其实是K=distance和V=List Integer(=vertex)的SortedMap?
-
Fangio SortedMap 听起来不错,但唯一的问题是它不会自动更新宽松的成本。只有在插入时,它才会将顶点按正确的成本顺序排列,但随着成本的放宽,检索可能会出现一些问题,因为检索到的节点可能不是成本最低的节点。所以应该实现自己的最小堆。我提到的 SortedMap 问题也在 java.util.PriorityQueue 中。
标签: java algorithm data-structures dijkstra