- 将您的问题建模为图表。每个站点将是一个顶点,而每个总线/火车将是一个边缘。
- 创建一个函数
w:Edges->R
,指示每个边的时间/金钱/…。 - 现在,您有一个典型的最小路径问题,可以通过Dijkstra算法解决 ,该算法从给定源中查找到所有顶点的最小路径。
(*)对于“最小过渡”,您的权重实际上是每个边的1,因此您甚至可以通过运行BFS或双向
BFS而不是dijkstra来优化此权重,如我在这篇文章中所解释的。距离,但实际上是相同的算法]。
编辑
作为对图表的非静态性质的编辑(对于时间),您在注释中提到的时间(关于价格和过渡数量,我上面提到的内容仍然适用,因为这些图表是静态的),您可以使用距离向量路由算法,它实际上适用于动态图,是Bellman
Ford算法的分布式变体。
算法思路:
- 周期性地,每个顶点将其“距离矢量”发送给它的邻居[该矢量指示从发送顶点到另一个顶点行进的“成本”是多少。
- 它的邻居试图更新其路由表[最好通过哪个边缘移动到每个目标]
- 对于您的情况,每个节点[到达时间+等待时间]知道到达邻居的最快方法是什么,并且[顶点/站]将此数字加到距离向量中的每个对象中,以便知道如何以及到达目的地所需的时间。公交车离开时,应重新计算[从此来源]所有节点的旅行时间,并将新矢量发送给它的邻居



