Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/337.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 - Fatal编程技术网

Java 找到最短路径或最快路径

Java 找到最短路径或最快路径,java,Java,我得到了一个有600000条道路与交叉口相连的文件。我必须做一个程序,找出两个路口之间的最短路径。但它也必须能够在其他两个交叉点之间找到最快的路径。我想用BFS算法来解决这个问题,但我不知道这是不是正确的方法。我还发现了其他一些使用Dijkstra算法来解决这个问题的方法 我不是在寻找一个完整的代码mashup,但我只是想知道我是否朝着正确的方向前进 PS:输入文件如下所示: 4370 6701 3079 2019 60 32840 9113 17817 7483 30 40758 13107

我得到了一个有600000条道路与交叉口相连的文件。我必须做一个程序,找出两个路口之间的最短路径。但它也必须能够在其他两个交叉点之间找到最快的路径。我想用BFS算法来解决这个问题,但我不知道这是不是正确的方法。我还发现了其他一些使用Dijkstra算法来解决这个问题的方法

我不是在寻找一个完整的代码mashup,但我只是想知道我是否朝着正确的方向前进

PS:输入文件如下所示:

4370 6701 3079 2019 60
32840 9113 17817 7483 30
40758 13107 3445 2505 30
3074 11089 19209 2960 40

格式如下: 道路编号-起点交叉口-终点交叉口-距离(米)-限速(公里/小时)


编辑以备将来参考:我决定使用Dijkstra的算法来解决这个问题,它的效果非常好。非常感谢大家!事实证明,在一个超过600000个节点的图中,只需几秒钟就可以找到两个节点之间的最短路径

迪克斯特拉是去这里的好方法。你只需要为边选择一个合适的权重来表示距离和时间……但这真的很简单。

我认为你朝着正确的方向前进。是的,Dijkstra的算法是可行的。最短路径使用两个路口之间的距离,最快使用两个路口之间的旅行时间。谢谢。那么,将交叉点保存在一个将交叉点连接到一条连接的道路的hashmap中是否是一个好主意呢?您说您需要使用Dijkstra算法是正确的。为了实现Dijkstra,您可能需要研究和使用不同的方法来表示它们,例如邻接列表、邻接矩阵。@PieterVerschaffelt这绝对是一种方法。