Esempio n. 1
0
        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();
            }
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
 public Approximate(Graph G1, Graph G2, ModularGraph G)
 {
     this.G1 = G1;
     this.G2 = G2;
     this.G  = G;
 }
Esempio n. 4
0
 public Exact(Graph G1, Graph G2, ModularGraph G)
 {
     this.G1 = G1;
     this.G2 = G2;
     this.G  = G;
 }