Ejemplo n.º 1
0
        /// <summary>
        /// Color a graph with an algorithm
        /// </summary>
        /// <param name="algorithm">algorithm</param>
        /// <param name="probability">probability algorithm?</param>
        /// <returns>(minColors, maxColors), for non-probability algorithm minColors = maxColors</returns>
        public Tuple <int, int> ColorGraph(GraphColoring.GraphColoringAlgorithm.IGraphColoringAlgorithmInterface algorithm, bool probability = false)
        {
            GraphColoring.Graph.IGraphInterface graph = algorithm.GetGraph();

            if (graph.GetColoredGraph().GetIsInitializedColoredGraph())
            {
                graph.GetColoredGraph().DeinitializationColoredGraph();
            }

            // Variable
            int countIterations = 1;
            int colors, minColors = int.MaxValue, maxColors = int.MinValue;

            if (probability)
            {
                countIterations = COUNTITERATIONSPROBABILITY;
            }

            for (int i = 0; i < countIterations; i++)
            {
                algorithm.Color();
                colors = graph.GetColoredGraph().GetCountUsedColors();

                if (colors < minColors)
                {
                    minColors = colors;
                }

                if (colors > maxColors)
                {
                    maxColors = colors;
                }

                graph.GetColoredGraph().DeinitializationColoredGraph();
            }

            return(new Tuple <int, int>(minColors, maxColors));
        }
Ejemplo n.º 2
0
        public void GenerateGraphs()
        {
            // Variable
            int minCount = int.MaxValue, maxCount = int.MinValue;

            GraphColoring.GenerateGraph.IGenerateGraphInterface generateGraph;
            GraphColoring.Graph.IGraphInterface graphTemp, minGraph = null, maxGraph = null;

            for (int i = 0; i < COUNTITERATIONSGENERATEGRAPHS; i++)
            {
                generateGraph = new GraphColoring.GenerateGraph.ErdosRenyiModel.ErdosRenyiModel(countOfVertices, GraphColoring.GenerateGraph.ErdosRenyiModel.ErdosRenyiModel.ErdosRenyiModelProbabilityEnum.cLogNDividedByN);

                graphTemp = generateGraph.GenerateGraph();

                if (!graphTemp.GetGraphProperty().GetIsConnected())
                {
                    i--;
                    continue;
                }

                if (graphTemp.GetGraphProperty().GetCountEdges() < minCount)
                {
                    minCount = graphTemp.GetGraphProperty().GetCountEdges();
                    minGraph = graphTemp;
                }

                if (graphTemp.GetGraphProperty().GetCountEdges() > maxCount)
                {
                    maxCount = graphTemp.GetGraphProperty().GetCountEdges();
                    maxGraph = graphTemp;
                }
            }

            this.minGraph = minGraph;
            this.maxGraph = maxGraph;
        }