はじめに
クラスカル法を知っていますか?私は知ってます。
最小全域木問題の解法として知られるアルゴリズムで、重みの昇順に閉路ができないよう辺を追加していくだけで最小全域木になりますよ~という、貪欲法で最適解が得られる稀有(?)な例です。基本的に、貪欲法は「局所最適解に嵌ってしまう」という弱点があるのですが、クラスカル法は帰納法(wikiのやつ)によって正当性が証明できます。
しかし、貪欲法が使えるかどうかを問題ごとに一々考えるのは大変です。そこで考えられた貪欲法が使える指標の一つが「マトロイド」と呼ばれる構造です。
もし「全域木がマトロイドだからクラスカル法は正しい」と雑に説明できてしまうと、とても楽ですよね。というわけで、これをやります。*1
この記事でやること
- 離散最適化問題において貪欲法が使える「マトロイド」という構造について、クラスカル法の正当性の証明を目標に解説します。
- 記事の前半ではマトロイドの定義と貪欲法との関係とその証明、後半ではクラスカル法にマトロイドを適用する方法の説明となります。これら説明を最短で行うため、具体例をほぼほぼ出さずに定義→命題→証明の流れで突き進みます。
- あくまでもクラスカル法に関する話を目標に定めているため、マトロイドについてのほんの一部分にしか触れておりません(もちろん証明は厳密に書いているつもりです)。ですので、本記事を読んでマトロイドに興味を持たれた方は是非ご自身で色々調べてみることをお勧めします。
注意点
- ちょっぴり線形代数の知識がいります。(線形独立とか次元とかが何かわかっていれば十分のはず…。)
- グラフに単純性を仮定しません。(すなわち、多重辺・自己ループの存在を認めます。)
(前半)マトロイドと貪欲法
マトロイドの定義
【定義 1.1.1】*2
とする。
が次の2条件を満たすとき、はの独立性システムと言う:
さらに、次の条件も満たすとき、 は のマトロイドと言う:
※以下、マトロイドに対しては のかわりに主に を使うこととします。
マトロイドに関する用語
【定義 1.2.1】
とする。
について
【定義 1.2.2】
とする。
について
【定義 1.2.3】
とする。
このとき、
このをの基と呼ぶ。
※【定義 1.2.2】の「基」とは異なる概念であることに注意してください。
存在性は簡単に示せます。
としたときに より であることに注意して、 として の中で最大のものを取ればよいです。
特に、 のとき となります。
【定義 1.2.4】
とする。
関数 を
\begin{align} r(X) := \text{max} \{ |Y| \mathrel{|} Y \subseteq X, Y \in \mathcal{I} \} \end{align}と定め、これを(の)階数関数と呼ぶ。
【命題 1.2.5】*3
について、以下が成立:
直感的に明らかだと思うので、証明略*4
マトロイドと貪欲法
はじめにざっくりと「貪欲法が使える」と述べましたが、これを正しく定式化しておきます。
【定義 1.3.1】
※例えば「01ナップサック問題」や「最大マッチング問題」などは、最大独立集合問題として表現できます。( をうまく定義してあげればよいです。)
【定義 1.3.2】
※「最小全域木問題」は最小基問題として表現できます。
これら問題に対し、貪欲法を疑似コードで表現します。
【定義 1.3.3】
【定義 1.3.4】
※ここで出力される が極大であることは【定義 1.1.1-(Ⅱ)】から示せます。
勿論、これら貪欲法は一般にはうまくいきません。
しかし、ここで以下の定理が成り立ちます。
【定理 1.3.5】
とする。
任意の重み関数 に対し、【定義 1.3.3】の貪欲法が最大独立集合問題の最適解を出力する。
【定理 1.3.6】
とする。
任意の重み関数 に対し、【定義 1.3.4】の貪欲法が最小基問題の最適解を出力する。
※【定理 1.3.6】については、一般に逆が成り立つのか私自身わかっておりません。勉強不足で申し訳ありません…
早速証明していきましょう!
【定理 1.3.5】の証明
- の証明:( を仮定)
【補題 1.4.1】
証明:
であることに注意する。
i:
- を示せば、【命題1.2.5-(ii)】より示される。
- である。
- はアルゴリズム2行目のforループ終了時におけるに等しいため、
- (【定義 1.2.3】)
ii:
- より (【定義 1.1.1-(Ⅱ)】)であるため
\begin{align} |B^*_i| &= r(B^*_i) &\because \text{【命題 1.2.5-(ii)】} \\ &\le r(\{e_1, \dots , e_i \}) &\because \text{【命題 1.2.5-(i)】} \square \end{align}
iii:
- i, ii と【命題 1.2.5-(iii)】より
とすると
\begin{align} \sum_{e \in B} w(e) &= \sum_{i=1}^{n} (|B_i|-|B_{i-1}|)w(e_i) \\ &= \sum_{i=1}^{n} |B_i|w(e_i) - \sum_{i=1}^{n} |B_{i-1}|w(e_i) \\ &= \sum_{i=1}^{n} |B_i|w(e_i) - \sum_{i=0}^{n-1} |B_i|w(e_{i+1}) \\ &= \sum_{i=1}^{n} |B_i|w(e_i) - \sum_{i=1}^{n} |B_i|w(e_{i+1}) \\ &= \sum_{i=1}^{n} |B_i|(w(e_i)-w(e_{i+1})) \\ &\ge \sum_{i=1}^{n} |B^*_i|(w(e_i)-w(e_{i+1})) \tag{※} \\ &= \sum_{i=1}^{n} |B^*_i|w(e_i) - \sum_{i=1}^{n} |B^*_i|w(e_{i+1}) \\ &= \sum_{i=1}^{n} |B^*_i|w(e_i) - \sum_{i=0}^{n-1} |B^*_i|w(e_{i+1}) \\ &= \sum_{i=1}^{n} |B^*_i|w(e_i) - \sum_{i=1}^{n} |B^*_{i-1}|w(e_i) \\ &= \sum_{i=1}^{n} (|B^*_i|-|B^*_{i-1}|)w(e_i) \\ &= \sum_{e \in B^*} w(e) \end{align}
(※)では【補題 1.4.1】と を用いた。
以上より、貪欲法による解は最適解の1つである。
- の証明:(対偶を示す。 を仮定)
- は独立性システムであるため、仮定より【定義 1.1.1-(Ⅲ)】を満たさない、すなわち
- ここで、 とおき、次のように重み関数 を定義:
\begin{align} w(e) := \begin{cases} k+2 & (e \in Y) \\ k+1 & (e \in X \setminus Y) \\ 0 & (\text{otherwise}) \end{cases} \end{align}
-
- を貪欲法による解とすると、
- 貪欲法のアルゴリズムの動作中、まず に を満たす が全て追加される。
- このとき、 に関する条件より を満たす は追加されない。
- その後、いくつかの である が追加される。
- よって、
- 一方、 であって
- を貪欲法による解とすると、
\begin{align} \sum_{e \in X} w(e) &= |X|(k+2) \\ &\ge (|Y|+1)(k+1) \\ &= (k+1)(k+1) \\ &\gt k(k+2) \end{align}
-
- よって、この重み関数 に対して貪欲法は最適解を出力しない
【定理 1.3.6】の証明
- を仮定。
- とおき、関数 を で定める。
【補題 1.4.2】
【補題 1.4.2】
による最小基問題の最適値を 、 による最大独立集合問題の最適値を とし、 の階数関数を とする。このとき、
証明:
\begin{align} x &= \underset{B: E\text{の基}}{\text{min}} \{ \sum_{e \in B}w(e) \} \\ &= \underset{B: E\text{の基}}{\text{min}} \{ \sum_{e \in B}(W-\tilde{w}(e)) \} \\ &= \underset{B: E\text{の基}}{\text{min}} \{ W|B| - \sum_{e \in B}(\tilde{w}(e)) \} \\ &= Wr(E) - \underset{B: E\text{の基}}{\text{max}} \{ \sum_{e \in B}(\tilde{w}(e)) \} \\ &= Wr(E) - \underset{X \in \mathcal{F}}{\text{max}} \{ \sum_{e \in B}(\tilde{w}(e)) \} \\ &= Wr(E)-y \quad \square \end{align}
- に注意すると、 による最小基問題に対しての貪欲法による解 は、 による最大独立集合問題の最適解の1つとなっている。
- すなわち、【補題 1.4.2】において と表せる。
- ここで
\begin{align} \sum_{e \in B}\tilde{w}(e) &= \sum_{e \in B}(W-w(e)) \\ &= Wr(E) - \sum_{e \in B}w(e) \end{align}
- なので、【補題 1.4.2】の にこれを代入すれば
\begin{align} x &= Wr(E)-(Wr(E) - \sum_{e \in B}w(e)) \\ &= \sum_{e \in B}w(e) \end{align}
- したがって、貪欲法による解 は による最小基問題の最適解でもある。
長い証明を経て、ついに前半戦は終了です!
【定義 1.1.1】のたったの3条件から、貪欲法が使えるという凄まじい結論が得られるの、鮮やか過ぎると思いません?私は思いました。
さて、ここからはグラフとマトロイドの関係に迫る後半戦です。
(後半)マトロイドのクラスカル法への適用
ベクトルマトロイド
非常に重要なマトロイドです。グラフとマトロイドを繋ぐ要となります。
【命題 2.1.1】
とする。
の部分集合族 を次で定義する:
このとき はマトロイドであり、ベクトルマトロイドと呼ぶ。
証明:
- マトロイドの3条件を確認する。
- ok
- とし、 を示す。
- とし、 とおく。
\begin{align} \sum_{j=1}^{l} \lambda_{i_j} \boldsymbol{a}_{i_j} = \boldsymbol{0} &\Rightarrow \sum_{j=1}^{l} \lambda_{i_j} \boldsymbol{a}_{i_j} + \sum_{i \in \Delta } 0 \cdot \boldsymbol{a}_i = \boldsymbol{0} \\ &\Rightarrow \sum_{i=1}^{k} \lambda_i \boldsymbol{a}_i = \boldsymbol{0} \quad (\lambda_i := 0 \text{ for } i \in \Delta ) \\ &\Rightarrow \lambda_i = 0 \quad \text{for } i \in \{1, \dots, k\} (\because X: \text{線形独立}) \\ &\Rightarrow \lambda_{i_j} = 0 \quad \text{for } j \in \{1, \dots, l\} \end{align}
\begin{align} |Y| &= \text{dim} \langle Y \rangle \\ &\le \text{dim} \langle Y \cup \{ x \} \rangle &\because 【補 題\text{-(ii)}】 \\ &\lt | Y \cup \{ x \} | &\because 【補 題\text{-(i)}】\\ &= |Y|+1 \end{align}
\begin{align} \text{dim} \langle Y \cup X \rangle &= \text{dim} \langle Y \rangle \\ &= |Y|\end{align}
-
-
- 一方、【補題-(ii)】
- となり に矛盾
- ok
-
グラフのマトロイド
【定義 2.2.1】
とする。
各 に対し、 次元列ベクトル の第 成分 を次で定める:
\begin{align} B(G)_{ve} := \begin{cases} 0 &\text{if } v \notin e \\ 1 &\text{else if } v \in e \text{かつ} e \neq \{v, v\} \\ 2 &\text{otherwise} \end{cases} \end{align}
この列ベクトルを横に並べた 行列 を、 の接続行列という。
特に、 の 行目の総和は の次数を表します。(重要)
【定義 2.2.2】
とする。
を次で定める:
\begin{align} \mathrel{I} := \{X \subseteq E(G) \mathrel{|} \{ &B(G)_e \mathrel{|} e \in X\} が \\ &\mathbb{Z}_2 上の |V(G)| 次元ベクトル空間において線形独立 \} \end{align}このとき、 は のマトロイドであり、Gの閉路マトロイドと呼ぶ。
これがマトロイドであることは、【命題 2.1.1】より明らかです。ありがとうベクトルマトロイド…!!
【命題 2.2.3】
とする。このとき
※ は による の誘導部分グラフを表します。*6
証明:
- の証明:(対偶を示す。 について、 と仮定)
- 閉路に含まれる辺集合を とおくと *7
- よって、以下のように の非自明解 が得られる: \begin{align} \lambda_e := \begin{cases} 1 & (\text{if } e \in C) \\ 0 & (\text{otherwise}) \end{cases} \end{align}
-
- の証明:(対偶を示す。 と仮定。)
-
- なら、明らかに は森でない。以下、 とする。
- を の非自明解とし、 とする。()
- このとき、 は閉路を持つ。
-
-
- より、各 について の における次数は偶数であり、 に誘導されていることに注意すると次数は2以上であるとわかる。
- ここで、 で最大のパス とその端点の1つ をとれば、 の次数が2以上であることから であり、この が の持つ閉路である。
- したがって、 は閉路を持つため、 は森でない。
-
この命題から、森の辺集合全体は閉路マトロイドであることが得られます。また、閉路の辺集合は閉路マトロイドに対するサーキットであることもわかります。
特に、グラフが連結だとすると極大な森は全域木です。つまり、全域木は閉路マトロイドの基に対応します。
以上により、【定理 1.3.6】と合わせることでついに結論が得られます!
【定理 2.3.1】
ちなみにおまけとして、【定理 1.3.5】と合わせれば最大全域木問題も貪欲法で解けるという結論が得られます。知っていましたか?
おわりに
最後まで読んでいただいた方、お疲れさまでした!
本当は具体例を書いて定義の理解が正しいかなどを細かく確かめられるようにした方が絶対いいと思うのですが、めんどくさかったのでサボりました。気が向いたら追記するかもしれません。
参考文献
離散最適化基礎論 (2015年度後学期) 組合せ最適化におけるマトロイドの役割
組合せ最適化 理論とアルゴリズム 第6版(B. コルテ, J. フィーゲン)
*1:ちなみに、この説明は雑過ぎて不正確です。
*2:マトロイドには複数の同値な定義があり、マトロイドの公理系と呼ばれています。特に、ここに書いた定義は「独立集合による定義」になります。他には「サーキットによる定義」、「階数関数による定義」など、色々あるようです。
*3:マトロイドの公理系の観点から、本来は 劣モジュラ性などの性質=階数関数による定義 が成立することを示しておくべきなのですが、クラスカル法の正当性の証明には使わないため省いております。
*4:の基をとして包含関係を見れば示せます。
*5:私の手元にある教科書では、入門線形代数-三宅敏恒 の 定理4.4.4 から得られます。
*6:「誘導部分グラフ」は通常頂点集合により誘導することがほとんどですが、ここでは辺集合で誘導しています。
*7: の場合も、法2で考えると です。