2.3 无信息图搜索过程 无信息图搜索属于盲目搜索,这里给两种常用的无信息图搜索方法:深度优先搜索和宽度优先搜索。 无信息图搜索过程是在算法的第8步中使用任意排列OPEN表节点的顺序,通常有两种排列方式:
一般情况下,当问题有解时,深度优先搜索不但不能保证找到最优解,也不能保证一定能找到解。如果问题的状态空间是有限的,则可以保证找到解,当问题的状态空间是无限的时,则可能陷入"深渊",而找不到解。为此,像回溯算法一样,可以加上对搜索的深度限制。其方法是在算法的第7步,当节点的深度达到限制深度时,则不将其子节点加入到OPEN表中,从而实现对搜索深度的限制。当然,这个深度限制应该设置的合适,深度过深影响搜索的效率,而深度过浅,则可能影响找到问题的解。 设某问题的状态空间如上图所示。从图中可以看出该问题的特点:初始节点有若干个子节点,每个子节点都链接到三条很深的路径中,而目标假定在最右边的路径中。当采用回溯策略时,由于回溯策略只保留从初始节点到当前节点的一条路径,所以从第一个子节点(从左数)进入第一条路径搜索(从左遍数),回溯后,又进入第二条路径。由于没有找到解,又回溯到第二个子节点。从第二个子节点,同样要搜索第一条路径、第二条路径。第三个字节点、第四个子节点……也都同样。这样,第一和第二条路径将被多次搜索,影响了搜索的效率。而对于深度优先策略(单指这里所说的图搜索深度优先),由于保留了所有已经搜索过的路径,当通过第一个节点搜索了第一、第二条路径后,当通过第二个子节点搜索时,由于第一、第二条路径已经被搜索,并且被记录了,所以就不必重复搜索了,提高了搜索的效率。这一点在算法中是如何体现出来的呢?关键是算法的第7步,在n的子节点中,只将类节点加入到了OPEN表中,而对于类节点和类节点则不予考虑。 |