0
点赞
收藏
分享

微信扫一扫

广度优先搜索

萨科潘 2022-03-17 阅读 34

广搜要用到队列的概念,直接使用STL的queue

模板:

q.push(x);//将初始状态放入队列
while (!q.empty())
{ 
state u=q.front();//取出队首
q.pop();//出队
for(..)//对当前队首u拓展所有可能状态也就是下一层的v
if(..)
/*如果拓展的下一状态的可能符合题目要求就更新答案,否则如果不符合或超出范围那么继续拓展下一种可能*/
q.push(v)//将这一状态重新排入队伍的队尾
}

广搜和深搜的区别就在于广搜着重的是其广度,模板中for循环了u可能达到的所有状态vi(i=1,2,...n)同时将符合要求的状态vi(i=1,2....n)放入队尾,所有可能检查完放入后,while循环继续执行的是队伍的第二个也就是v1,再次检查v1的所有可能然后列举出符合的所有状态wi(i=1,2....n)放入队尾,以此类推。因此广搜的特点是所有搜索的状态是保持在同一层上

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAQXNzYXVsdCBib3k=,size_19,color_FFFFFF,t_70,g_se,x_16

而深搜是着重深度,是就某一可能深度检查直到找到一个答案

举报

相关推荐

0 条评论