当h不满足单调条件时,经过这样修正后的h具有一定的单调性质,可以减少重复节点的可能性。
10、四个同心圆盘的扇区数字如图所示,每个圆盘可单独转动。问如何转动圆盘使得八个径向的4个数字和均为12。
提示:很多知识对求解问题有好处,这些知识并不一定要写成启发函数的形式,很多情况下,也不一定能清晰的写成一个函数的形式。
为了叙述方便,我们将两个相对的扇区称为相对扇区,图中阴影部分的扇区称为阴影扇区,非阴影部分的扇区称为非阴影扇区。 由题意,在目标状态下,一个扇区的数字之和等于12,一个相对扇区的数字之和等于24,而一个阴影扇区或者非阴影扇区的数字之和为48。为此,我们可以将目标进行分解,首先满足阴影扇区的数字之和为48(这时非阴影部分的数字和也一定为48)。为了这个目标我们可以通过每次转动圆盘45o实现。在第一个目标被满足的情况下,我们再考虑第二个目标:每一个相对扇区的数字和为24。在实现这个目标的过程中,我们希望不破坏第一个目标。为此我们采用转动90o的方式实现,这样即可以调整相对扇区的数字和,又不破坏第一个目标。在第二个目标实现之后,我们就可以实现最终目标:扇区内的数字和为12。同样我们希望在实现这个目标的时候,不破坏前两个目标。为此我们采用转动180o的方式实现。这样同样是即可以保证前两个目标不被破坏,又可以实现第三个目标。 经过这样的分析以后,我们发现该问题就清晰多了。当然,是否每一个第一、第二个目标的实现,都能够实现第三个目标呢?有可能不一定。在这种情况下,就需要在发现第三个目标不能实现时,重新试探其他的第一、第二个目标。