Joeの精進記録

旧:競プロ練習記録

A simple max-cut algorithm for planar graphs

e-archive.informatik.uni-koeln.de

を読んだ。

https://icpc-girigiri.slack.com/archives/GJM417MNV/p1566016527000100

にファイルがある。

概要

平面グラフのmax-cutをmaximum weighted matchingに帰着させて解いている。平面グラフのmaximum weighted matchingが O(n^{1.5}\log n)で解けることからmax-cutもこの計算量で解ける。

アルゴリズム

  1. 連結な単純グラフ Gが入力として与えられたとき、まず Gの双対グラフ G_Dをとる。双対グラフの辺のコストは、その辺が横切る元のグラフの辺のコストと同じにする。 G_Dの次数5以上の頂点を分割し、分割した頂点同士をコスト0の辺でつなぐ。さらに、 G_Dの各頂点を K_4に置き換えたグラフを考える。 K_4内部の辺の重みは0.

  2. 以上のグラフでmaximum weighted matchingを考える。必ずperfect matchingが存在することが示せ、このとき、各 K_4に着目すると必ず K_4から外に出る辺は偶数本になっていることがわかり、perfect matchingはEulerianになることがわかる。

  3. 双対グラフでのEulerian subgraphと元のグラフのカットには1対1対応があり、この最大重みeulerian subgraphが元のグラフでの最大cutになっている。

計算量

平面グラフを三角形分割したものを考えると、辺の数や面の数が超点数のオーダーで抑えられる。そうすると面の数も頂点数オーダーになる。双対グラフの頂点数、辺数も従って元のグラフの頂点数オーダーで、 K_4をとってもオーダーは不変。あとはmaximum weighted matchingだが、これはTarjanによると O(n^{1.5} \log n)