private void GreedyAlgorithmButton_Click(object sender, EventArgs e)
        {
            if (StepByStepCheckBox.Checked)
            {
                if (sortAlgorithm != "Greedy Coloring: Step By Step" || stepNumber == 0)
                {
                    GreedyColoring graphColoring = new GreedyColoring(graph, true);
                    graphColoring.StartColoring();
                    SetColorCount(graphColoring.ReturnGraph().ChromaticNumber());

                    colorHistory = graphColoring.ReturnColorHistory();
                    stepNumber   = 0;
                    stepCount    = colorHistory.Count;

                    graph.ResetColors();
                    gui.DrawAllVertice(graph);
                }

                sortAlgorithm = "Greedy Coloring: Step By Step";
                StepByStepAlgotythmLogic();
            }
            else
            {
                GreedyColoring graphColoring = new GreedyColoring(graph);
                graphColoring.StartColoring();
                gui.DrawAllVertice(graphColoring.ReturnGraph());
                SetColorCount(graphColoring.ReturnGraph().ChromaticNumber());
                if (sortAlgorithm != "Greedy Coloring")
                {
                    ResetStepByStepOptions();
                }
                sortAlgorithm = "Greedy Coloring";
            }
        }
Exemple #2
0
        public void Baseline2()
        {
            var sut   = new GreedyColoring();
            var graph = new int[5][];

            graph[0] = new[] { 0, 1, 1, 0, 0 };
            graph[1] = new[] { 1, 0, 1, 0, 1 };
            graph[2] = new[] { 1, 1, 0, 0, 1 };
            graph[3] = new[] { 0, 0, 0, 0, 1 };
            graph[4] = new[] { 0, 0, 0, 1, 0 };

            Assert.Equal(2, sut.Color(graph));
        }
Exemple #3
0
        public void Fuzzy()
        {
            var sut = new GreedyColoring();

            for (var z = 0; z < 1000; z++)
            {
                var r        = new Random();
                var vertices = r.Next(1, 100);

                var graph = new int[vertices][];

                for (var i = 0; i < vertices; i++)
                {
                    graph[i] = new int[vertices];
                }


                for (var i = 0; i < vertices; i++)
                {
                    for (var j = 0; j < vertices; j++)
                    {
                        if (i != j)
                        {
                            var edge = r.Next(0, 2);

                            graph[i][j] = edge;
                            graph[j][i] = edge;
                        }
                    }
                }

                var max = int.MinValue;

                for (var i = 0; i < vertices; i++)
                {
                    var current = graph[i].Sum();

                    if (current > max)
                    {
                        max = current;
                    }
                }

                var colors = sut.Color(graph);
                Assert.True(max + 1 >= colors);
            }
        }