多个源 - 目标路径的最小总和

时间:2015-06-05 03:42:43

标签: algorithm graph minimization

给定一个无向和未加权的图,我想找出k对源 - 目的地路径的最小和,在每个顶点最多使用一次的约束下。

例如,具有2对源 - 目的地(A,E)和(B,F)的下图具有7步的最小总和。即,(A> G> H> I> E)= 4步并且(B> C> D> F> = 3步。

http://i.imgur.com/W4uNiac.png

显然,顺序找到所有这些k路径的贪婪方法将导致次优解。例如,存在8个步骤的解决方案,其中(A> C> D> E)= 3个步骤并且(B> J> K> L> M> F> = 5个步骤。 / p>

我已考虑将此问题建模为最小成本最大流量问题。但是,不能总是区分这样的多个源 - 目的地对。例如,如果k = 2并且两对是(A,B)和(C,D),则应用MCMF的解可以导致(A> ...> D)和(B> ... > C)在某种情况下,这显然不是我想要的解决方案。

对这个问题有什么想法吗?

提前致谢! :)

1 个答案:

答案 0 :(得分:0)

这看起来像是一个修改过的多代理路径规划问题。通常,代理只是限制不会碰撞或交叉路径,但在您的版本中,它们不能在任何地方共享顶点。修改CBS算法来解决这个问题并不难。

我将调用 k 路径代理来帮助描述解决方案。

基本思想是使用二叉搜索树来查找解决方案。首先找到每个 k 代理的最短路径。然后,检查解决路径中的代理之间是否存在任何冲突。当您找到由两个路径共享的节点时,您将在树中分支。在树的右侧,禁止第一个代理使用该节点。在树的左侧,禁止第二个代理使用该节点。然后,需要给出新约束的代理在不使用给定节点的情况下重新搜索。

树中的节点根据所有代理的总路径成本以最佳优先顺序进行扩展。当您找到解决方案时,它保证是最佳的。

您可以使用其他算法,但这一算法非常简单,因为它可以使规划分离。效率取决于您正在解决的问题的确切性质。

如果我不得不猜测,问题是NP-Hard或NP-Complete - 易于验证解决方案,但给定的算法在指数时间内运行。