同深度优先算法一样,宽度优先算法也是从一般的图搜索算法变化而成。在深度优先搜索中,每次选择深度最深的节点首先扩展,而宽度优先搜索则正好相反,每次选择深度最浅的节点优先扩展。与深度优先算法不同的只是第7步,这里ADD(OPEN,)表示将类子节点放到OPEN表的后边,从而实现了对OPEN表中的元素按节点深度排序,只不过这次将深度浅的节点放在OPEN表的前面了,而深度深的节点被放在了OPEN表的后边。当问题有解时,宽度优先算法不但能一定找到解,而且在单位耗散的情况下,可以保证找到最优解。 2.宽度优先 一般情况下,使用深度优先要对搜索深度事先给出某种限制。当问题有解时,这两种方法都能保证找到解(对于深度优先来说,这里假定深度限制是合适的),在单位耗散的条件下,宽度优先法还能保证找到最短路径。此外对复杂NP完全类问题,一般不可避免会产生指数爆炸问题。 |