解説
pi,qi をそれぞれ (L1,L2,…,Li),(Ri,Ri+1,…,RN) の最小値をとる添字のうち最小のものとする。
1≤i<N に対して、次の 3 つの辺を考える。
- 頂点 pi と頂点 i+1 を結ぶ辺
- 頂点 i と頂点 qi+1 を結ぶ辺
- 頂点 pi と頂点 qi+1 を結ぶ辺
これら 3(N−1) 本の辺を 良い辺 とする。 良い辺 のみを用いて最小全域木が必ず存在することを示す。
頂点 i と頂点 j を結ぶ辺を考える。ただし (i<j) とする。
i≤k<j を満たす任意の t について
Lpk≤Li, Rqk+1≤Rj
であるので頂点 pk と頂点 qk+1 を結ぶ辺の重みは Li+Rj 以下である。
また、pk=pk+1 かつ qk=qk+1 のとき、pk+1=qk+1=k+1 であるので、頂点 pk と頂点 qk+1 を結ぶ辺と、頂点 pk+1 と頂点 qk+2 を結ぶ辺は必ず端点を共有する。
すなわち、頂点 i,j (i<j) において、重み Li+Rj 以下の 良い辺 のみからなる長さ 2 以上のパスが存在する。
良い辺 以外の辺 (x,y) を含む最小全域木 T があると仮定する。 T から辺 (x,y) を削除するとグラフ 2 つの連結成分 S1,S2 に分かれる。 重み Li+Rj 以下の 良い辺 であって S1,S2 を連結にするようなものは必ず存在するので、これを追加することで再び最小全域木を構成できる。この操作を繰り返すことで、 良い辺 のみからなる最小全域木が必ず存在することが示された。
よって、3(N−1)=O(N) 本の辺を用いてクラスカル法などで最小全域木を求めることで、 O(NlogN) でこの問題を解くことができた。