static void Main(string[] args) { bool isGraphsChecker = IsValidGraphsChecker(args); bool isComplexityChecker = IsValidComplexityChecker(args); if (!(isGraphsChecker ^ isComplexityChecker)) { ShowHelp(args); return; } bool exact = args[0] == "exact"; if (isGraphsChecker) { var G = GraphLoader.FromCSV(args[1]); var H = GraphLoader.FromCSV(args[2]); var modularGraph = ModularGraph.Create(G, H); if (exact) { var exactResult = new Exact(G, H, modularGraph).Run(); GraphLoader.ToCSV(exactResult, "Examples/exact.csv"); } else { var approximateResult = new Approximate(G, H, modularGraph).Run(); GraphLoader.ToCSV(approximateResult, "Examples/approximate.csv"); } } else { new ComplexityChecker(args[2], exact).Run(); } }
private void RunAlgorithm(string pathG, string pathH, int step) { var G = GraphLoader.FromCSV(pathG); var H = GraphLoader.FromCSV(pathH); var watch = System.Diagnostics.Stopwatch.StartNew(); var modularGraph = ModularGraph.Create(G, H); if (this.exact) { new Exact(G, H, modularGraph).Run(); } else { new Approximate(G, H, modularGraph).Run(); } watch.Stop(); WriteResult(G, H, watch.ElapsedMilliseconds, step); }
public Approximate(Graph G1, Graph G2, ModularGraph G) { this.G1 = G1; this.G2 = G2; this.G = G; }
public Exact(Graph G1, Graph G2, ModularGraph G) { this.G1 = G1; this.G2 = G2; this.G = G; }