zoukankan      html  css  js  c++  java
  • C++ 宽度优先搜索基本格式和概念

    void bfs{
        while(front<=rear)
        {
            //当队列非空时做,其中front和rear分别为头指针和尾指针
            if(//找到目标状态)
            //做相应处理(如推出循环输出解、输出当前解、比较解得优劣);
            else{
                //拓展头结点
                if(//拓展出的新结点没有出现过(bool))
                {
                    rear++;
                    //将新节点插到队尾; 
                } 
            } 
            front++;//取下一个点 
        }
    }

    搜索时计算机程序设计中的一种基本算法、最常用的算法;

    宽度优先所搜:

    又称为广度优先搜索。

    它是从初始结点开始,应用产生式规则和控制策略生成第一层结点,同时检查目标结点是否在这些生成的节点中。若没有,再用产生式规则将所有第一层结点进一步扩展,得到第二层结点,并逐一检查第二层结点是否包含目标结点。若没有再用产生式规则拓展第二层结点。如此依次拓展,检查下去,直至发现目标结点为止。

    如果拓展完所有结点,都没有发现目标结点,则问题无解。

    宽度优先搜索是一种盲目的搜索,所有结点的拓展都遵循“先进先出”的原则,所以采用“队列”来存储这些状态。宽度优先搜索的基本框架就如同上面的代码。

    如果只求任意一个解,也可以写成以下程序:

    void bfs2{
        p=true;
        while p do{
            if(//头结点是目标状态)  
            p=false;
            else{
                //拓展头结点;
                if(//拓展出的新节点没有出现过)
                {
                    rear++;
                    //将新节点插到队尾 
                } 
                front++;
                if(front>rear)p=false;
            }
        }
    } 
  • 相关阅读:
    Java面向对象之封装静态
    分布式平台Spark环境的搭建
    高斯混合模型
    异常排除: 调用方未由服务进行身份验证
    HttpClient介绍和简单使用流程
    阿里短信服务的使用流程
    笔记工具选择
    特效图文制作
    语言基础(23):智能指针
    无线通信基础(一):无线网络演进
  • 原文地址:https://www.cnblogs.com/FXY-180/p/9371421.html
Copyright © 2011-2022 走看看