static void Main(string[] args) { int.TryParse(args[0], out var verticesCount); float.TryParse(args[1], out var removeEdgesPercentage); removeEdgesPercentage /= 100f; var numSamples = 15; var graphGenerator = new GraphGenerator(); var graphList = GenerateGraphSamplesAsync(removeEdgesPercentage, numSamples, graphGenerator).Result; FileManage.WriteGraphsAsync(graphList).Wait(); }
private static async Task <IList <Graph> > GenerateGraphSamplesAsync(float removeEdgesPercentage, int numSamples, GraphGenerator graphGenerator) { var graphList = new List <Graph>(); var removeEdgesPercentages = new float[] { .05f, .40f, .70f }; using (var cts = new CancellationTokenSource()) for (int j = 5; j < 8; j++) { foreach (var percentage in removeEdgesPercentages) { var verticesCount = 10 * Convert.ToInt32(Math.Pow(2, j)); Console.WriteLine($"***** GENERATE {verticesCount} VERTICES {GetDensityName(percentage)} *****"); //var tasks = new List<Task>(); for (int i = 0; i < numSamples; i++) { (var edges, var verticesDegree) = graphGenerator.Gen(verticesCount); await graphGenerator.RandomPruneAsync(edges, Convert.ToInt32(edges.Count *percentage), verticesDegree, cts.Token); graphList.Add(new Graph { Edges = edges.ToList(), VerticesCount = verticesCount, Id = $"{(i + 1)}_{GetDensityName(percentage)}" }); } //await Task.WhenAll(tasks); } } return(graphList); }