【学习笔记】JU1-1B BFS

< 搜索 >  BFS 广(宽)度优先搜索:

基本思想:在一棵决策树上,逐层搜索,先搜索离根节点近的,最后到最底层。

实现:这里使用队列完成,首先添加根节点(即初始状态),再逐个将决策树的原始根节点的各子节点从左往右加入队列;

    每次大循环取出队头输出(或记录),并POP掉队头,直到队列空为止;

一棵决策树上BFS的例子

 

 

代码实现:

 1 #include<queue>//加入C++STL标准库的queue容器
 2 queue</*数据类型*/>q//队列名自取
 3 q.push("初始状态")//加入初始状态
 4 while(!q.empty)//判断非空
 5 {
 6     /*数据类型*/ fr=q.front();
 7     //对队头进行处理
 8     q.pop();
 9     for("枚举所有可拓展情况")    {
10         //可进行其他处理
11         if("符合情况")
12             q.push("这种情况");//加入队列
13             //并或进行其他处理      
14     }
15 }

 

优点:短路性,即找到答案的过程就是最优(短)的过程。

缺点:代码较多,思考过程较繁琐。

适用于:求最优解中。

 

 

 

 

 

  

 

 

 

 

posted @ 2021-02-25 22:03  anjack_511  阅读(79)  评论(0)    收藏  举报