/// <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)); }
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; }