一、广度优先搜索
广度优先搜索(宽度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型,如Dijkstra最短路径算法、Prim最小生成树算法、SPFA最短路径算法等都有与广搜类似的思想。
广搜采用队列实现,其核心思想是:从初始节点开始,生成第一层节点,检查目标节点是否在这些节点中,若没有,则在生成一层节点,以此类推。
二、框架
void bfs()
{
初始化,第一个元素入队并标记;
head=0,tail=1;
do
{
head++;
for(int i=1;i<=n;i++)//n为有多少种生成节点的方式数
{
if(可以入队)
{
tail++;
if(该节点是目标节点)
{
输出或保存;
return;
}
}
}
}
while(head<tail);
}
三、经典题目
1.细胞:
题目:http://39.97.181.192/problem.php?id=4080
题解:细胞 广度优先搜索算法
2.Dungeon Master:
题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1248
3.最少步数
题目:http://39.97.181.192/problem.php?id=4081
4.奇怪的电梯