起点为3
, 终点为5
, 利用广度优先搜索的步骤如下:
- 分层, 起点是第0层
- 从起点最少需 n 步就能到达的点就属于第 n 层
如上图的例子:
- 第零层:
3
- 第一层:
2
,4
,6
- 第二层:
1
,5
- 第三层:
0
搜索的过程也是各个节点扩展的过程. 以上图为例:
- 起点
3
能扩展出2
,4
,6
. 2
能扩展出1
, 但不能扩展出4
(因为4
已经被起点扩展出来了)4
能扩展出5
,6
不能扩展出5
(已经被4
扩展出了)1
能扩展出0
所有搜索序列是: 3, 2, 4, 6, 1, 5
广度搜索的算法一般是创建两个队列, 一个放已经访问过的节点, 另一个放被扩展出的节点.
以上图为例, 从起点3
到终点5
的搜索过程如下:
将起点3
放入open队列.
起点3
出队, 进入close队列.
与此同时, 3
扩展出的2
, 4
, 6
进入open队列.
节点2
出队, 进入close队列.
被2
扩展出的1
进入open队列.
节点4
出队, 进入close队列.
与此同时, 被4
扩展出的5
进入open队列.
节点6
出队, 进入close队列.
由于6
能扩展出5
, 而5
已经被4
扩展出了, 所有这里不做过多操作.
节点1
出队, 进入close队列.
与此同时, 被1
扩展出的0
进入open队列.
节点5
出队, 进入close队列.
由于5
就是我们的终点, 所以搜索过程结束.