一个通用的图搜索算法

初始确定一个开始顶点source,一个空的集合S,用来存储已探索到的顶点,初始化为空,一个队列Q,初始化也为空。

1、将source加入Q中

2、如果Q为空,失败且退出

3、选出Q中的第一个顶点,移出并加入S中,称该顶点为u

4、如果u是目标顶点,获得解决方案,并成功退出

5、否则得到u的所有相邻顶点,进行处理,并将这些相邻顶点加入Q

6、按照启发方式对Q进行排序

7、返回步骤2

 

对于广度优先搜索,步骤5的处理就是将相邻顶点直接加入Q的尾部;

对于深度优先搜索,步骤5的处理就是将相邻顶点加入Q的开始部分;

对于Dijkstra算法,步骤5的处理就是松弛,并在步骤6按照dist从小到大进行排序

posted @ 2012-07-06 09:08  Cavia  阅读(348)  评论(0编辑  收藏  举报