【问题标题】:How to find shortest path in dynamic situation如何在动态情况下找到最短路径
【发布时间】:2012-02-22 03:17:44
【问题描述】:

前几天,有人问我,如果我们的环境中有一些代理,并且他们想从他们的源头到他们的目的地,我们如何才能为所有这些代理找到他们不应该有的总最短路径走路时发生冲突。

问题的关键是所有代理同时在环境中行走(可以通过无向加权图建模),我们不应该有任何碰撞。我考虑过这一点,但我找不到所有这些的最佳路径。但是对于这个问题,肯定有太多的启发式想法。

假设输入是图 G(V,E),m 个代理分别位于:S1, S2,...,Sm 启动时图的节点,它们应该在最后到达节点 D1,...Dm。也可能是节点 Si 或 Di 中存在冲突,...但这些冲突不是重要的是,当它们位于路径的内部节点时,它们不应该发生冲突。

如果他们的路径不应该有相同的内部节点,那将是一种k-disjoint paths 问题,即NPC,但在这种情况下,路径可以有相同的节点,但代理不应该同时在同一个节点。我不知道我能不能说出确切的问题陈述。如果令人困惑,请在 cmets 中告诉我进行编辑。

是否有任何最优且快速的算法(最优是指所有路径的长度之和尽可能小,快速是指良好的多项式时间算法)。

【问题讨论】:

  • 是否允许代理停留在给定节点?还是他们必须在每次迭代中走动? (您可以通过创建通往节点本身的边来模拟停留成本)
  • @Zeta,其实是的,但我没有说这个,因为我认为它会更复杂。但是,如果您对此有解决方案,那就太好了。
  • 我还没有解决方案,抱歉,但这会改变最佳解决方案:Example。如果不允许等待,则所有长度的最小总和为100+100+2=202。如果允许等待并且花费小于 66(比如 40),那么所有长度的最小总和是 40+1+1 + 40+40+1+1 + 2 = 42+82+2 = 126。
  • @Zeta,很好的样本,但我认为解决我们当前问题的算法可以解决停留问题(正如你所说,只是在图的每个节点上添加循环)。
  • 我几乎可以向你保证这是一个 NP 完全问题。我会看看试图证明它是 NP 完备的。

标签: algorithm shortest-path


【解决方案1】:

Google 搜索显示两个可能有用的链接:

编辑:来自本书章节(第一个链接):

在多机器人系统 [原文如此] 中有多种路径规划方法,但是,找到 最优解是 NP-hard。霍普克拉夫特等人。 (1984) 将规划问题简化为 在矩形容器中移动矩形的问题。他们证明了 NP 硬度 找到从给定配置到目标配置的计划 脚步。因此,所有可行的路径规划方法都是效率之间的折衷 和结果的准确性。

我在网上找不到 Hopcroft 的原始论文,但鉴于该引用,我怀疑他们将导航任务简化为类似于 Rush Hour,这是 PSPACE 完成的。

【讨论】:

  • 您参考的论文讨论了不同的启发式方法,这并不难(我在我的问题中提到过),我会询问确切的算法。可能是第一个 OP(他问我这个问题),启发式算法很好,但对我来说,精确的算法或 NP-Completeness 很有趣。
  • 我用第一个链接的引用更新了答案;这个问题似乎是 NP 难题。
  • 对,它是 NP 难的,而不是 NP 完全的,这是有道理的。
【解决方案2】:

如果只是每个机器人从 a 点到 b 点的问题,您可以使用 A* (A Star) 或 Best-First 之类的搜索算法。

给它一个简单的启发式方法,比如距离目标的总和。

【讨论】:

  • 更简单的启发式是为所有机器人找到最短路径,然后运行算法,如果任何机器人与其他机器人发生碰撞,则以某个优先级停止它,并运行其他机器人,该算法很快并且很快终止(是不难证明这一点),我正在寻找精确的算法。
猜你喜欢
  • 1970-01-01
  • 2018-05-03
  • 2015-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-27
  • 2018-12-03
相关资源
最近更新 更多