Ejemplo n.º 1
0
        /// <summary>
        /// Takes the first n nodes, ordered ascendingly by degree.
        /// </summary>
        /// <typeparam name="TNode"></typeparam>
        /// <param name="graph"></param>
        /// <param name="n">Upper bound on the number of nodes to sample.</param>
        /// <returns></returns>
        public static IEnumerable <TNode> LowDegreeFirst <TNode, TLabel>(this MultiDirectedGraph <TNode, TLabel> graph, int n)
        {
            // Sort nodes by their degree in ascending order
            TNode[] nodes = Utils.Shuffled(graph.Nodes.ToArray()).ToArray();
            Array.Sort(nodes, (n1, n2) => graph.Degree(n1).CompareTo(graph.Degree(n2)));

            // Take lowest degree nodes first
            return(nodes.Take(Math.Min(n, graph.NumNodes)));
        }