神奇的算法家族超过隐式图

时间:2010-04-22 03:02:21

标签: algorithm complexity-theory graph-theory dynamic-programming

动态编程几乎按照定义,在隐式dag上找到最短/最长路径。 每个DP算法都是这样做的。

Holographic algorithm可以被宽松地描述为在隐式平面图中计算完美匹配的东西。

所以,我的问题是:是否有其他算法系列使用着名的算法而不是隐式图来实现相当大的加速?

2 个答案:

答案 0 :(得分:3)

贪婪算法始终提供最优解的优化问题具有matroid结构。 matroid是一个集合系统,因此它比图形更普遍(图形是一个集合系统,其中子集(称为边缘)都具有正好2个元素),但它可能仍然是您感兴趣的。

全息算法看起来非常有趣,我之前没有听说过 - 肯定会看一眼!

答案 1 :(得分:3)

想到的另一个想法是多面体优化。基本上,linear programming是解决涉及线性不等式和连续变量的优化问题的有效方法,但是将变量限制为整数会导致一般的NP难优化问题。这是不幸的,因为各种各样的问题可以表示为整数编程问题。

通常的方法是详尽地列举所有可行解决方案并选择最佳解决方案,可能使用branch and bound来修剪搜索空间中不可能是最佳的部分。这有时可以很好地工作,但更新的多面体方法通常会更好。

我最了解的方法是cutting-plane method,其中解决了问题的线性松弛(使用例如单纯形算法);如果解决方案恰好是整数,我们也可以得到问题的整数限制的答案。如果不是,则寻找一个平面,该平面将找到的非整数解与整数解的可行区域分开。然后将该平面作为约束添加到问题中,并且再次使用线性编程解决新问题。这一直持续到产生完整的解决方案。

显然这样的飞机必须存在;此外,general-purpose algorithm exists找到它们(虽然它的表现通常很弱)。研究人员花费了大量时间来寻找更好的算法来解决特定问题类型的“分离问题”。最着名的例子是旅行商问题,increase in computationally feasible problem size is nothing less than staggering

切割平面方法通过限制同时考虑的约束数量来实现更好的性能;另一种方法是column generation,其中同时优化的变量数量是有限的。

不确定这是否真的符合隐式图算法的标准,但我认为这肯定是一种非常明显的非显而易见的方法!