2010-11-29 1 views
0

無向グラフを2色のみで色付けできるかどうかについてのヒントはありますか? これをJavaでどのように実装できますか?無向グラフを2色のみで色付けできるかどうかを調べる

+1

制約がありますか?色1のn/2ノードと色2のn/2ノードの色付け) – Enrique

+1

あなたに役立つかもしれない同様の質問が見つかりました。http://stackoverflow.com/questions/1838934/checking-for-odd-cycles-in無向グラフ –

+0

私に混乱を与えているのは、2色を使って無向グラフを描くことが可能かどうかを証明しようとしているという事実です。 – rdplt

答えて

6

breadth-first searchをグラフ上に表示します。すべての偶数の深さでノードを1色、たとえば赤色に、奇数深度にノードの色を青色にします。ツリー以外のエッジ(2つのノード間のエッジ)を使用するたびに、色が異なることを確認します。グラフに複数のコンポーネントが接続されている場合は、各コンポーネントの検索を繰り返すだけです。

1

グラフが2部構成であるかどうかを判断するのと同じです。これを行うには、奇数長のサイクルがグラフに存在するかどうかをチェックする必要があります。そのために、グラフの幅優先探索を行います。 BFS内のどのレベルでも、同じレベルのノード間にエッジがある場合、グラフは二部構成ではなく、つまり、2つの色のみを使用して色付けすることはできません。 (隣接ノードが異なる色でなければならないという制約があると仮定して)

関連する問題