对于任何局部搜索算法,可以在多项式时间内完成在邻域中搜索的一步吗?

问题描述 投票:0回答:1

由于找到局部最优解可能比找到最优解更容易,我们可以声称对于任何局部搜索算法,在邻域中搜索的一步总是可以在多项式时间内完成吗?

algorithm complexity-theory local computation-theory
1个回答
1
投票

不。搜索邻域的容易程度取决于邻域的定义方式。

想象一下Max-2SAT问题:设U是一组二进制变量x_1,...,x_n,并且让C是U上的一组子句c。每个子句中的文字数最多为2,子句c∈C的权重w(c)为正整数。解决方案是分配x_1,...,x_n。如果至少有一个变量是1,则满足条款。目的是找到一个赋值,它最大化满足子句的权重之和。

令FLIP为邻域结构,其中通过翻转一位x_i的s来获得解s的邻居r。该邻域具有多项式大小,并且可以在多项式时间中找到下一个最佳邻居。

设ALL是包含U的所有可能解的邻域结构。该邻域具有指数大小,并且需要指数时间来找到下一个最佳邻居(在这种情况下是全局最优)。然后本地搜索算法在一步之后终止,因此它实际上不是一个好的局部搜索算法,而是一个具有指数邻域函数的算法。

存在具有指数邻域函数的更复杂算法,例如在I.A.的“具有指数邻域的局部搜索中用于服务器负载平衡问题”。达维多夫,P.A。 Kononova,Yu.A。 Kochetov,2014。他们在所有服务器上所有可能的磁盘子集的集合中搜索具有混合整数程序的下一个邻居,这些子集是指数级的许多可能的邻居。

如果你有局部搜索问题,你可以在多项式时间内产生一些解,在多项式时间内计算解的成本,并在多项式时间内找到最佳邻域,你的问题在于复杂性类PLS(参见“如何容易本地搜索?“David S Johnson,Christos H Papadimitriou和Mihalis Yannakakis,1988)。

© www.soinside.com 2019 - 2024. All rights reserved.