最適なグラフの色付けの作業を再度行っているため、グラフのすべての可能な色の組み合わせ (配列は各ノードの色を表します) を生成する必要があります。この質問でわかるように、ここで多くの助けを得ました。
C で可能なすべての配列の組み合わせを生成する - 最適なグラフの色付け
今のところ、私のコードは次のとおりです。
void generatearray( int array[], int array_size, int idx = 0, int fixed = 0 )
{
int i;
if ( idx == array_size )
{
putchar('\n');
for( i = 0; i < array_size; i++ ) printf( "%i ", array[i] );
} else {
for( i = 0; i <= 3; i++ )
{
if ( fixed == i )
{
fixed++;
array[idx] = i;
return generatearray( array, array_size, idx + 1, fixed );
}
array[idx] = i;
generatearray( array, array_size, idx + 1, fixed );
}
}
}
int arr[3];
generatearray( arr, 3 );
この場合、出力は次のようになります。
0 0 0
0 0 1
0 1 0
0 1 1
0 1 2
0 が青、2 が赤の場合、グラフの色付けでは、赤-赤-赤は青-青-青と同じです。それが私のコードが行うことです: グラフのすべての可能な異なる色の組み合わせを生成します。
今、コードを改善する必要がありますが、何も考えられませんでした。私は pthreads を使用しており、各スレッドがいくつかの色でグラフを処理するようにしたいので、指定された数の色でのみ配列を生成したいと考えています。
例: 2 色の場合、出力は次のようになります。
0 0 1
0 1 0
0 1 1
と 3 色:
1 2 3
これを行う別のスレッドがあるため、設定された数よりも少ない色の配列を作成する必要はありません。
私のコードを手伝ってくれる人はいますか?申し訳ありませんが、私はいつでも自分自身を明確にしませんでした。