Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 对于任何局部搜索算法,在邻域中搜索的一步是否总是可以在多项式时间内完成?_Algorithm_Complexity Theory_Local_Computation Theory - Fatal编程技术网

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

Algorithm 对于任何局部搜索算法,在邻域中搜索的一步是否总是可以在多项式时间内完成?,algorithm,complexity-theory,local,computation-theory,Algorithm,Complexity Theory,Local,Computation Theory,由于找到一个局部最优解可能比找到一个最优解更容易,我们可以说对于任何局部搜索算法,在邻域中搜索的一个步骤总是可以在多项式时间内完成吗?不。搜索邻域的难易程度取决于邻域的定义 想象一下Max-2SAT的问题: 设U是一组二进制变量x_1,…,x_n,C是一组子句 c对U。每个子句中的文字数最多为两个,并且子句的权重为w(c)∈ C是一个正整数。解是x_1,…,x_n的赋值。如果至少有一个变量为1,则满足子句。 目的是找到一个赋值,使满足的子句的权重之和最大化 设FLIP为邻域结构,其中通过翻转s的

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

不。搜索邻域的难易程度取决于邻域的定义

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

FLIP为邻域结构,其中通过翻转s的一位x_i获得解s的邻域r。 该邻域具有多项式大小,次优邻域可以在多项式时间内找到

ALL为包含U的所有可能解的邻域结构。该邻域具有指数大小,并且需要指数时间才能找到下一个最佳邻域(在本例中为全局最优)。 局部搜索算法在一步后终止,因此它不是一个好的局部搜索算法,而是一个具有指数邻域函数的算法

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

如果您有一个局部搜索问题,您可以在多项式时间内产生一些解决方案,计算多项式时间内解决方案的成本,并在多项式时间内找到最佳邻居,那么您的问题属于复杂度类PLS(请参阅“局部搜索有多容易?”戴维·约翰逊、克里斯托斯·帕帕迪米特里欧和米哈利斯·扬纳卡基斯(1988年)