zoukankan      html  css  js  c++  java
  • <算法基础>图的三种遍历方法————DFS,BFS,Topological sort

     

    1.BFS(Breadth First Search)

      具体实现的时候用栈来实现更简单。从start point开始,一圈圈向外。

      对于例图的访问顺序是——s,a,c,d,e,b,g,f

    2.DFS(Depth First Search)

    DFS(s){
    首先访问定点s;
    if(s尚有未被访问的邻居)
    {
    任取其一u,递归执行DFS(u);
    }
    else{return;}

    }

      对于例图的访问顺序是——s,a,e,f,g,b,c,d

      

    3.Topological Sort

    仅仅用于有向无环图。

    从AOV网中选择一个入度为0的顶点输出,然后删除此顶点,并删除以此顶点为尾的弧,重复操作指导输出全部顶点或者AOV网中不存在入度为0的顶点为止

    对于上面这个有向图,只有出度没有入度的节点是a,我们以a为起点。
    开始!
    a入队列。                 a
    a弹出,c,e,s压入。————ces为a的出度 s,e,c
    c弹出,      ————c没有出度     s,e
    e弹出,f,k压入。 ————fk为e的出度    k,f,s
    s弹出,d压入。 ————d为s的出度     d,k,f
    f弹出,      ————f没有出度     d,k
    k弹出,g压入。   ————g为k的出度    g,d
    d弹出,b压入。   ————b为d的出度    b,g
    g弹出,      ————g没有出度     b
    b弹出,      ————b没有出度     NULL
    结束!

    节点弹出队列的先后顺序就是遍历访问的先后顺序,即
    ——>a,c,e,s,f,k,d,g,b

  • 相关阅读:
    第一阶段冲刺——4
    Day 1 测试流程--H模型
    【疑问】待解决
    Zookeeper 入门(一)
    【基础组件1】Flume入门(一)
    埋点测试、埋点接口测试
    单点登录 VS 多点登录
    web系统原理
    测试用例总结篇(一)
    功能测试心得(二)
  • 原文地址:https://www.cnblogs.com/dynmi/p/12074241.html
Copyright © 2011-2022 走看看