zoukankan      html  css  js  c++  java
  • 搜索算法总结

    一:广度优先搜索

    思想:

    1.在搜索树种任意选择一个节点A

    2.从该节点出发访问他的所有子节点:B,C,D...

    3.以B节点为根节点,访问它的所有子节点:T,N,M...

    4.重复3步骤,直到所有节点被访问

    解决方法:队列

    利用队列存储未访问其子节点的节点,已经访问完其子节点的从队头出来,没有访问到期子节点的从队尾进来。

    如上图a,假如选的V1为开始节点,则访问顺序依次为 V1-->V2-->V3-->V4-->V5-->V6-->V7

    V1 进队,访问V1的子节点V2,V3 。

    V2,V3进队,V1出队

    V4,V4进队,V2出队

    .....

    知道V7出队,访问完所有节点。

    广度优先搜索算法框架:

    void BRF(){

        Node *Q=NULL;

        v1入队Q;

        while(Q!=NULL){

               取Q的头元素V1;

              对V1的所有儿子节点V{

                    if(v是叶子节点) 计算最优值;

                    else{

                         if(v满足预设条件)  v入队Q;

                         else 舍去v;

                   }

                   标记V1;

              }

       }

    }

    二:深度优先搜索算法:

    思想:

    1.任选一点作为根节点a

    2.访问V1的从左向右的第一个子节点b

    3.以b为节点重复1,2步骤

    搜索过程:a-->b-->c-->f-->c-->d-->g

    解决方法:栈

    1.a进栈,b进栈,c进栈

    2.c是叶子节点了,回溯,c出栈

    3.搜索到b其他节f,f进栈,c进栈

    4.c是叶子节点,c出栈,f出栈,b出栈

    5.搜索到a的其他未访问的子节点d,d进栈,g进栈

    6.g是叶子节点,出栈,d出栈,a出栈

    7.栈为0,结束

  • 相关阅读:
    使用js对WGS-84 ,GCJ-02与BD-09的坐标进行转换
    百度地图初次使用的一些方法的介绍和静态行驶轨迹,点击当前行驶路径,进行高亮显示
    js数组代码库
    docker学习笔记4-Compose
    Linux and the Unix Philosophy(5)
    Linux and the UnixPhilosophy(4)
    docker原理讲解1-linux namespace
    Docker学习笔记3-生成镜像
    Docker学习笔记2-容器基本使用
    CentOS7下更新jenkins
  • 原文地址:https://www.cnblogs.com/aijianiula/p/2508979.html
Copyright © 2011-2022 走看看