满足特定边缘约束的最短路径

时间:2017-08-22 18:32:04

标签: graph graph-theory graph-traversal

假设您有一个带有加权边的图并希望找到最短路径,但另外需要注意的是,必须根据前一个边的其他属性来满足其他约束。我能想到的最好的例子是航班或公共汽车类型。节点是城市,边缘是航班/路线,例如,边缘权重是价格。现在你想找到最便宜的机票,但是在现有的公共汽车/飞机到达之前你不能乘坐公共汽车或飞机。因此,在这个例子中,你可能会有类似元组列表(city1,city2,价格,持续时间,离开)的目标,目标是找到最便宜的“可行”路线,以便在接下来的时候看到departure_time> culmative_time。我想不出任何真正好的或有效的解决方案。

1 个答案:

答案 0 :(得分:0)

使用Dijkstra的算法。但是,每次沿着边缘移动到新顶点时,请更新到该顶点的累积时间。

删除当前不再提供的该顶点的任何边缘(总时间超过它的提供时间)。

当前未提供的任何边缘朝向该顶点,但 将在适当的时间提供,添加等待行进到下一个顶点所需的时间,如果边缘被发现是下一个最便宜的边缘。