【问题标题】:Shortest Path Algorithm with some Restrictions有一些限制的最短路径算法
【发布时间】:2025-12-26 06:50:11
【问题描述】:

我想解决最短路径算法的变体。我不知道如何处理额外的约束。

几个城市 (<=50) 与两个 (N * N) 矩阵一起给出 表示城市之间的旅行时间和城市之间的通行费。现在给出 有一次t(<10000),我们必须选择一条从城市到达的路径0 到城市N-1 这样通行费最低,我们完成旅行 在给定时间内t

我知道只有一个参数,比如只有时间,我们可以使用最短路径算法,比如Bellman–Ford algorithmDijkstra's algorithm。但是如何修改它以包含两个约束?我们如何为这个问题制定动态规划解决方案?

我正在尝试使用 DP + 完整搜索来解决它。我的方向是否正确,还是有比这些方法更好的算法?

【问题讨论】:

  • 你可以试试这个,创建代表城市之间时间和通行费的图表副本......然后一起解决这些图表,而在步骤 i 中,你将能够最小化所有这些限制
  • 我觉得没问题,所以你的 dp 状态是[剩余时间][城市]?剩余时间条件将帮助您的程序避免无限循环,应该没问题!
  • @PhamTrung 是的,我想过同样的方法,但不确定它是否是最好的
  • 我曾经在一次 IA 考试中遇到过这种情况,正确的答案是设置一个启发式方法来结合这两个约束。这可能不是最佳的想法。看看A star algorithm。它可能会给你一个想法
  • 尝试谷歌shortest path with time constraint。它会给你一堆关于这个主题的论文。这个问题显然是 NP 难题。

标签: algorithm dynamic-programming dijkstra shortest-path


【解决方案1】:

可以使用 Dijkstra 来解决这个问题,首先你需要创建一个状态图,每个状态 代表剩余的城市和时间。因此,在每个州(城市 A,时间 t)和州(城市 B,时间 t1)之间,只有在给定时间为(t1 - t)的情况下,您可以从城市 A 移动到城市 B,才会有边。每个边缘的价值将是通行费。使用标准 Dijkstra 解决这个问题很简单。

【讨论】:

    最近更新 更多