예제 #1
0
        static void GenerateWebpage()
        {
            var gtg = new GallaiTreeGenerator(K);

            var gallaiTrees = new List <Choosability.Graph>();

            for (int blocks = 1; blocks <= MaxBlocks; blocks++)
            {
                System.Console.WriteLine("generating " + blocks + " block Gallai trees for K=" + K + "...");
                var all = gtg.EnumerateAll(blocks, MaxOddCycle).ToList();
                System.Console.WriteLine("removing isomorphs...");
                var distinct = all.RemoveSelfIsomorphs();
                gallaiTrees.AddRange(distinct);
            }

            System.Console.WriteLine("removing isomorphs...");
            gallaiTrees = gallaiTrees.RemoveSelfIsomorphs();
            System.Console.WriteLine("generating vector graphics...");
            gallaiTrees.ToWebPageSimple("gallai\\" + K + "\\" + MaxBlocks + "\\" + MaxOddCycle + "\\", K);
        }
예제 #2
0
        static void GoSlow()
        {
            var gtg = new GallaiTreeGenerator(K);

            var gallaiTrees = new List <Choosability.Graph> {
                Choosability.Graphs.K(1)
            };

            for (int blocks = 1; blocks <= MaxBlocks; blocks++)
            {
                System.Console.Write("generating " + blocks + " block Gallai trees for K=" + K + "...");
                var all = gtg.EnumerateAll(blocks, MaxOddCycle);
                gallaiTrees.AddRange(all);
                System.Console.WriteLine(" " + gallaiTrees.Count);
            }

            System.Console.WriteLine("computing invariants...");
            var data = gallaiTrees.Select(g => new GraphInvariantPile()
            {
                G    = g,
                N    = g.N,
                E    = g.E,
                Beta = g.IndependenceNumberBronKerbosch(g.VerticesOfDegree(K - 1)),
                Q    = g.Vertices.Count(v => g.Degree(v) == K - 2 && g.IsClique(g.Neighbors[v])),
            }).ToList();

            System.Console.WriteLine("removing duplicates...");
            data = data.DistinctBy(x => x.Key).ToList();

            foreach (var d in data)
            {
                d.ComputeRemainingInvariants();
            }

            System.Console.WriteLine("generating glpk...");
            var glpk = MakeCodes(data);

            System.Console.WriteLine("writing file...");
            using (var sw = new StreamWriter("code.txt"))
                sw.Write(glpk);
        }
예제 #3
0
        public static void Go()
        {
            var gtg         = new GallaiTreeGenerator(K);
            var gallaiTrees = new List <Choosability.Graph> {
                Choosability.Graphs.K(1)
            };

            for (int n = MinVertices; n <= MaxVertices; n++)
            {
                System.Console.WriteLine("generating for " + n + " vertex trees... ");
                foreach (var T in string.Format(@"C:\Users\landon\Google Drive\research\Graph6\trees\trees{0}.g6", n).EnumerateGraph6File())
                {
                    var cuts = FindBlockCuts(T);
                    if (cuts == null)
                    {
                        continue;
                    }
                    if (cuts.Count <= 0)
                    {
                        gallaiTrees.AddRange(gtg.EnumerateAll(1, MaxOddCycle));
                    }
                    else
                    {
                        gallaiTrees.AddRange(gtg.EnumerateAllForBlockTree(T, cuts, MaxOddCycle));
                    }
                }
            }

            //System.Console.WriteLine("removing isomorphs...");
            //gallaiTrees = gallaiTrees.RemoveSelfIsomorphs();
            //System.Console.WriteLine("generating vector graphics...");
            //gallaiTrees.ToWebPageSimple("gallai\\" + K + "\\" + MaxVertices + "\\" + MaxOddCycle + "\\", K);


            System.Console.WriteLine("computing invariants...");
            var data = gallaiTrees.Select(g => new GraphInvariantPile()
            {
                G    = g,
                N    = g.N,
                E    = g.E,
                Beta = g.IndependenceNumberBronKerbosch(g.VerticesOfDegree(K - 1)),
                Q    = g.Vertices.Count(v => g.Degree(v) == K - 2 && g.IsClique(g.Neighbors[v])),
            }).ToList();

            System.Console.WriteLine("removing duplicates...");
            data = data.DistinctBy(x => x.Key).ToList();

            foreach (var d in data)
            {
                d.ComputeRemainingInvariants();
            }

            System.Console.WriteLine("generating glpk...");
            var glpk = MakeCodes(data);

            System.Console.WriteLine("writing file...");
            using (var sw = new StreamWriter("code.txt"))
                sw.Write(glpk);

            System.Console.WriteLine("generating vector graphics...");
            gallaiTrees.ToWebPageSimple("gallai\\invariant\\" + K + "\\" + MaxVertices + "\\" + MaxOddCycle + "\\", K);
        }