Exemplo n.º 1
0
        /// <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;
        }
Exemplo n.º 2
0
        /// <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;
        }