驚いたことに、グラフの色付けに関してはまだ課題がありません!
無向グラフの場合、2つの隣接する頂点が同じ色を共有しないように、各頂点に色を付けることができます。これを達成するために必要な個別の色の最小数χは、有彩色数と呼ばれますは、グラフのます。
たとえば、次の例は、最小数の色を使用した有効な色付けを示しています。
(ウィキペディアで発見)
したがって、このグラフの色数は χ= 3です。
頂点の数N <16(1から1までの番号が付けられている)が与えられたプログラムまたは関数を書く Nまで)とエッジのリストを指定して、グラフの色数を決定記述します。
入力が前処理されない限り、入力を受け取り、便利なフォーマットで出力を生成できます。つまり、文字列または配列を使用したり、文字列に便利な区切り文字を追加したり、ネストされた配列を使用したりできますが、フラット化された構造には、以下の例と同じ番号が(同じ順序で)含まれている必要があります。
組み込みのグラフ理論関連の関数(MathematicaのようなChromaticNumber
)は使用できません。
グラフにループ(頂点とそれ自体を接続するエッジ)がないと仮定できます。これにより、グラフが色付け不能になります。
これはコードゴルフで、最短の回答(バイト単位)が勝ちです。
例
プログラムは、少なくともこれらすべてを妥当な時間内に解決する必要があります。(すべての入力を正しく解決する必要がありますが、大きな入力の場合は時間がかかる場合があります。)
投稿を短くするために、次の例では、単一のコンマ区切りリストでエッジを示しています。必要に応じて、代わりに改行を使用したり、便利な配列形式の入力を期待したりできます。
三角形(χ= 3)
3
1 2, 2 3, 1 3
6つの頂点の「リング」(χ= 2)
6
1 2, 2 3, 3 4, 4 5, 5 6, 6 1
5つの頂点の「リング」(χ= 3)
5
1 2, 2 3, 3 4, 4 5, 5 1
上の写真例(χ= 3)
6
1 2, 2 3, 3 4, 4 5, 5 6, 6 1, 1 3, 2 4, 3 5, 4 6, 5 1, 6 2
上記の7つの頂点の一般化(χ= 4)
7
1 2, 2 3, 3 4, 4 5, 5 6, 6 7, 7 1, 1 3, 2 4, 3 5, 4 6, 5 7, 6 1, 7 2
ピーターセングラフ(χ= 3)
10
1 2, 2 3, 3 4, 4 5, 5 1, 1 6, 2 7, 3 8, 4 9, 5 10, 6 8, 7 9, 8 10, 9 6, 10 7
5つの頂点の完全なグラフと切断された頂点(χ= 5)
6
1 2, 1 3, 1 4, 1 5, 2 3, 2 4, 2 5, 3 4, 3 5, 4 5
8つの頂点の完全なグラフ(χ= 8)
8
1 2, 1 3, 1 4, 1 5, 1 6, 1 7, 1 8, 2 3, 2 4, 2 5, 2 6, 2 7, 2 8, 3 4, 3 5, 3 6, 3 7, 3 8, 4 5, 4 6, 4 7, 4 8, 5 6, 5 7, 5 8, 6 7, 6 8, 7 8
15頂点の三角形格子(χ= 3)
15
1 2, 1 3, 2 3, 2 4, 2 5, 3 5, 3 6, 4 5, 5 6, 4 7, 4 8, 5 8, 5 9, 6 9, 6 10, 7 8, 8 9, 9 10, 7 11, 7 12, 8 12, 8 13, 9 13, 9 14, 10 14, 10 15, 11 12, 12 13, 13 14, 14 15