在运输网络中寻找从A点到B点的最近方法的算法?

时间:2012-02-24 18:03:07

标签: java path-finding dijkstra

好的,我正在尝试编写一个基本程序,可帮助用户找到最近的地铁网络中从A点到B点的旅行方式。目前,我用Java编写代码,我有三个类,分别是Station类,Route类和Control类。我们的想法是,Route对象在数组列表中存储有限数量的Station对象,这实际上模拟了包含精确数量的站点的单个地铁路线。此外,可以存储少量路线对象的车站对象,就像同时位于多条路线中的公交地铁站一样。我正在处理的部分是让用户进入他们的出发站和目的地站,然后程序将打印出他们需要转移的站点列表(必须尽可能地最低)才能到达他们的站点。目的地。在这个时候,我很惊讶找到一个好的算法来完成程序的这一部分,我可以想到如何编写可以在复杂网络中执行此任务的代码。所以,如果有人有任何想法,请指导我。谢谢。

1 个答案:

答案 0 :(得分:3)

Dijsktra's Algorithm适用于动态计算单源最短路径。您还可以预先使用多源最短路径算法(例如Floyd-Warshall Method)预先计算每对站的所有最短路径。

考虑到正确的数据结构,这两种算法都很容易实现(我认为你可能没有必要使用Route Class,为什么不让每个Station Object包含它的直接邻居列表?这更紧密遵循通用图数据结构)。您可以为每个站点创建一个预先计算的查找表(虽然对于很多站点来说这将是很大的),该站点会在给定所需目标站点的情况下从该站点通知您要移动到下一个站点的相邻站点。这实质上是为每个电台创建routing tables