我想解决最短路径算法的变化。我无法弄清楚如何处理其他限制。
很少有城市
(<=50)
和两个(N * N)
矩阵一起被提供 表示城市之间的旅行时间和城市之间的收费。现在给出 在时间t
(<10000)
,我们必须选择从城市0
到达的路径 到城市N-1
,以便收费成本最低,我们完成旅行 在给定时间内t
。
我知道只有一个参数,例如只有时间,我们可以使用最短路径算法,例如Bellman–Ford algorithm
或Dijkstra's algorithm
。但是如何修改它以包含两个约束?我们如何为问题制定动态规划解决方案?
我正在尝试使用DP +完整搜索来解决它。我是正确的方向,还是有比这些方法更好的算法?
答案 0 :(得分:2)
可以使用Dijkstra来解决这个问题,首先需要创建一个状态图,每个状态 代表城市和剩余时间。因此,在每个州(城市A,时间t)和州(城市B,时间t1)之间,如果您可以从城市A移动到城市B,并且给定时间是(t1-t),则只能存在边缘。并且每条边的价值都是收费。使用标准Dijkstra解决这个问题很简单。