/// <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))); }