Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.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_Depth First Search - Fatal编程技术网

Java 在图中查找最长路径

Java 在图中查找最长路径,java,depth-first-search,Java,Depth First Search,我试图在图形中找到最长的路径,但在返回最长路径时遇到了麻烦。我已经计算出了递归,并且可以跟踪输出,但是我不能得到正确的输出。程序当前返回多条路径 预计产量是从拉斯维加斯开始的:[拉斯维加斯、盐湖城、丹佛、海伦娜、温尼伯、德卢斯] 我的深度优先搜索方法: public void dfs(City before, ArrayList<String> listOfCities){ System.out.println(before +"-->"+ before.getAdj

我试图在图形中找到最长的路径,但在返回最长路径时遇到了麻烦。我已经计算出了递归,并且可以跟踪输出,但是我不能得到正确的输出。程序当前返回多条路径

预计产量是从拉斯维加斯开始的:[拉斯维加斯、盐湖城、丹佛、海伦娜、温尼伯、德卢斯]

我的深度优先搜索方法:

public void dfs(City before, ArrayList<String> listOfCities){

    System.out.println(before +"-->"+ before.getAdjCities());

    List<City> neighbours = before.getAdjCities();
    before.setVisited(true);

    for (int i = 0; i < neighbours.size(); i++) {

        City n = neighbours.get(i);
        if(!n.visited){
            listOfCities.add(n.getCityName());
            System.out.println(i+ " Test: " + listOfCities.toString());

            dfs(n, listOfCities);
        }
    }
}
public void dfs(之前的城市,ArrayList城市列表){
System.out.println(before+“-->”+before.getAdjCities());
List neights=before.getAdjCities();
before.setvisted(true);
对于(int i=0;i<0.size();i++){
城市n=邻居。获取(i);
如果(!n.访问){
add(n.getCityName());
System.out.println(i+“Test:+listOfCities.toString());
dfs(n,城市列表);
}
}
}
以下是输出:

以下是图表:


您的城市列表在搜索的所有分支中都是静态的,这就是为什么它最终会显示所有城市。每个城市的递归步骤应该比较来自每个邻居的DFS结果以构建结果。

使用Neo4j并要求它匹配最长路径:我遇到了类似的问题,你能分享这个更正的代码吗?比较将如何工作?/它将走向何方?我尝试过移动一些东西,但没有任何效果。请将dfs的返回类型更改为
List
,并在最长结果的开头返回当前城市。如何知道哪一个更长?添加一个变量,最初包含一个空列表-对于循环的每次迭代,以及
if(dfsResult.size()>currentliment.size())currentLongest=dfsResult