同一の直線は最初に除いておく。以下、本の直線は相異なるとする。
平面走査的に考えてみる。つまり、十分に大きな正数について軸に平行な直線を用意して、この直線を下に移動しながら領域の数を数える。と平行な直線はないとしてよい。[1] 最初に直線は本の直線と交わっていて、これらに区切られた個の領域にまたがっている。を下に移動していくとき、が新たな領域に出会うのは直線の交点に一致した瞬間である。このとき、交点を通る直線が2本なら領域が1つ増え、3本なら2つ増え、一般に本の直線の交点では本増えている。
以上の観察より、単にから順に直線を追加していき、新しい直線を追加するたびにこれまで追加した各直線と交わる点を(平行でなければ)検出し、同じ交点を検出した回数を数えていけばよい。
本の直線を処理したあと、ある交点をちょうど本の直線が通ったなら、は回数えられ、本なら回数えられる。一般に、本の直線の交点は回数えられていて、そこで増えた領域は個になっている。二次方程式を解くと、点が回数えられたならそこで増えた領域は個である。計算量は。
あったら、全体を適当に回転させたものを考えればよい。 ↩︎