1 独立集合系と重み
定義 1.1. 有限集合EとI⊆2Eの組(E,I)が有限独立集合系 (finite independence system) であるとは、次の二条件を満たすことをいう。
- (I1)∅∈I。
- (I2)A∈IかつB⊆AならばB∈I。
有限独立集合系においても、包含に関して極大なIの元を基底 (basis) とよぶ。
有限独立集合系とは、§E13.15 定義 1.1の三条件のうち増大公理§E13.15 定義 1.1 条件 (c)を要求しないものである。したがってマトロイドはつねに有限独立集合系である。一般の有限独立集合系では、基底の濃度は一つに定まらない。濃度が一つに定まることは§E13.15 命題 2.3が保証する性質であり、そこでは増大公理を用いている。
定義 1.2. 有限集合E上の関数w:E→[0,∞)を非負重み (nonnegative weight) という。A⊆Eに対しw(A)=∑x∈Aw(x)をAの重み (weight) という。空集合の重みは0と定める。
2 貪欲アルゴリズム
定義 2.1. 有限独立集合系(E,I)と非負重みw:E→[0,∞)を入力とする。n=∣E∣と置き、Eの元の並べ方e1,e2,…,enであってw(e1)≥w(e2)≥⋯≥w(en)を満たすものを一つ選ぶ。同じ重みをもつ元の間の順序は任意であり、この選び方を処理順 (processing order) という。次の手続きを貪欲アルゴリズム (greedy algorithm) という。
I0←∅;i←1;while i≤n do ( Ii←Ii−1∪{ei} (Ii−1∪{ei}∈I のとき),Ii←Ii−1 (それ以外);i←i+1 );return In.
出力Inを、この処理順に対する貪欲解 (greedy solution) という。独立性の判定Ii−1∪{ei}∈Iは一回の基本操作として数える。
命題 2.2.定義 2.1の貪欲アルゴリズムは、任意の有限独立集合系と任意の非負重みに対して有限回の反復で停止し、出力Inは(E,I)の基底である。
証明. 停止性. 変量V=n+1−iを取る。i≤nのとき本体を実行するとiが1増えるからVは狭義に減少し、i≤nのあいだV≥1≥0である。§D2.8 命題 1.4より手続きは有限回で停止し、停止時にはi=n+1である。
不変条件. 述語Pを「Ii∈Iが成り立つ」と定める。初期化ではI0=∅であり定義 1.1 条件 (a)よりPが成り立つ。維持では、Ii=Ii−1∪{ei}と更新する場合は条件Ii−1∪{ei}∈Iが成り立つときに限られ、Ii=Ii−1と更新する場合は帰納法の仮定からIi∈Iが従う。ゆえにPは§D2.8 定義 1.1の意味でのループ不変条件であり、§D2.8 定理 1.2より停止時にIn∈Iが成り立つ。
極大性.Inが包含に関して極大でないと仮定する。x∈E∖Inが存在してIn∪{x}∈Iとなる。x=eiと書く。手続きはI0⊆I1⊆⋯⊆Inを満たすからIi−1⊆Inであり、Ii−1∪{ei}⊆In∪{x}∈Iであるから定義 1.1 条件 (b)よりIi−1∪{ei}∈Iである。ゆえに第i反復でeiが採用されei∈Ii⊆Inとなるが、x=ei∈/Inに反する。ゆえにInは極大であり、基底である。▨
3 貪欲アルゴリズムの最適性
3.1 証明方針
貪欲解Gの元を採用した順にg1,g2,…,grと並べる。処理順が重みについて単調非増加であるから、この並びも重みについて単調非増加である。比較の相手となる独立集合Aの元も重みの降順にa1,…,asと並べる。
示すべき中間目標は、各添字jについてw(gj)≥w(aj)が成り立つことである。これが得られれば、s≤rと重みの非負性からw(A)≤w(G)が従う。
中間目標は背理法で示す。w(gj)<w(aj)を満たすjが存在したとする。貪欲解の最初のj−1個からなる集合{g1,…,gj−1}と、Aの最初のj個からなる集合{a1,…,aj}は、いずれも独立であり濃度がj−1とjである。ここで増大公理§E13.15 定義 1.1 条件 (c)を適用すると、後者の元xであって前者に加えても独立性が保たれるものが得られる。このxの重みはw(aj)以上であるからw(gj)より真に大きく、したがってxは処理順でgjより前に現れる。xを走査した時点での部分解は{g1,…,gj−1}に含まれるので、遺伝性によりxは採用されていたはずである。ところがxは{g1,…,gj−1}に属さないので矛盾する。増大公理を適用する位置と、重みの大小から処理順の前後を導く位置が、この証明の二つの要点である。
補題 3.1.M=(E,I)をマトロイド、w:E→[0,∞)を定義 1.2の意味の非負重みとし、処理順を一つ固定する。貪欲解Gの元を採用した順にg1,…,grと書く。A∈Iを任意に取り、その元を重みの降順にa1,…,asと並べる。このときs≤rであり、1≤j≤sを満たす任意のjに対しw(gj)≥w(aj)が成り立つ。
証明. まずw(g1)≥w(g2)≥⋯≥w(gr)が成り立つ。実際、gjは処理順における添字がgj+1より小さい位置で採用されるから、処理順の重みが単調非増加であることよりw(gj)≥w(gj+1)である。
s≤rを示す。命題 2.2よりGは基底であり、§E13.15 系 2.4より任意の独立集合の濃度は基底の濃度以下であるからs=∣A∣≤∣G∣=rである。
w(gj)<w(aj)を満たすj∈{1,…,s}が存在したとする。P={g1,…,gj−1}、Q={a1,…,aj}と置く。P⊆G∈IかつQ⊆A∈Iであるから、定義 1.1 条件 (b)よりP,Q∈Iであり、∣P∣=j−1<j=∣Q∣である。
§E13.15 定義 1.1 条件 (c)よりx∈Q∖Pが存在してP∪{x}∈Iとなる。x∈Qでありa1,…,ajは重みの降順に並んでいるからw(x)≥w(aj)>w(gj)である。
処理順をe1,…,enと書き、x=ep、gj=eqとする。w(ep)>w(eq)であり処理順の重みは単調非増加であるからp<qである。第p反復の直前の部分解をIp−1と書くと、Ip−1は第p反復より前に採用された元だけからなり、p<qであるから、それらはすべて第q反復より前に採用された元である。貪欲解の元を採用順に並べた列がg1,…,grでありgj=eqであるから、第q反復より前に採用された元はg1,…,gj−1に限られる。ゆえにIp−1⊆Pである。
したがってIp−1∪{x}⊆P∪{x}∈Iであり、定義 1.1 条件 (b)よりIp−1∪{x}∈Iである。ゆえに第p反復でxが採用され、p<qであるからx∈{g1,…,gj−1}=Pとなる。これはx∈Q∖Pに反する。
ゆえにすべてのj∈{1,…,s}についてw(gj)≥w(aj)が成り立つ。▨
定理 3.2.M=(E,I)をマトロイド、w:E→[0,∞)を非負重みとし、処理順を任意に固定する。このとき貪欲解Gは基底であり、任意のA∈Iに対しw(A)≤w(G)が成り立つ。とくにGは重みが最大の基底である。
証明.Gが基底であることは命題 2.2による。
A∈Iを取り、補題 3.1の記号を用いる。s≤rかつw(gj)≥w(aj)(1≤j≤s)であるからw(A)=∑j=1sw(aj)≤∑j=1sw(gj)≤∑j=1rw(gj)=w(G)が成り立つ。二つ目の不等号では、j>sに対する項w(gj)が非負であることを用いた。
基底も独立集合であるから、Gは重みが最大の基底である。▨
命題 3.3.n=∣E∣とする。定義 2.1の貪欲アルゴリズムのループはちょうどn回反復し、独立性の判定をちょうどn回行う。したがって独立性の判定を一回の基本操作として数えると、このアルゴリズムの時間計算量は§D2.8 定義 2.2の意味でO(n)である。
証明.命題 2.2の停止性の議論のとおり、変数iは1から始まり各反復で1ずつ増え、i=n+1となった時点で停止する。ゆえに本体が実行される回数はnである。各反復では独立性の判定Ii−1∪{ei}∈Iをちょうど一回行うから、判定の総数はnである。
判定の回数を基本操作の回数とすると、実行回数は定数c=1とn0=0についてn≤c⋅nを満たすから、§D2.8 定義 2.2よりO(n)である。▨
処理順を得るためにはEの元を重みについて単調非増加に並べる必要があり、その費用は整列の費用である。整列の計算量は先行記事の主題であって本記事の主張には含まれない。命題 3.3は、処理順が与えられた後の反復だけを対象とする評価である。
4 貪欲アルゴリズムの正当性によるマトロイドの特徴づけ
逆向きの主張を述べる。ここで仮定するのは、すべての非負重みと、同順位の任意の処理順に対して貪欲アルゴリズムが正しい答えを出すことである。二つの量化のいずれを落としても、主張は成り立たなくなる。
定理 4.1.(E,I)を定義 1.1の意味の有限独立集合系とする。次の二条件は同値である。
- (E,I)はマトロイドである。
- 任意の非負重みw:E→[0,∞)と、wに対する任意の処理順について、貪欲解Gがw(A)≤w(G)をすべてのA∈Iについて満たす。
証明.(1)⇒(2)を示す。定理 3.2そのものである。
(2)⇒(1)を示す。(E,I)は定義 1.1 条件 (a)と定義 1.1 条件 (b)を満たすから、§E13.15 定義 1.1 条件 (c)を示せばよい。
§E13.15 定義 1.1 条件 (c)が成り立たないと仮定する。A,B∈I、∣A∣<∣B∣であって、すべてのx∈B∖AについてA∪{x}∈/Iを満たすものが存在する。a=∣A∣、b=∣B∣、k=∣A∩B∣と置く。a<bよりa+1≤bであり、A∩B⊆Aよりk≤aである。
ε=a+11と置き、非負重みwをw(x)=⎩⎨⎧1+ε10(x∈A)(x∈B∖A)(x∈E∖(A∪B))と定める。ε>0であるからwの値は非負であり、重みの大きさはAの元、B∖Aの元、それ以外の元の順に並ぶ。
処理順として、Aの元をすべて先に並べ、次にB∖Aの元を並べ、最後にE∖(A∪B)の元を並べたものを取る。この並びは重みについて単調非増加であるから定義 2.1の処理順の条件を満たす。
この処理順に対する貪欲解Gを調べる。まずAの元を走査する段では、走査した時点の部分解をIと書くとI⊆Aであり、次の元x∈AについてI∪{x}⊆A∈Iであるから定義 1.1 条件 (b)よりI∪{x}∈Iであってxは採用される。ゆえにAの走査が終わった時点の部分解はAである。
次にB∖Aの元xを走査する。この段の部分解はつねにAである。実際、仮定よりすべてのx∈B∖AについてA∪{x}∈/Iであるから、どの元も採用されない。
最後にE∖(A∪B)の元が走査されるが、これらの重みは0である。したがってG⊇AかつG∩(B∖A)=∅であり、w(G)=w(A)+0=a(1+ε)=a+aεである。
一方B∈Iであり、BはA∩Bの元をk個、B∖Aの元をb−k個含むからw(B)=k(1+ε)+(b−k)⋅1=b+kε≥b≥a+1である。aε=a+1a<1であるからw(G)=a+aε<a+1≤w(B)となり、w(B)>w(G)である。これは(2)に反する。
ゆえに§E13.15 定義 1.1 条件 (c)が成り立ち、(E,I)はマトロイドである。▨
5 具体例
例 5.1 (一様マトロイドとグラフ的マトロイドにおける貪欲解). 一様マトロイド.U2,4の台集合をE={1,2,3,4}とし、w(1)=5、w(2)=5、w(3)=2、w(4)=0とする。処理順を1,2,3,4とすると、貪欲アルゴリズムは1を採用し、2を採用し({1,2}は二元集合であるから独立)、3については{1,2,3}が三元集合であるから採用せず、4についても同様に採用しない。出力は{1,2}であり重みは10である。U2,4の基底は二元集合であり、二つの元の重みの和が最大になるのは重み5の二元を選ぶときであるから、10が最大値である。処理順を2,1,3,4に取り替えても出力は{1,2}である。
グラフ的マトロイド. 頂点1,2,3,4と六本の辺a={1,2},b={1,3},c={1,4},d={2,3},e={2,4},f={3,4}からなる完全グラフK4を取り、重みをw(a)=4、w(b)=2、w(c)=5、w(d)=3、w(e)=1、w(f)=6とする。処理順はf,c,a,d,b,eである。
- f={3,4}を採用する。部分解は{f}であり、(V,{f})は閉路をもたない。
- c={1,4}を採用する。{f,c}は頂点列3,4,1の道であり閉路をもたない。
- a={1,2}を採用する。{f,c,a}は頂点列3,4,1,2の道であり閉路をもたない。三辺であるから全域木である。
- d={2,3}は採用しない。{f,c,a,d}は頂点列2,3,4,1,2の長さ4の閉路を含む。
- b={1,3}は採用しない。{f,c,b}は頂点列1,3,4,1の三角形を含む。
- e={2,4}は採用しない。{c,a,e}は頂点列2,4,1,2の三角形を含む。
出力は{f,c,a}であり重みは6+5+4=15である。§E13.15 命題 6.3より基底は全域木の辺集合であって濃度は∣V∣−1=3であるから、どの基底の重みも三つの辺の重みの和である。六本の辺の重みのうち大きい三つは6,5,4であるから、どの基底の重みも15以下である。ゆえに15が最大値であり、貪欲解は重み最大の基底である。
例 5.2 (増大公理を満たさない系では貪欲アルゴリズムが誤る).E={1,2,3}としI={∅, {1}, {2}, {3}, {1,2}}と置く。∅∈Iであり、Iの元の部分集合はすべてIに属するから、(E,I)は有限独立集合系である。A={3}、B={1,2}とすると∣A∣=1<2=∣B∣であるが、{3,1}も{3,2}もIに属さないので§E13.15 定義 1.1 条件 (c)は成り立たない。
w(3)=2、w(1)=w(2)=23と定める。重みはすべて相異なるわけではないが、w(3)が単独で最大であるから、どの処理順でも最初に走査されるのは3である。貪欲アルゴリズムは3を採用し、続く1と2については{3,1}∈/I、{3,2}∈/Iであるから採用しない。出力は{3}であり重みは2である。一方{1,2}∈Iの重みは3であるから、貪欲解は重み最大ではない。
定理 4.1の証明が構成する重みを、この例について計算すると次のようになる。a=∣A∣=1であるからε=21であり、w(3)=23、w(1)=w(2)=1、k=∣A∩B∣=0である。Aを先に走査する処理順に対する貪欲解は{3}で重みは23であり、w(B)=2>23である。
6 演習
問題 6.1.
- 命題 2.2の極大性の証明で、Ii−1⊆Inという包含を用いた。この包含が成り立つ理由を、手続きの更新規則から書き下せ。
- 補題 3.1の証明のうち、w(x)>w(gj)から処理順におけるxの位置がgjの位置より前であることを導く段を、参照せずに再現せよ。処理順が重みについて単調非増加であることをどこで用いたかを明示せよ。
- 補題 3.1の証明で、増大公理を適用する独立集合の対を({g1,…,gj−1}, {a1,…,aj})に取った。この対を({g1,…,gj}, {a1,…,aj})に取ると証明が成立しない理由を、濃度の条件に即して述べよ。
- 定理 3.2の最後の評価で用いた重みの非負性を落とすと、貪欲解が重み最大の独立集合であるという結論が成り立たなくなる例を、U1,2に負の重みを与えて構成せよ。
- 定理 4.1 (2)から (1) の証明で構成した重みwについて、εをa+11ではなく1に取ると証明が破綻することを、w(G)とw(B)の比較によって確かめよ。破綻しないεの範囲を求めよ。
- 定理 4.1 (2)から (1) の証明を、B∖Aの元の重みを1ではなく1−δ(δ>0)に取り替え、重みがすべて相異なるように設計し直せ。δに課すべき条件を書き下せ。
- 例 5.1のグラフの例で、重みw(f)を6から1へ変更したときの貪欲解を、処理順を明示して求めよ。得られた解が重み最大の全域木であることを、三辺の重みの和の最大値と比較して確かめよ。
8 扱った範囲と次の記事
本記事は、有限独立集合系と非負重みに対する貪欲アルゴリズムを定め、停止性と、出力が基底であることをループ不変条件の枠組みで証明した。マトロイドについては、貪欲解が独立集合全体の中で重み最大であることを、各順位での重みの比較によって証明した。逆に、すべての非負重みとすべての同順位の処理順に対して貪欲解が重み最大である有限独立集合系は増大公理を満たすことを、増大公理の反例から重みを構成して証明した。二つのマトロイドに共通の独立集合を求める問題、重み付きの共通独立集合、および劣モジュラ関数の最大化に対する近似保証は扱っていない。次の記事では、有限有向非巡回グラフとして表される状態と遷移から漸化式を定め、位相順序による評価が各状態の値を正しく与えることを証明する。