【发布时间】:2025-12-26 06:50:11
【问题描述】:
我想解决最短路径算法的变体。我不知道如何处理额外的约束。
几个城市
(<=50)与两个(N * N)矩阵一起给出 表示城市之间的旅行时间和城市之间的通行费。现在给出 有一次t(<10000),我们必须选择一条从城市到达的路径0到城市N-1这样通行费最低,我们完成旅行 在给定时间内t。
我知道只有一个参数,比如只有时间,我们可以使用最短路径算法,比如Bellman–Ford algorithm或Dijkstra's algorithm。但是如何修改它以包含两个约束?我们如何为这个问题制定动态规划解决方案?
我正在尝试使用 DP + 完整搜索来解决它。我的方向是否正确,还是有比这些方法更好的算法?
【问题讨论】:
-
你可以试试这个,创建代表城市之间时间和通行费的图表副本......然后一起解决这些图表,而在步骤 i 中,你将能够最小化所有这些限制
-
我觉得没问题,所以你的 dp 状态是[剩余时间][城市]?剩余时间条件将帮助您的程序避免无限循环,应该没问题!
-
@PhamTrung 是的,我想过同样的方法,但不确定它是否是最好的
-
我曾经在一次 IA 考试中遇到过这种情况,正确的答案是设置一个启发式方法来结合这两个约束。这可能不是最佳的想法。看看A star algorithm。它可能会给你一个想法
-
尝试谷歌shortest path with time constraint。它会给你一堆关于这个主题的论文。这个问题显然是 NP 难题。
标签: algorithm dynamic-programming dijkstra shortest-path