地下最短路径 - Java

时间:2016-11-02 18:43:30

标签: java algorithm shortest-path adjacency-list adjacency-matrix

所以我想制定一个程序来找到两个火车站之间的最短路径。你会建议什么是表示火车线路的最佳方式,它们相交并搜索到这一点?我目前的想法是邻接矩阵或列表但是,我不确定并非所有相邻点都被链接。

EG。 火车线路看起来像这样:

  • 灰线站 - 滑铁卢,南华克,伦敦桥
  • 黑线站 - 肯宁顿,椭圆形,自治市镇,伦敦桥
  • Black line 2 Stations - Kennington,Waterloo,Embankment
  • 布朗线路站 - 大象&城堡,滑铁卢,路堤。

如果我想从Oval到Southwark,我会去:

  • 黑线上的Kennington椭圆形(然后切换空白线2)
  • 肯宁顿到滑铁卢(然后切换到灰线)
  • 滑铁卢到Southwark。

2 个答案:

答案 0 :(得分:1)

这是一个最短的路径问题。由于您对最短时间感兴趣,因此只需使用持续时间代替距离。 Dijkstra算法是解决这些类型问题的常用方法。它在互联网上有详细记录。如果您打算生成所有行程的时间表,那么您应该查看Floyd-Warshall算法,因为它可以为所有站点生成解决方案。

这两种方法都需要您将轨道系统建模为图形。边缘权重将是站点之间的行进时间。对于具有多行的工作站,您可以使用多个节点和边缘,它们之间的权重为4。

答案 1 :(得分:0)

这类似于旅行商问题,除了尝试所有可能的路径之外,没有已知的封闭解决方案。请注意,这些路径的数量随着站点的数量呈指数增长,因此计算速度非常快。

此外,你必须决定你是想要站之间的最短距离,还是它们之间的最短旅行时间。