バックトラッキングを使用して無向グラフの色数 m を決定する必要がある m_coloring 問題に取り組んでいます。これまでの (java) ソリューションは、m をインクリメントし、m_Coloring メソッドを試して、ソリューションが見つからない場合は繰り返します。ただし、より大きなファイルの場合、m が 6 を超えると、計算に時間がかかります。私たちが使用するように与えられたアルゴリズムにはプルーニングが組み込まれていないと言われました.
vColor = new int[nodes+1];
vColor[1] = 1;
while(unsolved)
{
m++;
mColoring(1);
}
static void mColoring(int i)
{
int color;
if (promising(i))
{
if (i==nodes)
{
unsolved = false;
}
else
{
for(color = 1; color<=m; color++)
{
if(unsolved)
{
vColor[i+1] = color;
mColoring(i+1);
}
}
}
}
}
static public boolean promising (int i)
{
int j=1;
boolean promise = true;
while(j<i && promise)
{
if(adjMatrix[i][j] && vColor[i] == vColor[j])
{
promise = false;
}
j++;
}
return promise;
}