/// <summary> /// number で指定された色数で Graph を彩色します。 /// </summary> /// <param name="index">頂点番号</param> /// <param name="number">色数</param> /// <param name="G">グラフ</param> private bool Coloring(int index, int number, IGraph G) { for (int i = 0; i < number; i++) { G.GetVertexIndexOf(index).SetColor(i); if (index != G.GetVertexNum() - 1) if (Coloring(index + 1, number, G)) return true; else if (G.CheckColoring()) return true; } return false; }
/// <summary> /// Graph を彩色します。 /// </summary> /// <param name="G">グラフ</param> public int SetColoring(IGraph G) { int colorNum; for (colorNum = 1; colorNum <= G.GetVertexNum(); colorNum++) if (Coloring(0, colorNum, G)) break; return colorNum; }