NS是一类非常常见的改进算法,在每次迭代时通过搜索当前解的“邻域”找到最优的解。邻域搜索算法设计中的关键时邻域结构的选择,即邻域定义的方式。根据以往的经验,邻域越大,局部最优解就越好,这样获得的全局最优解就越好。但是,与此同时,邻域越大,每次迭代搜索邻域所需的时间越长。出于这个原因,除非能够以非常有效的方式搜索较大的邻域,否则启发式搜索也得不到很好的效果。
官方解释:所谓邻域,简单地说即是给定点附近其他点的集合。在距离空间中,邻域一般被定义为以给定点为圆心的一个圆;而在组合优化问题中,邻域一般定义为由给定转化规则对给定的问题域上每结点进行转化所得到的问题域上结点的集合。
通俗讲:邻域就是指对当前解进行一个操作(这个操作可以称之为邻域动作)可以得到的所有解的集合。那么不同邻域的本质区别就在于邻域动作的不同了。
邻域动作是一个函数,通过这个函数,对当前解s,产生其相应的邻居解集合。
例如:对于一个bool型问题,其当前解为:s = 1001,当将邻域动作定义为翻转其中一个bit时,得到的邻居解的集合N(s)={0001,1101,1011,1000},其中N(s) ∈ S。同理,当将邻域动作定义为