我正在开发一个简单的程序来计算从一个城市到另一个城市的最短路径,使用图表的有向加权节点来表示火车轨迹图。
到目前为止,我尝试了Bellman-Ford
,Dijkstra
,Floyd-Warshall
和Johnson
算法,所有这些算法都很适合找到通往不同目的地的最短路径和开始一样。
但是当我需要通过其他城市计算城市A和城市A之间的路径时,我总是得到0值,因为这些方法忽略了从城市到自身的路径,以便不被无限陷入循环。
我知道通过创建另一个target
参数来解决该循环问题可能很简单,以便在捕获此目标节点时使算法停止,但我不知道具备修改其中一个库的技能。
有人能告诉我这个方法吗?
我的图表为AB5 - BC4 - CD8 - DC8 - DE6 - AD5 - CE2 - EB3 - AE7
,B
到B
的距离应为9
,但在所有这些算法中,它都会返回0
。
注意:这不是重复的,因为我在StackOverflow和Google上搜索至少在Java中搜索路由时到目前为止没有人为此烦恼。
答案 0 :(得分:0)
一种简单的方法是使用已修改图形的最短路径算法/库。您可以复制每个节点和相应的相邻传出边,然后找到从复制节点到原始节点的最短路径。
以下是A-A路径的转换方式(为简单起见,没有重量):