• 深度优先搜索DFS和广度优先搜索BFS


    DFS简介

      深度优先搜索,一般会设置一个数组visited记录每个顶点的访问状态,初始状态图中所有顶点均未被访问,从某个未被访问过的顶点开始按照某个原则一直往深处访问,访问的过程中随时更新数组visited,碰到已访问的顶点则回溯到前一顶点按原则选择另一条路径走,如果无路可走时则再次回溯,坚持此原则(总之就是有路走就走,无路走就回溯),最后会回溯到初始顶点。然后从下一个未被访问过的顶点开始,重复上述过程,直到所有顶点都被访问完。

    BFS简介

      广度优先搜索,一般会使用一个队列que,从起点开始,把起点放入que,然后把它拿出来,把它的邻节点们依次放进去,然后对这些邻节点们做重复的操作,直到队列里没有顶点,也就是所有顶点被访问完了。BFS像是一个从起点开始,到邻节点,再到邻节点,由内向外不断扩散的过程。

    举例解释

    从1开始去寻找5

    DFS:

      原则:优先选择左手边

      过程:1-2-3-4-6-4-5

    BFS:

      队列情况:1

           2、5

           5、3

           5出来则找到

    遍历图中所有点

    DFS:

      原则:优先选择左手边

      过程:1-2-3-4-6-4-5

    BFS:

      队列情况:1

           2、5

           5、3

           3、4

           4

           6

           6出来则结束

  • 相关阅读:
    诡异的Integer
    你已经创建了多少个对象?
    静态方法中使用非静态化数据
    静态化初始块的执行顺序
    java中的多构造函数以及类字段的初始化顺序
    java中类的构造方法出错点
    程序员修炼之道读后感
    纯随机数发生器,以及函数重载的问题
    递归判断回文
    使用jQuery操作DOM元素
  • 原文地址:https://www.cnblogs.com/Joezzz/p/9715532.html
Copyright © 2020-2023  润新知