问题很简单。我需要证明没有贪婪算法能够为给定问题获得最优解。
我不清楚是否存在问题必须满足的任何条件,因此存在某种贪婪算法以获得最优解。或者,如果有足够的条件使问题无法通过贪婪算法解决。
我正在谈论贪婪的色彩:
答案 0 :(得分:3)
我需要证明没有贪婪的算法可以获得 针对特定问题的最佳解决方案。
那么,这将取决于您选择的属性的定义。
查看图形着色问题的示例,并假设您有一个给出部分彩色图形的oracle M
,当且仅当存在图形着色时才返回true。
现在,使用这个oracle,一个贪婪的算法可以如下:
for each vertex v:
for each color c:
temporarly color v with c
run M on partially colored graph
if M yields true, make c constant to v, and abort the inner loop
上述算法根据oracle M
的答案,以贪婪的方式对图形着色,一次选择一个顶点。 (选择M
的最佳答案并将其分配给每个顶点和颜色,其中答案集为false或true)
是否觉得作弊?可能,因为没有已知的这样的M
在多项式时间内运行,但是如果你运行一个创建M
的指数算法,那么肯定会有一个贪婪的算法。
然而,您可以证明在多项式时间(或任何其他多项式算法)中贪婪选择的KNOWN算法不会产生图形着色的最佳答案,因为图形着色是NP完全的,我们不知道知道任何有效解决NPC问题的算法(并且大多数人认为这种算法不存在)。
然而,如果在某些时候我们将证明P = NP,我们可以有效地计算M
,我们将得到一个有效的贪婪算法来解决图着色。
答案 1 :(得分:1)