組合せ最適化問題に対するアルゴリズムの一つに貪欲法というものがあります。貪欲法は処理がシンプルで扱いやすい一方、任意の問題に対しては最適性を保証できません。そのため、最適性を保証できる条件としてマトロイドという構造が研究されています。
本記事ではマトロイドに対する貪欲法がなぜ最適性を保証できるのかを解説するのですが、細かいレベルでの解説ではなく、全体像を伝えることを目標に、次の4つのポイントを解説します:①要素数の局所最大性、②要素数の大域最大性、③要素追加の最早性、④重みの最大性。「マトロイドと貪欲法の関係性がパッとは分からなかったけど、こんな特徴を経由してこんな風に繋がっているのか」ということが伝わりますと幸いです。
本記事の内容は参考文献[1]を参考に勉強したものを筆者が再構成したものです。内容・記号・用語が異なることがありますし、間違いが含まれている可能性があります。ご注意ください。
本記事で扱う記号と用語を定義します。
最適化問題のベースとなる実行可能集合族を定義します。
以下の図に実行可能集合族の例を示します。白色が実行可能集合、灰色が実行不能集合です。(A)(B)はそれぞれ以下の実行可能集合族
実行可能集合族
以下の図に
部分集合内の実行可能集合族
本記事の主役であるマトロイドを定義します。
以下の条件を満たす
(M1)(M2)を独立集合性(仮定1)、(M3)をマトロイド性(仮定2)と呼ぶことにします。
以下の図(再掲)にマトロイドと非マトロイドの例を示します。(A)は条件をすべて満たしていますのでマトロイドです(説明略)。一方で、(B)は
マトロイドと非マトロイド
本記事で扱う最適化問題を定義します。
所与の
重みを非負に制限していることは重みの非負性(仮定3)、目的関数が線形であることは目的関数の線形性(仮定4)と呼ぶことにします。
以下の図に重み最大化問題の例を示します。重み関数は
重み最大化問題
最後に貪欲法を定義します。
2行目で要素を重みの大きい順に並びかえることをアルゴリズムの貪欲性(仮定5)、5-6行目で要素を追加した集合が実行可能であれば要素を追加することをアルゴリズムの即時追加性(仮定6)と呼ぶことにします。
以下の図に貪欲法の挙動例を示します。(A)と(B)のどちらも同じ挙動ですので、(A)だけで説明します。(A)に対して貪欲法は以下のように挙動します。
- ステップ
- ステップ
- ステップ
- ステップ
-
貪欲法
追加で貪欲集合
-
-
-
前記の図の通り、マトロイドではない(B)では最適解と貪欲解が異なっていますが、マトロイドである(A)では最適解と貪欲解が一致しています。これはたまたまではなく、実行可能集合族がマトロイドであれば任意の重み関数で成り立ちます。
実行可能集合がマトロイドであるとき、任意の重み関数に対して、貪欲解は重み最大化問題の最適解である。
それでは本題に入ります。初めて定理1を見たときマトロイドと貪欲法がどこで繋がってくるのかがよく分かりませんでした。それが勉強を進めてみると、以下の4つのポイントを意識するとマトロイドと貪欲法が繋がってくることが分かってきます。まずはそれぞれのポイントを定義します。
所与の
以下の図(再掲)の(B)で例を説明します。図6は
要素数の局所最大性
所与の
以下の図(再掲)の(B)で例を説明します。以下の図は
要素数の大域最大性
所与の
以下の表で例を説明します。以下の表は(A)(B)の実行可能集合族における各要素の追加タイミングを示したものです(縦方向が実行可能集合、横方向がステップ)。
表1:要素追加の最早性
備考 | |||||
---|---|---|---|---|---|
(B)のみ | |||||
所与の
以下の図(再掲)の(B)で例を説明します。すべての実行可能集合の重みを確認すると、その最大値は7です。
重みの最大性
次に、4つのポイントがどのように繋がって、どのように最適性を示せるのかを説明します。(+どの仮定から導かれるのか。)(補題の証明は省略。元気があれば別の記事で。)
結論として、仮定・ポイント・定理は以下の図のように繋がっています。
ポイント同士の繋がり
まず、補題1として、任意のステップの貪欲集合は要素数が局所最大となります。これは仮定1(実行可能集合族の独立集合性)と仮定6(アルゴリズムの即時追加性)から導かれます。
以下の図の(A)で確かめてみます。((B)はマトロイドではありませんが、(M1)(M2)は満たしますので、要素数の局所最大性を満たしています。説明内容は(A)と同じのため省略。)各ステップを確認してみると、
-
-
-
-
であり、確かにすべてのステップで成り立っています。
貪欲集合の要素数の局所最大性
次に、補題2として、任意の部分集合内の実行可能集合は、要素数が局所最大であるとき、要素数は大域最大にもなります。これは仮定4(実行可能集合のマトロイド性)から導かれます。「任意の部分集合内で」という部分が主張を強くしているので注意です。そして、補題2を貪欲集合に適用すると、任意のステップの貪欲集合の要素数は大域最大となります。
以下の図で確かめてみます。(A)の各ステップを確認してみると、
-
-
-
-
であり、確かにすべてのステップで成り立っています。一方で、(B)の各ステップを確認してみると、
-
-
-
-
であり、ステップ2で成り立ちません。((B)は(M3)を満たさないから。)
要素数の局所最大性⇒要素数の大域最大性
マトロイドの定義は要素の追加に関するものですので、補題1,2で要素数の最大性に関する特徴が出てくるのは自然だと思います。ただ、目的関数は重みですから、要素数というのは最適化問題とは直接の関係はありません。ここで、要素数と重みを繋げる役割を持つのが次の補題に出てくる要素追加の最早性です。
補題3として、任意の実行可能集合は、任意のステップで要素数が大域最大であるとき、任意の
以下の図で確かめてみます。(A)の各
-
-
であり、確かに各
-
-
であり、2番目の要素で成り立ちません。((B)は要素数の大域最大性を満たさないから。)
表2:要素数の大域最大性⇒要素追加の最早性
備考 | |||||
---|---|---|---|---|---|
(B)のみ | |||||
補題3はマトロイドや貪欲法の特徴を使っていない点が興味深いなと思いました。要素数の大域最大性の「任意のステップで」という部分が強いことが効いているのではないかと思います。
最後に、補題4として、任意の集合は、任意の
以下の図で確かめてみます。(A)では、重みの最大値6に対して、
要素追加の最早性⇒重みの最大性
アルゴリズムの貪欲性から先頭の要素の方が重みが大きいですので、要素追加のタイミングというのが重みの最大性に繋がっているわけです。
以上を簡潔にまとめると、マトロイドと貪欲法というのは、要素数の局所最大性⇒要素数の大域最大性⇒要素追加の最早性⇒重みの最大性という流れで繋がっています。マトロイドの本質として要素数の最大性に関するポイントが出てくることは当然面白いのですが、要素数と最適化問題(重み)をつなげる役割を持つ要素追加の最早性の方が、私としては惹かれるところがあります。
実は参考文献[1]では要素追加の最早性というポイントは扱っておらず、目的関数の式変形でいつの間にか要素数の最大性が重みの最大性に入れ替わっています。要素追加の最早性はこれが一体どういうことなのか(そのお気持ち)を理解しようとして出てきた概念になります。(一方で間違っている可能性も高いところになります。。)
憧れのマトロイドの理解が深まって嬉しいです。これからもマトロイドの勉強を進めてきます。