【发布时间】:2010-09-10 11:19:03
【问题描述】:
是否有多项式时间算法可以在图中找到哈密顿游走?
我的算法是 N 阶乘,真的很慢。
【问题讨论】:
-
我知道找到哈密顿路径是一个 NP 完全问题。找到一个哈密顿回路是一样的,还是已经解决了?
标签: algorithm np-complete
是否有多项式时间算法可以在图中找到哈密顿游走?
我的算法是 N 阶乘,真的很慢。
【问题讨论】:
标签: algorithm np-complete
NP 完全。但如果你确实找到了一个好方法,请告诉我,我会告诉你如何致富。
【讨论】:
你刚刚问了million dollar question。找到一条汉密尔顿路径是一个 NP 完全问题。一些 NP 难题可以使用动态规划在多项式时间内解决,但(据我所知)这不是其中之一。
【讨论】:
不可能为最短找到更好的算法,因为它是 NP 困难的。但是您可以尝试一些启发式方法,也许您可能想查阅您的讲义;)。
为了降低复杂性,您可以使用贪心算法找到一个短(ish)步行。
【讨论】:
一般而言,由于哈密顿路径问题的(决策版本)是 NP 完全的,因此您不能希望获得一个多项式时间算法来寻找哈密顿路径。您可以使用通常的 N 稍微加快速度! → N22N 动态规划技巧(计算 hp[v][w][S] = “是否存在具有端点 v 和 w 且其顶点为每个子集 S 和其中每两个顶点 v 和 w 的子集 S" 使用 DP),但这仍然是指数的。
但是,有许多特殊类型的图始终存在哈密顿路径,并且很容易找到它们(参见 Posa、Dirac、Ore 等的工作)
例如,以下情况为真:如果图的每个顶点的度数至少为 n/2,则图具有哈密顿路径。事实上,如果你做得更聪明,你可以在 O(n2) 或 IIRC 甚至 O(n log n) 中找到一个。
[粗略的草图:首先,只需连接某个“哈密顿”循环中的所有顶点,不管边是否真的在图中。现在,对于实际上不在图中的循环的每条边 (v,w),请考虑循环的其余部分:v...w。由于 deg(v)+deg(w)>=n,列表中存在连续的 x,y(按此顺序),因此 w 是 x 的邻居,v 是 y 的邻居。 [证明:考虑{w的所有邻居的集合}和{v的邻居列表中所有后继者的集合};它们必须相交。] 现在将你的循环 [v...xy...wv] 改为 [vy...wx...v],它至少少了一个无效边,所以你最多需要n 次迭代以获得真正的哈密顿循环。更多详情here.]
顺便说一句:如果您要查找的只是包含每个 边 一次的游走,则称为欧拉游走,并且对于具有它的图(奇数度的顶点数为 0 或 2 ),可以很容易地在多项式时间内找到一个(快速)。
【讨论】:
根据您正在使用的图形的生成方式,您可以通过执行贪婪路径扩展,然后在卡住时进行随机边交换,获得针对随机实例的预期多项式时间。
这对于保证具有哈密顿游走的随机生成的相对稀疏的图非常有效。
【讨论】:
嗯.. 这取决于您的定义。哈密顿路径肯定是 NP 完全的。但是,可以多次访问边和顶点的哈密顿游走(是的,只要在末尾添加游走位,它仍然称为哈密尔顿游走)可以在 O(p^2logp) 或 O(max(c^2plogp , |E|)) 只要你的图满足狄拉克首先猜想和高见泽证明的特定条件。参见 Takamizawa (1980)“在图中寻找短闭合跨步游走的算法”。
保罗
【讨论】:
我的查询:表明在图 G 中查找哈密顿循环的搜索问题 RHAM 是
自还原
如果搜索问题 R 可库克归约为决策问题,则该搜索问题 R 是自归约的SR={ x : R(x) ≠ ∅ }
【讨论】: