/// <summary> /// Creates a random minimum spannig tree (this ensures that the graph will be connected). /// </summary> /// <returns></returns> private static NList <NPointI> GetRandomMST(int vertexCount) { int i, v1, v2; Random random = new Random(); NList <NPointI> edges = new NList <NPointI>(); NList <int> usedVertices = new NList <int>(); NList <int> unusedVertices = new NList <int>(vertexCount); for (i = 0; i < vertexCount; i++) { unusedVertices.Add(i); } // Determine the root v1 = random.Next(vertexCount); usedVertices.Add(v1); unusedVertices.RemoveAt(v1); for (i = 1; i < vertexCount; i++) { v1 = random.Next(usedVertices.Count); v2 = random.Next(unusedVertices.Count); edges.Add(new NPointI(usedVertices[v1], unusedVertices[v2])); usedVertices.Add(unusedVertices[v2]); unusedVertices.RemoveAt(v2); } return(edges); }