この記事は数理最適化 Advent Calendar 2024 の25日目の記事です.
はじめに
線形計画問題をはじめとする制約付き最適化問題には相補性 (complementarity) とよばれる性質があります.相補性は解の最適性条件を与えるものですが,実は主双対の枠組みを通して最適解「全体」を捉えることができるという非常に強力な帰結が存在します.本記事では,線形計画問題における相補性定理の説明とそれを用いて最適解全体を捉える方法,また組合せ最適化での例を紹介します.
準備
線形計画問題
目的関数も制約もどちらも線形であるような最適化問題を線形計画問題 (linear programming; LP) とよびます.とくに,m m m 次元ベクトル b ∈ R m b \in \mathbb{R}^m b ∈ R m ,n n n 次元ベクトル c ∈ R n c \in \mathbb{R}^n c ∈ R n ,m × n m \times n m × n 行列 A ∈ R m × n A \in \mathbb{R}^{m \times n} A ∈ R m × n によって定まる,x ∈ R n x \in \R^n x ∈ R n を変数とする以下の形式の問題 (P)
maximize c ⊤ x subject to A x ≤ b , x ≥ 0 (P) \tag{P}
\begin{array}{ll}
\text{maximize} & c^\top x \\
\text{subject to} & Ax \le b, \\
& x \ge 0
\end{array}
maximize subject to c ⊤ x A x ≤ b , x ≥ 0 ( P )
を不等式標準形 (standard inequality form) とよびます.ここで c ⊤ c^\top c ⊤ は c c c の転置です.また,ベクトル u , v ∈ R d u,v \in \mathbb{R}^d u , v ∈ R d に対する不等式 u ≤ v u \le v u ≤ v は,すべての i = 1 , … , d i = 1, \dotsc, d i = 1 , … , d について u i ≤ v i u_i \le v_i u i ≤ v i であるという条件を意味すると約束します.解 x ∈ R n x \in \R^n x ∈ R n は問題 (P) の制約を満たすときに実行可能 (feasible),そうでないときに実行不可能 (infeasible) であるといわれます.また,実行可能解がある(ない)ときに問題 (P) そのものを実行(不)可能といいます.実行可能解であって最大を達成するものを最適 (optimal) とよびます.実行可能解全体を実行可能領域 (feasible region) とよびます.LPの実行可能領域は各制約が表す半空間の共通部分として得られる多面体となります.
不等式標準形は以下で説明する双対問題も対称的な形式を持ち,またすべてのLPは適切に変数を導入したりすることで不等式標準形に変形することができるので,本稿では不等式標準形のLPを考えます.
なお,線形計画問題は楕円体法や内点法などの手法により多項式時間で解く(最適解を得る)ことができます.最も有名なのは単体法(シンプレックス法)かと思いますが,残念ながら単体法は多項式時間アルゴリズムではありません.
双対性
双対性 (duality) は線形計画理論の一丁目一番地です.天下り的ですが,y ∈ R m y \in \R^m y ∈ R m を変数とする以下のLP
minimize y ⊤ b subject to y ⊤ A ≥ c ⊤ , y ≥ 0 (D) \tag{D}
\begin{array}{ll}
\text{minimize} & y^\top b \\
\text{subject to} & y^\top A \ge c^\top, \\
& y \ge 0
\end{array}
minimize subject to y ⊤ b y ⊤ A ≥ c ⊤ , y ≥ 0 ( D )
を問題 (P) の双対問題 (dual problem) とよびます.最大化と最小化が入れ替わっていることに注意してください.双対問題 (D) に対して,(P) を (D) の主問題 (primal problem) とよびます.
O P T ( P ) \mathrm{OPT}(\mathrm{P}) OPT ( P ) と O P T ( D ) \mathrm{OPT}(\mathrm{D}) OPT ( D ) をそれぞれ主・双対問題の最適値と定義します.これらの量の間には以下の二種類の定理が成立します.
!
弱双対定理 (weak duality theorem): O P T ( P ) ≤ O P T ( D ) \mathrm{OPT}(\mathrm{P}) \le \mathrm{OPT}(\mathrm{D}) OPT ( P ) ≤ OPT ( D ) .
強双対定理 (strong duality theorem): O P T ( P ) = O P T ( D ) \mathrm{OPT}(\mathrm{P}) = \mathrm{OPT}(\mathrm{D}) OPT ( P ) = OPT ( D ) .
弱双対定理は以下のように簡単に示すことができます.主問題と双対問題のどちらかが実行不可能のときは自明です.x ∈ R n x \in \R^n x ∈ R n ,y ∈ R m y \in \R^m y ∈ R m をそれぞれ主・双対問題の任意の実行可能解としたときに,
y ⊤ A ≥ c ⊤ y^\top A \ge c^\top y ⊤ A ≥ c ⊤ かつ x ≥ 0 x \ge 0 x ≥ 0 より c ⊤ x ≤ y ⊤ A x c^\top x \le y^\top A x c ⊤ x ≤ y ⊤ A x
A x ≤ b Ax \le b A x ≤ b かつ y ≥ 0 y \ge 0 y ≥ 0 より y ⊤ A x ≤ y ⊤ b y^\top A x \le y^\top b y ⊤ A x ≤ y ⊤ b
より,
O P T ( P ) ≤ c ⊤ x ≤ y ⊤ A x ≤ y ⊤ b ≤ O P T ( D ) (1) \tag{1}
\mathrm{OPT}(\mathrm{P}) \le c^\top x \le y^\top A x \le y^\top b \le \mathrm{OPT}(\mathrm{D})
OPT ( P ) ≤ c ⊤ x ≤ y ⊤ A x ≤ y ⊤ b ≤ OPT ( D ) ( 1 )
となります.一方,強双対定理を示すには非自明な議論が必要となりますので,この記事では認めることとします.
相補性
いよいよ本記事の主題である相補性について説明します.x x x と y y y をそれぞれ主・双対問題の実行可能解とします.もし x x x と y y y がともに最適解であれば,強双対定理から c ⊤ x = y ⊤ b c^\top x = y^\top b c ⊤ x = y ⊤ b となりますが,特に式 (1) より c ⊤ x = y ⊤ A x = y ⊤ b c^\top x = y^\top A x = y^\top b c ⊤ x = y ⊤ A x = y ⊤ b となります.さて,c ⊤ x = y ⊤ A x c^\top x = y^\top A x c ⊤ x = y ⊤ A x が何を意味するか考えてみましょう.移項すると ( y ⊤ A − c ⊤ ) x = 0 (y^\top A - c^\top)x = 0 ( y ⊤ A − c ⊤ ) x = 0 です.総和記号を使って書き下すと
∑ i = 1 n ( ( y ⊤ A ) i − c i ) x i = 0 (2) \tag{2}
\sum_{i=1}^n ((y^\top A)_i - c_i) x_i = 0
i = 1 ∑ n (( y ⊤ A ) i − c i ) x i = 0 ( 2 )
となります.x x x と y y y の実行可能性から,任意の i = 1 , … , n i = 1, \dotsc, n i = 1 , … , n に対して x i ≥ 0 x_i \ge 0 x i ≥ 0 かつ ( y ⊤ A ) i ≥ c i (y^\top A)_i \ge c_i ( y ⊤ A ) i ≥ c i なので,( ( y ⊤ A ) i − c i ) x i ≥ 0 ((y^\top A)_i - c_i) x_i \ge 0 (( y ⊤ A ) i − c i ) x i ≥ 0 となります.これらの i = 1 , … , n i = 1, \dotsc, n i = 1 , … , n に対する和が 0 ということは,すべての i i i に対して ( ( y ⊤ A ) i − c i ) x i = 0 ((y^\top A)_i - c_i) x_i = 0 (( y ⊤ A ) i − c i ) x i = 0 でなくてはならず,これはつまり x i = 0 x_i = 0 x i = 0 または ( y ⊤ A ) i = c i (y^\top A)_i = c_i ( y ⊤ A ) i = c i の少なくとも一方が成立するということを意味します.同様に y ⊤ A x = y ⊤ b y^\top A x = y^\top b y ⊤ A x = y ⊤ b からは,すべての j = 1 , … , m j = 1, \dotsc, m j = 1 , … , m に対して y j = 0 y_j = 0 y j = 0 または ( A x ) j = b j (Ax)_j = b_j ( A x ) j = b j の少なくとも一方が成立するという結論が得られます.
まとめると,実行可能解 x , y x, y x , y が最適ならば,条件
すべての i = 1 , … , n i = 1, \dotsc, n i = 1 , … , n に対し,x i = 0 x_i = 0 x i = 0 または ( y ⊤ A ) i = c i (y^\top A)_i = c_i ( y ⊤ A ) i = c i
すべての j = 1 , … , m j = 1, \dotsc, m j = 1 , … , m に対し,y j = 0 y_j = 0 y j = 0 または ( A x ) j = b j (Ax)_j = b_j ( A x ) j = b j
が成立します.これらの条件を相補性条件 (complementarity condition) とよびます.逆に,実行可能解 x , y x, y x , y が相補性条件を満たすならば c ⊤ x = y ⊤ A x = y ⊤ b c^\top x = y^\top A x = y^\top b c ⊤ x = y ⊤ A x = y ⊤ b を満たすことも分かります.すなわち,x x x と y y y の目的関数値が一致しているので,弱双対定理より,これらは最適解となります.したがって,次の定理が得られます.
相補性定理と最適解集合
以上で見たように,相補性定理はLPの双対定理の帰結として自然に得られ,その内容は最適性の必要十分条件を与えるものです.より一般の非線形凸計画問題の場合でも,Slater 条件などの適当な仮定のもとで同様の相補性条件が最適性の条件(の一部)を与えることが知られています(Karush–Kuhn–Tucker 条件 ).この文脈では,相補性定理は最適解の候補の絞り込みや得られた解の最適性の確認に用いられるのが普通の使われ方だと思います.以下では,このような普通の使い方とはちょっと違った,LPの最適解全体を得るための使い方を説明します.
LPの最適解は一般に一意ではありません.最適解全体の集合は,LPの実行可能領域である多面体の一つの面を成します.これは以下のような幾何的なイメージを考えてもらうと納得できると思います.
つまり,最適解集合は,元の不等式制約に面を表す等式制約を追加することで記述できるはずです.特に,実行可能集合は各不等式制約が表す半空間の積空間であることから,最適解集合は主問題の制約をいくつか不等式から等式に修正したものになるはずです.この制約を得るにはどうすればよいか考えてみましょう.
ここで相補性定理が役に立ちます.双対問題の最適解 y ∗ y^* y ∗ を任意に一つ固定します.相補性定理より,主問題の任意の実行可能解 x x x に対して,x x x が最適であることと,( x , y ∗ ) (x, y^*) ( x , y ∗ ) に対して相補性条件が成立することが等価です.相補性条件をおもむろに以下のように書き換えてみましょう.
( ( y ∗ ) ⊤ A ) i > c i ((y^*)^\top A)_i > c_i (( y ∗ ) ⊤ A ) i > c i であるすべての i = 1 , … , n i = 1, \dotsc, n i = 1 , … , n に対し x i = 0 x_i = 0 x i = 0
y j ∗ > 0 y^*_j > 0 y j ∗ > 0 であるすべての j = 1 , … , m j = 1, \dotsc, m j = 1 , … , m に対し ( A x ) j = b j (Ax)_j = b_j ( A x ) j = b j
なんということでしょう,これらは主問題のいくつかの制約の不等式を等式に変えたものではありませんか! 繰り返しますが,主問題の任意の実行可能解 x x x に対して,x x x が最適であることとこれらの等式制約が成立することが等価です.したがって,主問題の不等式制約 A x ≤ b Ax \le b A x ≤ b において,双対最適解 y ∗ y^* y ∗ を好きに一つ選ぶと定まるこれらの制約を不等式から等式に変える(または単に A x ≤ b Ax \le b A x ≤ b に加える)と,それが最適解全体の集合を表す制約集合になっているわけです.
双対問題の最適解を一つ 持ってくるだけで主問題の最適解全体 を記述できてしまうと主張しているこの事実は個人的に驚愕に値すると思っています.なお,双対問題の最適解も一般に一意でないので,異なる双対最適解 y ∗ , z ∗ y^*, z^* y ∗ , z ∗ から得られる等式制約は違うものになり得ますが,主問題の不等式制約 A x ≤ b Ax \le b A x ≤ b と合わせると定めている領域は同じものとなります.
組合せ最適化における例
最後に組合せ最適化での応用例を紹介します.G = ( U , V ; E ) G = (U, V; E) G = ( U , V ; E ) を(孤立点のない)二部グラフとします.辺部分集合 M ⊆ E M \subseteq E M ⊆ E はその中の相異なる任意の二辺が端点を共有しないときにマッチング (matching) とよばれます.辺重み w ∈ R E w \in \R^E w ∈ R E の和 w ( M ) ≔ ∑ e ∈ M w e w(M) \coloneqq \sum_{e \in M} w_e w ( M ) : = ∑ e ∈ M w e を最大化するマッチング全体 がどのような構造をもつか調べましょう.
G G G における重み w w w に関する最大重みマッチング問題は,以下の整数計画問題
maximize w ⊤ x subject to ∑ v ∈ V x u v ≤ 1 ( u ∈ U ) , ∑ u ∈ U x u v ≤ 1 ( v ∈ V ) , x u v ∈ { 0 , 1 } ( u v ∈ E ) (IP) \tag{IP}
\begin{array}{lll}
\text{maximize} & w^\top x \\
\text{subject to} & \displaystyle \sum_{v \in V} x_{uv} \le 1 & (u \in U), \\
& \displaystyle \sum_{u \in U} x_{uv} \le 1 & (v \in V), \\
& x_{uv} \in \{0, 1\} & (uv \in E)
\end{array}
maximize subject to w ⊤ x v ∈ V ∑ x uv ≤ 1 u ∈ U ∑ x uv ≤ 1 x uv ∈ { 0 , 1 } ( u ∈ U ) , ( v ∈ V ) , ( uv ∈ E ) ( IP )
として記述できます.ここで二値変数 x u v x_{uv} x uv の値は,辺 u v ∈ E uv \in E uv ∈ E をマッチングに採用するなら1,しないなら0に対応します.一番目と二番目の制約はそれぞれ U , V U, V U , V の各頂点まわりで辺を高々一本しか選ぶことができないことを表しています.この問題の係数行列は完全単模 なので,整数制約を緩和した以下のLP
maximize w ⊤ x subject to ∑ v ∈ V x u v ≤ 1 ( u ∈ U ) , ∑ u ∈ U x u v ≤ 1 ( v ∈ V ) , x ≥ 0 (LP) \tag{LP}
\begin{array}{lll}
\text{maximize} & w^\top x \\
\text{subject to} & \displaystyle \sum_{v \in V} x_{uv} \le 1 & (u \in U), \\
& \displaystyle \sum_{u \in U} x_{uv} \le 1 & (v \in V), \\
& x \ge 0
\end{array}
maximize subject to w ⊤ x v ∈ V ∑ x uv ≤ 1 u ∈ U ∑ x uv ≤ 1 x ≥ 0 ( u ∈ U ) , ( v ∈ V ) , ( LP )
は目的関数値を変化させない緩和となります((IP) の実行可能解全体の凸包 = (LP) の実行可能領域).(LP) の双対問題は s ∈ R U , t ∈ R V s \in \mathbb{R}^U, t \in \mathbb{R}^V s ∈ R U , t ∈ R V を変数とする以下の問題
minimize ∑ u ∈ U s u + ∑ v ∈ V t v subject to s u + t v ≥ w u v ( u v ∈ E ) , s , t ≥ 0 (DLP) \tag{DLP}
\begin{array}{ll}
\text{minimize} & \displaystyle \sum_{u \in U} s_u + \sum_{v \in V} t_v \\
\text{subject to} & \displaystyle s_u + t_v \ge w_{uv} \quad (uv \in E), \\
& s, t \ge 0
\end{array}
minimize subject to u ∈ U ∑ s u + v ∈ V ∑ t v s u + t v ≥ w uv ( uv ∈ E ) , s , t ≥ 0 ( DLP )
です.
さて,相補性定理を使いましょう.( s ∗ , t ∗ ) (s^*, t^*) ( s ∗ , t ∗ ) を双対最適解とします.相補性定理より,(LP) の実行可能解 x x x が最適であることと,
s u ∗ + t v ∗ > w u v s_u^* + t_v^* > w_{uv} s u ∗ + t v ∗ > w uv である任意の u v ∈ E uv \in E uv ∈ E に対し,x u v = 0 x_{uv} = 0 x uv = 0
s u ∗ > 0 s_u^* > 0 s u ∗ > 0 である任意の u ∈ U u \in U u ∈ U に対し,∑ v ∈ V x u v = 1 \sum_{v \in V} x_{uv} = 1 ∑ v ∈ V x uv = 1
t v ∗ > 0 t_v^* > 0 t v ∗ > 0 である任意の v ∈ V v \in V v ∈ V に対し,∑ u ∈ U x u v = 1 \sum_{u \in U} x_{uv} = 1 ∑ u ∈ U x uv = 1
が成立することが等価です.つまり,
E + ≔ { u v ∈ E ∣ s u ∗ + t u ∗ > w u v } , U + ≔ { u ∈ U ∣ s u ∗ > 0 } , V + ≔ { v ∈ V ∣ t v ∗ > 0 }
E^+ \coloneqq \{uv \in E \mid s_u^* + t_u^* > w_{uv}\}, \quad U^+ \coloneqq \{u \in U \mid s_u^* > 0\}, \quad V^+ \coloneqq \{v \in V \mid t_v^* > 0\}
E + : = { uv ∈ E ∣ s u ∗ + t u ∗ > w uv } , U + : = { u ∈ U ∣ s u ∗ > 0 } , V + : = { v ∈ V ∣ t v ∗ > 0 }
とおくと,(LP) の最適解全体は
∑ v ∈ V x u v ≤ 1 ( u ∈ U ∖ U + ) , ∑ v ∈ V x u v = 1 ( u ∈ U + ) , ∑ u ∈ U x u v ≤ 1 ( v ∈ V ∖ V + ) , ∑ u ∈ U x u v = 1 ( v ∈ V + ) , x u v ≥ 0 ( u v ∈ E ∖ E + ) , x u v = 0 ( u v ∈ E + ) (3) \tag{3}
\begin{array}{llll}
\displaystyle \sum_{v \in V} x_{uv} \le 1 & (u \in U \setminus U^+),
& \displaystyle \sum_{v \in V} x_{uv} = 1 & (u \in U^+), \\
\displaystyle \sum_{u \in U} x_{uv} \le 1 & (v \in V \setminus V^+), \quad
& \displaystyle \sum_{u \in U} x_{uv} = 1 & (v \in V^+), \\
x_{uv} \ge 0 & (uv \in E \setminus E^+), \quad
& x_{uv} = 0 & (uv \in E^+)
\end{array}
v ∈ V ∑ x uv ≤ 1 u ∈ U ∑ x uv ≤ 1 x uv ≥ 0 ( u ∈ U ∖ U + ) , ( v ∈ V ∖ V + ) , ( uv ∈ E ∖ E + ) , v ∈ V ∑ x uv = 1 u ∈ U ∑ x uv = 1 x uv = 0 ( u ∈ U + ) , ( v ∈ V + ) , ( uv ∈ E + ) ( 3 )
で記述される領域と一致します.(3) の係数行列は (IP) の制約のそれと変わっておらず完全単模なので,(IP) の最適解全体は (3) に整数制約 x u v ∈ { 0 , 1 } x_{uv} \in \{0, 1\} x uv ∈ { 0 , 1 } を入れたものと一致します.
(3) は組合せ的には何を意味しているでしょうか? まず ∑ v ∈ V x u v = 1 \sum_{v \in V} x_{uv} = 1 ∑ v ∈ V x uv = 1 ( u ∈ U + ) (u \in U^+) ( u ∈ U + ) は,U + U^+ U + に含まれる各頂点を被覆(頂点に接続する辺を選ぶ)しなければならないということを意味します.∑ u ∈ U x u v = 1 \sum_{u \in U} x_{uv} = 1 ∑ u ∈ U x uv = 1 ( v ∈ V + ) (v \in V^+) ( v ∈ V + ) も同様です.x u v = 0 x_{uv} = 0 x uv = 0 ( u v ∈ E + ) (uv \in E^+) ( uv ∈ E + ) は,E + E^+ E + に含まれる辺は使用できないということを意味します.言い換えると,E ∗ ≔ E ∖ E + = { u v ∈ E ∣ s u ∗ + t u ∗ = w u v } E^* \coloneqq E \setminus E^+ = \{uv \in E \mid s_u^* + t_u^* = w_{uv}\} E ∗ : = E ∖ E + = { uv ∈ E ∣ s u ∗ + t u ∗ = w uv } としたときに,最大重みマッチングに含まれる辺は,部分グラフ G ∗ ≔ ( U , V ; E ∗ ) G^* \coloneqq (U, V; E^*) G ∗ : = ( U , V ; E ∗ ) の辺でなくてはならないということを要請しています.G ∗ G^* G ∗ をタイト部分グラフ (tight subgraph) とよぶことがあります.つまり,G G G の重み w w w に関する最大重みマッチング全体は,G ∗ G^* G ∗ のマッチングであって,U + ∪ V + U^+ \cup V^+ U + ∪ V + の頂点を被覆するようなもの全体と一致する ということがわかります.このように相補性定理を用いることで,二部グラフの最大重みマッチング全体の特徴づけを得ることができます.
参考文献
K. Murota. Computing the degree of determinants via combinatorial relaxation. SIAM Journal on Computing , 24(4):765–96, 1990.
Discussion