【问题标题】:Depth first search orders深度优先搜索顺序
【发布时间】:2016-04-29 17:15:15
【问题描述】:

在深度优先搜索中,每当访问一个节点时,我们必须再次获取其相邻节点之一,并对该相邻节点执行此过程。根据这个,可能有多个深度优先搜索顺序。那么,有没有办法在不应用算法和手动计算的情况下计算图中不同 DFS 订单的总数?请尽快给我解决方案..

【问题讨论】:

    标签: graph


    【解决方案1】:

    您可以通过计算每个级别的节点并在每次进入下一个级别时保持相乘来做到这一点。

        LinkedList<Node> connections = startNode.connections;
        long totalOrders = 1L;
        while(!connections.isEmpty()){
            LinkedList<Node> newConnections = new LinkedList<>();
            List<Integer> conSizes = new LinkedList()<>;
            for (Node connection : connections) {
                if(!connection.visited){                    
                    connection.visited = true;
                    newConnections.addAll(connection.connections);
                    totalOrders = totalOrders * factorial(connection.connections.size());
                }
            }
            totalOrders = totalOrders * factorial(connections.size());
            connections = newConnections;
    
        }
        System.out.println(totalOrders)
    
    
        public static long factorial(int n) {
            long fact = 1; // this  will be the result
            for (int i = 1; i <= n; i++) {
                fact *= i;
            }
            return fact;
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      • 2016-02-16
      相关资源
      最近更新 更多