ICPCアジア地区横浜大会2018 H問題 : Four-Coloring

問題. Four-Coloring

無向グラフ  G = (V, E) の平面描画が与えられる.頂点  v の座標を  (x_v, y_v) としたとき,各辺  \{u, v\} に対して  x_u = x_v y_u = y_v または  |x_u - x_v| = |y_u - y_v| が成立つ.このとき,  G の4彩色を求めよ.
制約 3 \le |V|, |E| \le 10,000,  0 \le x_v, y_v \le 1,000(整数座標)

解法

解法は「四色定理の紹介と五色定理の証明 | 高校数学の美しい物語」です...

上のサイトでは平面的グラフが5彩色可能であることを示しています.そこでの証明のポイントは次数が5以下の頂点が存在することでした(平面的グラフの辺数は少ない  |E| \le 3|V| - 6).今回の問題では次数が4以下の頂点が必ず存在するので,上のサイトの証明と同様にして  G が4彩色可能であることが示せます.また,この帰納法による証明をアルゴリズムとして見ることで4彩色を求めることができます.

具体的には,まだ塗られていない頂点の中で一番上にあり,その中で最も左にあるものに着目します.この頂点を  v とします.このとき, v に隣接しており,かつ,既に塗られている頂点数は高々4となります.それらの頂点が3色以下で塗られているときは,余った色で  v を塗ります.それ以外のときは,全て異なる色で塗られており4色すべて使われているので考える必要があります.
下の図のように, v に隣接している頂点を  v_1, v_2, v_3, v_4 として,それぞれが色  c_1, c_2, c_3, c_4 で塗られているとします.初めに, v_1 から  c_1, c_3 で塗られている頂点だけを使用して到達可能な頂点部分集合  V_1 を求めます.このとき, v_3 \notin V_1 ならば, V_1 の頂点の色を  c_1, c_3 で反転させることによって  v c_1 で塗ることができます. v_3 \in V_1 のときは,同様に  v_2 から  c_2, c_4 で塗られている頂点だけを使用して到達可能な頂点部分集合  V_2 を調べます. v_4 \notin V_2 ならば  V_2 の頂点の色を  c_2, c_4 で反転させることによって  v c_2 で塗ることができます.それ以外のとき,すなわち  v_3 \in V_1 かつ  v_4 \in V_2 のときは  G が平面的グラフであることから起こりえません.したがって,この操作をまだ塗られていない頂点が存在するまで繰り返すと4彩色を求めることができます.
  
          f:id:tatanaideyo:20190101075310p:plain:w350

計算時間 O(|V|^2)

まとめ

好きな問題です.問題考えた人すごいな.