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