zoukankan      html  css  js  c++  java
  • 深度优先搜索

     深度优先搜索用于寻找图(G)中与顶点s连通的其它顶点。

    设计一个类实现该算法,类的API如下:

    算法实现

    用递归的方法来遍历所有的顶点,在访问一个顶点时:

    将它标记为已访问;

    递归的访问它的没有被标记的邻接点。

    实现代码如下:

    public class DepthFirstSearch {
    
        private boolean[] marked;
        private int count;
    
        /**
         * Find the vertices connected to vertex s
         */
        public DepthFirstSearch(Graph G, int s) {
            marked = new boolean[G.V()];
            dfs(G, s);
        }
    
        private void dfs(Graph G, int v) {
            marked[v] = true;
            count++;
            for (int w:G.adj(v))
                if (!marked[w])
                    dfs(G, w);
        }
    
        /**
         * Is vertex v connected to s
         */
        public boolean marked(int v) {
            return marked[v];
        }
    
        /**
         * Return the count of vertices connected to s
         */
        public int count() {
            return count;
        }
    
    }

    测试下图,与顶点0连通的顶点

        public static void main(String[] args) {
    
            Graph G = new Graph(13);
            G.addEdge(0, 1);
            G.addEdge(0, 2);
            G.addEdge(0, 5);
            G.addEdge(0, 6);
            G.addEdge(3, 4);
            G.addEdge(3, 5);
            G.addEdge(4, 5);
            G.addEdge(4, 6);
    
            G.addEdge(7, 8);
    
            G.addEdge(9, 10);
            G.addEdge(9, 11);
            G.addEdge(9, 12);
            G.addEdge(11, 12);
    
    
            DepthFirstSearch search = new DepthFirstSearch(G, 0);
            for (int i=0; i<G.V(); i++)
                if (search.marked(i))
                    System.out.print(i + " ");
        }

    输出结果:0 1 2 3 4 5 6 

  • 相关阅读:
    HTTP协议
    安全测试-渗透性测试
    网络安全、Web安全、渗透测试之笔经面经总结(三)
    Struts2拦截器再认识
    struts2.5+框架使用通配符与动态方法
    struts.xml配置详解
    代理概述
    Mybatis Plugin(拦截器)的开发
    详解环境搭建SSM
    mybatis-databaseIdProvider多数据库支持
  • 原文地址:https://www.cnblogs.com/deltadeblog/p/9037955.html
Copyright © 2011-2022 走看看