初始确定一个开始顶点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从小到大进行排序