美文网首页
75_图的遍历(DFS)

75_图的遍历(DFS)

作者: 编程半岛 | 来源:发表于2018-07-31 16:36 被阅读107次

关键词:深度优先(DFS)

0. 深度优先(DFS)

  • 原料:class LinkStack<T>
  • 步骤:
    1. 将起始顶点压入栈中
    2. 弹出栈顶顶点v,判断是否已经标记(标记:转2,未标记:转3)
    3. 标记顶点v,并将顶点v的邻接顶点压入栈中
    4. 判断栈是否为空(非空:转2,空:结束)



      DFS算法示例
      DFS流程图
    SharedPointer< Array<int> > DFS(int i)
    {
        DynamicArray<int>* ret = NULL;

        if( (i <= 0) && (i < vCount()) )
        {
            LinkStack<int> s;
            LinkQueue<int> r;
            DynamicArray<bool> visted(vCount());

            // 初始化设置,标记数组中的每一个都没有被访问
            for(int j=0; j<visted.length(); ++j)
            {
                visted[j] = false;
            }

            s.push(i);

            while( s.size() > 0 )
            {
                int v = s.top();      // 拿出队列头部的顶点

                s.pop();

                if( !visted[v] )        // 判断是否被访问
                {
                    SharedPointer< Array<int> > aj = getAdjacent(v);

                    for(int j=aj->length()-1; j>=0; --j)
                    {
                        s.push((*aj)[j]);
                    }

                    r.add(v);
                    visted[v] = true;
                }
            }

            ret = toArray(r);
        }
        else
        {
            THROW_EXCEPTION(InvalidParameterExcetion, "Index i is invalid ... ");
        }

        return ret;
    }

1. 小结

  • 深度优先按照先序遍历的方式对顶点进行访问
  • 深度优先算法的核心是的使用
  • 深度优先和广度优先的唯一不同在于栈或队列的使用

声明:此文章仅是本人在学习狄泰学院《数据结构实战开发教程》所做的笔记,文章中包含狄泰软件资料内容,一切版权归狄泰软件所有!
实验环境:ubuntu10 + Qt Creator2.4.1 + Qt SDK 4.7.4

相关文章

  • 75_图的遍历(DFS)

    关键词:深度优先(DFS) 0. 深度优先(DFS) 原料:class LinkStack 步骤:将起始顶点...

  • 各种DFS

    DFS邻接矩阵遍历图 DFS邻接表遍历图 DFS回溯(不走重复路径) DFS背包(可重复选) DFS背包(不可重复选)

  • 无向图DFS和BFS

    基本结构 DFS深度优先遍历 BFS广度优先遍历 符号图

  • DFS与N皇后问题

    DFS与N皇后问题 DFS 什么是DFS DFS是指深度优先遍历也叫深度优先搜索。 它是一种用来遍历或搜索树和图数...

  • 搜索算法

    图的搜索(遍历) DFS 写法:递归或用 stack求解那种所有满足条件的路径的问题,很容易想到 DFS,而且遍历...

  • (原创)不过如此的 DFS 深度优先遍历

    DFS 深度优先遍历 DFS算法用于遍历图结构,旨在遍历每一个结点,顾名思义,这种方法把遍历的重点放在深度上,什么...

  • 图的桥和割点

    内容概要: 图中的桥 图的DFS遍历树和BFS遍历树及其与寻桥算法的关系 图的割点 DFS和BFS的对比小结 桥(...

  • 简单图论题目

    运用 反向建图 dfs 查找路径,回溯路径 DFS遍历 每一条边

  • 图论小结

    图的存储 邻接矩阵 邻接表 图的遍历 DFS(双向DFS) BFS(剪枝) 单源最短路径算法 dij 条件:无负权...

  • 基本数据结构

    一.图二.树 一.图 1.图的遍历: 通过深度优先遍历DFS和广度优先遍历BFS两种方式。深度优先遍历0 1 2 ...

网友评论

      本文标题:75_图的遍历(DFS)

      本文链接:https://www.haomeiwen.com/subject/nodcvftx.html