Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何找到完成旅程的最短路线?_Java_Graph_Shortest_Journey - Fatal编程技术网

Java 如何找到完成旅程的最短路线?

Java 如何找到完成旅程的最短路线?,java,graph,shortest,journey,Java,Graph,Shortest,Journey,假设我们有一个无向图: {A,B}5 {A,C}6 {A,D}3 {A,E}4 {B,C}4 {B,D}3 {B,E}6 {C,D}3 {C,E}5 {D,E}5 其中数字表示重量 假设我有兴趣从A出发,参观B、C和E。我怎样才能找到最短的路线来进行这次旅行?没有目的地,我只想旅行三个顶点,这三个顶点的距离最短。我在堆的帮助下使用Dijkstra算法,如何修改算法以实现这一点,因为没有最终目标。一种简单的方法,可能不是最有效的,但易于实现 在您的示例中,生成要访问的所有节点排列: A->B->

假设我们有一个无向图:

{A,B}5

{A,C}6

{A,D}3

{A,E}4

{B,C}4

{B,D}3

{B,E}6

{C,D}3

{C,E}5

{D,E}5

其中数字表示重量


假设我有兴趣从A出发,参观B、C和E。我怎样才能找到最短的路线来进行这次旅行?没有目的地,我只想旅行三个顶点,这三个顶点的距离最短。我在堆的帮助下使用Dijkstra算法,如何修改算法以实现这一点,因为没有最终目标。

一种简单的方法,可能不是最有效的,但易于实现

  • 在您的示例中,生成要访问的所有节点排列:
    • A->B->C->E
    • A->B->E->C
    • A->C->B->E
    • A->C->E->B
    • A->E->B->C
    • A->E->C->B
  • 对于每个可能的序列,使用Dijkstra计算路径
    • 例如,对于bce,路径=距离(A,B)+距离(B,C)+距离(C,E)
  • 选择计算出的最短路径
  • 其他可能的方法,在这里,最后有一个相对复杂度的比较表:


    您应该与他人分享您的实施方案,并更清楚地解释您的期望和存在的问题。