BFS

简介

我们回顾一下之前的搜索树。
我们发现,我们需要一个按照层为关键字遍历这个搜索树的算法。
考虑这种遍历的形式:
得到一个状态之后,我们用它拓展出所有状态,然后将它丢弃。
每次选择当前未被丢弃的最早的一个状态进行拓展,这样我们就能保证优先的性质。
这像什么数据结构呢?
我们发现这个的特点是:先进先出
这就很像队列

具体的写法:

首先建立一个队列,将初始状态放入队列。
然后每次选择队头,拓展,把新状态计入队列。

优点缺点

优点

优先性,dfs无法解决优先性质的问题

缺点

统计具体方案

BFS 模板

front <-1; rear <-1;
初始状态入列;
while (front<=rear)	//当队列不为空
{
	取队首元素进行扩展;
	for (对所有可能的扩展状态)
	{
		if (新状态合法)
			入队;
		if (当前状态是目标状态)
			处理(输出解或者比较解的优劣);
	}
	队首节点扩展完毕,出队;
}
posted @ 2018-12-02 15:44  YUJH01  阅读(93)  评论(0编辑  收藏  举报