同深度优先算法一样,宽度优先算法也是从一般的图搜索算法变化而成。在深度优先搜索中,每次选择深度最深的节点首先扩展,而宽度优先搜索则正好相反,每次选择深度最浅的节点优先扩展。与深度优先算法不同的只是第7步,这里ADD(OPEN,)表示将类子节点放到OPEN表的后边,从而实现了对OPEN表中的元素按节点深度排序,只不过这次将深度浅的节点放在OPEN表的前面了,而深度深的节点被放在了OPEN表的后边。当问题有解时,宽度优先算法不但能一定找到解,而且在单位耗散的情况下,可以保证找到最优解。

2.宽度优先
过程BREADTH-FIRST-SEARCH
①G:=G0(G0=s),OPEN:=(s),CLOSED:=( );
②LOOP:IF OPEN=( )THEN EXIT(FAIL);
③n:=FIRST(OPEN);
④IF GOAL(n)THEN EXIT(SUCCESS);
⑤REMOVE(n,OPEN),ADD(n,CLOSED);
⑥EXPAND(n)→{},
G:=ADD(,G);
⑦ADD(OPEN,),并标记到n的指针;把不在OPEN或CLOSED中的节点放在OPEN表的后面,使深度浅的节点可优先扩展。
⑧GO LOOP;

  一般情况下,使用深度优先要对搜索深度事先给出某种限制。当问题有解时,这两种方法都能保证找到解(对于深度优先来说,这里假定深度限制是合适的),在单位耗散的条件下,宽度优先法还能保证找到最短路径。此外对复杂NP完全类问题,一般不可避免会产生指数爆炸问题。