Java 仍然可以';在TSP问题中找不到返回原点城市的方法

Java 仍然可以';在TSP问题中找不到返回原点城市的方法,java,algorithm,graph,guava,traveling-salesman,Java,Algorithm,Graph,Guava,Traveling Salesman,问题描述: 旅行推销员问题(也称为旅行推销员问题或TSP)提出以下问题:“给定一个城市列表和每对城市之间的距离,访问每个城市并返回原始城市的最短路线是什么?” 我的解决方案: 我用了回溯法,我用Google Guava库来构造图唯一的问题是我的代码没有返回初始城市,举个例子,如果我们有A,B,C,D城市,最短的轨迹是A,B,D,C,我们必须返回初始城市,像A,B,D,C,A,这是代码(或者,您可以查看以下github链接以更好地了解问题: 主课 ``` public class Main

问题描述: 旅行推销员问题(也称为旅行推销员问题或TSP)提出以下问题:“给定一个城市列表和每对城市之间的距离,访问每个城市并返回原始城市的最短路线是什么?”

我的解决方案

我用了回溯法,我用Google Guava库来构造图唯一的问题是我的代码没有返回初始城市,举个例子,如果我们有A,B,C,D城市,最短的轨迹是A,B,D,C,我们必须返回初始城市,像A,B,D,C,A,这是代码(或者,您可以查看以下github链接以更好地了解问题:

主课

``` 


public class Main {

    public static void main(String[] args) {
        
        TSP t = new TSP();
        t.solve();
    }
}

你就快到了,你只需要回到原点

为此,您必须在
TSP中有一个原点的引用。探索
。您可以将其存储在
this.startNode
中的某个位置,或使
路由
成为一个节点数组:
节点[]路由

然后您可以签入
TSP。浏览
,如果最后一个节点的原点是其邻居,则将该距离添加到总距离中,然后像往常一样继续

基本上可以归结为:

//存储节点而不是字符串。在使用它的任何地方编辑它。
节点[]路由;
// ...
如果(nchoices==图形化){
//
//基本情况:访问了每个节点
//
设置邻居=图。邻接节点(节点);
//如果第一个节点有一条边,这只是一个解决方案。
if(neights.contains(this.route[0])){
//与else块中的计算相同。
int distance\u btwn=这个.getDistanceBeween(节点,邻居);
//将距离添加到起始节点。
int total_distance=this.this_distance+distance_btwn;
if(总距离<此.min_距离<此.min_距离<0){
//如果这个距离<最小距离,这就是我们新的最小距离
//如果最小距离<0,这是我们的第一个最小距离
this.min\u距离=总距离;
//你必须告诉printSolution关于总距离的信息。
打印溶液(总距离);
返回;
} 
}
打印失败();
}

我已经添加了一份关于如何进行的粗略草案。
The Node Class is 
``` 

class Node {
    public String label;
    public boolean visited; // Helps us to keep track of where we've been on the graph
    public Node(String name){
        this.label = name;
        this.visited = false;
    }
    public void visit(){
        this.visited = true;
    }
    public void unvisit() {
        this.visited = false;
    }
}

  The Edge Class :
  ``` 
  class Edge {
      public int value;
      public String left, right; // For convenience in construction process. Not necessary.
      public Edge(String left, String right, int value) {
          this.left = left;
          this.right = right;
          this.value = value;
      }
  }

  
``` 


public class Main {

    public static void main(String[] args) {
        
        TSP t = new TSP();
        t.solve();
    }
}


I will be very Thankful if someone helped me with this issue