Java 如何获得图中的最短循环路径?

Java 如何获得图中的最短循环路径?,java,traversal,Java,Traversal,我正在开发一个简单的程序来计算从一个城市到另一个城市的最短路径,使用图形的有向加权节点来表示火车路线图 到目前为止,我尝试了Bellman Ford,Dijkstra,Floyd Warshall和Johnson算法,所有这些算法都能很好地找到到不同目的地的最短路径,而这与起点不同 但是当我需要计算城市A和通过其他城市返回城市A之间的路径时,我总是得到0值,因为这些方法忽略了从城市到自身的路径,以避免陷入无限循环 我知道,通过创建另一个参数target来解决循环问题可能很简单,该参数使算法在捕捉

我正在开发一个简单的程序来计算从一个城市到另一个城市的最短路径,使用图形的有向加权节点来表示火车路线图

到目前为止,我尝试了
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中是这样。

一个简单的方法是使用修改过的图中已有的最短路径算法/库。可以复制每个节点和相应的相邻传出边,然后找到从复制节点到原始节点的最短路径

以下是A-A路径的转换情况(为简单起见,无权重):


您可能指的是您尝试过的一种算法,该算法旨在找到图形两条边之间的最短距离。参见上文提到的@MichaelButscher的TSP。从B到B的距离为9(使用边BC、CE和EB),OP希望解决节点之间的问题,这正是和co的作用所在@我不考虑循环路径的Dijkstra代码。@ EASI,如果你在寻找最短路径,那么它将不包含任何循环。从B到B的最短路径形式上是空路径(您已经在B中了,对吗?)。“模拟”您想要计算的内容的一种方法是复制每个节点,如我在回答中所述。