旅程计划

时间:2013-07-08 19:14:36

标签: algorithm

  

如果您有一个国家/地区的完整公交时刻表,您如何找到1天内两个指定站点之间可以携带的最大人数?

我假设公交时刻表为您提供每个公交车站的起飞和到达时间的完整列表以及每辆公交车的容量。您将在问题中获得开始和结束时间。

您可以确定一系列公共汽车,这些公交车可以最短的时间到达目的地并填满从该路径开始的所有公共汽车,然后当每辆公共汽车到达停靠站时,只需转移尽可能多的乘客到下一班车离开。但是,没有理由说这应该具有最大容量。

这个问题可以解决的最快速度是多少?例如,假设对于M个城市,我总共有N个记录;路线记录Rᵢ包含一个数字Kᵢ,一个容量Cᵢ,以及Kᵢ城市号码,Kᵢ到达时间和Kᵢ出发时间列表。 (Rᵢ中的第一个到达时间和最后一个出发时间是无关紧要的。)广度优先搜索程序可以在O(M * N)时间内解决问题吗?

1 个答案:

答案 0 :(得分:3)

这不是一个奇怪的谜题;这是一个算法问题。解决此问题的一种方法是针对每个(位置,到达时间)和(位置,出发时间)制作具有节点的有向图。每个到达节点具有无限容量弧,以便在相同位置处的所有离开不是更早的。每个出发节点都有一个弧到每个适当的到达节点(按照公交时刻表),用总线的容量加权。然后,您可以使用自己喜欢的算法查找从源到接收器的最大流量。

您的源节点应该是起始位置零时刻的到达节点,您的汇聚节点应该是结束位置结束时的出发节点。