情報数理学

14.プライマルデュアル法
1
線形計画法の双対の概念を応用した近似アルゴリズム
がある。プライマルデュアル法(主双対法)という。
14.1 LP双対性入門
まず、次のような線形計画問題を考える。
問題A(主問題)
目的関数
min
f (x ) = 7x 1 + x 2 + 5x 3
制約条件
x 1 - x 2 + 3x 3 ³ 10 L( 1 )
5x 1 + 2x 2 - x 3 ³ 6 L( 2 )
x 1, x 2 , x 3 ³ 0
2
問題Aのような形をLPの標準形という。
制約条件を満たす解を、実行可能解という。
例えば、
x = (2, 1, 3)
は実行可能解。
実際、
1g2 - 1g1 + 3g3 = 10 ³ 10
5g2 + 2g1 - 1g3 = 9 ³ 6
L( 1 )
L( 1 )
このとき、目的関数値は、
f (x ) = 7g2 + 1g1 + 5g3 = 30
3
最適値は実行関数値以下であるので、この場合30以下になる。
このことは実行可能関数値は、最適値の上界を与えているとみ
なせる。
f (x )
最適値
実行可能解
ここで、下界について考える。
係数から、(1)式と(2)式の和をとると、目的関数値
の下界を導くことができる。
4
f (x ) = 7x 1 + x 2 + 5x 3
³ 6x 1 + x 2 + 2x 3
= (x 1 - x 2 + 3x 3 ) + (5x 1 + 2x 2 - x 3 )
³ 10 + 6 = 16
x3
\ f (x ) ³ 16
このように、制約式に非負数を乗じて加えると、目的関数の
下界が得られる。この非負数に注目してもう一つのLP問題を
得ることができる。下解はできるだけ大きくするほうが良いこと
に注意うする。
5
問題B(双対問題)
目的関数
max
制約条件
f * (y ) = 10y1 + 6y 2
y1 + 5y 2 £ 7
L( 1 )
*
- y1 + 2y 2 £ 1 L( 2)
*
3y1 - y 2 £ 5 L( 3)
y1, y 2 ³ 0
*
制約式の不等号の向きが変化しないように、
非負の条件が必要である。
6
このようにして得られたLP問題を、元の問題に対する
双対問題(dual,デュアル)という。
双対問題に対して、元の問題を主問題(primal,プライマル)
という。
0
双対可能解
f (x )
最適値
実行可能解
7
双対関係
問題A(主問題)
目的関数
min
f (x ) =
問題B(双対問題)
目的関数
n
å
cj x j
max
f * (y ) =
j= 1
制約条件
n
m
aij x j ³ bi
(i = 1, L , m )
j=1
å
bi y i
i= 1
制約条件
å
m
å
aij y i £ c j
( j = 1, L , n )
i= 1
xj ³ 0
( j = 1, L , n )
yj ³ 0
(i = 1, L , m )
双対問題の双対問題は、主問題になる。
8
弱双対定理
弱双対定理
x = (x 1 , L , x n ) と y = (y 1 , L , y m ) がそれぞれ、
主問題と双対問題の実行可能解のとき、次式が成り立つ。
f (x ) ³ f (y )
*
n
\
å
j= 1
m
cj x j ³
å
bi y i
i= 1
9
双対定理
双対定理
x * = (x *1, L , x *n ) とy * = (y *1, L , y *m ) をそれぞれ、
主問題と双対問題の最適解のとき、次式が成り立つ。
*
*
*
f (x ) = f (y )
n
\
å
m
cj x
*
j= 1
j
=
å
bi y
*
i
i= 1
f (x )
0
双対可能解
最適値
実行可能解
10
相補条件
相補条件
x = (x 1 , L , x n ) と y = (y 1 , L , y m ) がそれぞれ、
主問題と双対問題の実行可能解のとき、次式が成り立つ。
このとき、 x と y が最適解であるための必要十分条件は、
以下の条件が成立することである。
(1)主相補条件:各 1 £ j £ n に対して、
m
x j = 0 あるいは
å
aij y i = c j
である。
i= 1
(2)双対相補条件:各 1 £ i £ m に対して、
n
yj = 0
あるいは
å
aij x j = bi
である。
j= 1
11
14.2 プライマルデュアル法
相補条件を緩和することにより、近似アルゴリズムが得られる。
緩和相補条件
(1)主相補条件: a ³ 1 とする。
各 1 £ j £ n に対して、 x j = 0 あるいは
1
cj £
a
m
å
である。
aij y i £ c j
i= 1
(2)双対相補条件: b ³ 1 とする。
各 1 £ i £ m に対して、 y j = 0
あるいは
n
bi £
å
aij x j £ b gbi
である。
j=1
12
プライマルデュアル法の近似率
近似率
緩和した相補条件を共に満足するとき、
以下が成り立つ。
n
å
m
c j x j £ (a gb )å bi y i
j= 1
i= 1
\ f * (y ) £ f (x ) £ (a gb ) f * (y )
よって、 a gb
近似アルゴリズムである。
13
14.3 集合カバー
ある集合 U = {e1, L , en } (台集合という)と、その部分集合からなる
族 S== {S 1, S 2 , L , S m }, S i Í Uが与えられたとき、族の中のいくつかの
集合を選んで、その和集合が台集合をふくむようにする。さらに、こ
の族の各要素には、コストが割り当てられている。このとき、次の式
を満たすような部分族 C=でコスト最小のものを求める。
C=
= {S p , L , S q } Í S ,U Í
U
US
k
Sk Î C
5
S1 4
S2 1
2
3 S
3
1
5
6
3
4
S5
C=は、台集
合 U をカバー
するという。
S4 2
14
集合カバーの難しさ
集合カバー問題は、NP完全である。
証明略
15
集合カバーの整数計画法による定式化
コスト関数を c : S=® ¤ + とする。
目的関数
min
f (x ) =
c(S )x S
SÎ S
制約条件
å
å
xS ³ 1
(e Î U )
S :e Î S
xS Î {0,1}
(S Î S )
線形緩和
16
集合カバーの緩和線形計画法
目的関数
min
f (x ) =
c(S )x S
SÎ S
制約条件
å
å
xS ³ 1
(e Î U )
標準形になっ
ている。
少数集合カ
バー
S :e Î S
xS ³ 0
(S Î S )
双対問題
17
少数集合カバーの双対問題
目的関数
max
*
f (y ) =
å
ye
eÎ U
制約条件
å
ye £ c(S )
(S Î S )
eÎ U
ye ³ 0
(e Î U )
各要素eに対応する”物
質”を、集合Sに詰め込
むことをイメージすると
よい。直感的に、各集合
Sには、ある一定以上の
物質を詰め込むことが
できない。(この条件を、
破ることを、オーバー
パックということがあ
る。)
18
関数値の関係
少数最適値
整数最適値
OPT f OPT
f (x )
0
整数主実行可能解
少数双対可能解
少数主実行可能解
19
14.4 集合カバーへのプライマル
デュアル法の適用
(1)主相補条件:全てのS Î S
xS ¹ 0
Þ
å
に対して、
ye = c(S )
e:e Î S
主相補条件は、
厳密解の条件。
\ a = 1
(2)双対相補条件:
S Î S に対して、要素 e Î U 頻度の最大値を
k
とする。このとき、
双対相補条件
全ての e Î U に対して、
が、緩和されて
いる。
ye ¹ 0
Þ
å
S :e Î S
x S £ 1gk
\ b = k
20
相補条件の利用
集合Sは、
å
ye = c(S )
e:e Î S
を満たすとき、タイトと呼ばれる。
主問題の変数は整数性を保ちながら更新する。
しかも、タイトな集合のみから集合を集合カバーに選ぶ。
双対変数の値が非零要素のみ、
でカバーされる。
k
個までの集合
21
アルゴリズム
集合カバー(近似率 k )
1.(初期化)
x ¬ 0 ;y ¬ 0 ;
2.すべての要素がカバーされるまで以下を繰り返す。
2.1:カバーされていない要素を1つ選びe とし、
e を含むどれかの集合がタイトになるまで y e の
値を増加する;
2.2:タイトな集合をすべてカバーに選んで、
x を更新する;
2.3:これらの集合に含まれている要素は、カ
バーされているとする。
3.集合カバーとしてx を出力する。
22
アルゴリズムの動作例1
U
x = (S 1, S 2 , S 3 , S 4 , S 5 )
y = (e1, e2 , e3 , e4 , e5 , e5 )
5
S1 4
S2 1
2
3
4
U
5
S5
x = (0, 0, 0, 0, 0)
3 S
3
1
6
y = (0, 0, 0, 0, 0, 0)
S4 2
e 1 選択
y 1 の増加
1
5
S1 1
2
k = 3
x = (0,1, 0, 0, 0)
S5
3 S
3
1
6
S4 2
y = (3, 0, 0, 0, 0, 0)
23
U1
5
S1 1
S 5 x = (0, 1, 0, 0, 0)
y = (3, 0, 0, 0, 0, 0)
2
3 S
3
1
6
S4 2
e 2 選択
y 2 の増加
U2
4
S 5 x = (1, 1, 0, 0, 0)
y = (3, 1, 0, 0, 0, 0)
S3
1
6
S4 2
24
U2
4
S 5 x = (1, 1, 0, 0, 0)
y = (3, 1, 0, 0, 0, 0)
S3
1
6
U3
S4 2
e 6 選択
y 6 の増加
x = (1, 1, 1, 0, 0)
y = (3, 1, 0, 0, 0, 1)
25
解
U
S1 4
S2 1
2
3
4
5
3 S
3
1
x = (1, 1, 1, 0, 0)
y = (3, 1, 0, 0, 0, 1)
6
f (x ) = 4 + 3 + 1 = 8
f * (y ) = 3g(3 + 1 + 1) = 15
26
アルゴリズムの動作例2
U
k = 3
5
S1 4
S2 1
2
3
4
5
S5
x = (0, 0, 0, 0, 0)
3 S
3
1
6
y = (0, 0, 0, 0, 0, 0)
S4 2
e 5 選択
y 5 の増加
U1
3
S1 4
S2 1
2
1
x = (0, 0, 0, 1, 0)
S5
y = (0, 0, 0, 0, 2, 0)
3 S
3
1
4
27
U1
3
S1 4
S2 1
2
1
S 5 x = (0, 0, 0, 1, 0)
3 S
3
1
y = (0, 0, 0, 0, 2, 0)
4
e 3 選択
y 3 の増加
U
2
2
S1 3
S2 1
2
1
S5
x = (0, 0, 1, 1, 0)
y = (0, 0, 1, 0, 2, 0)
4
28
U2
2
S1 3
S2 1
2
1
S5
x = (0, 0, 1, 1, 0)
y = (0, 0, 1, 0, 2, 0)
4
e 2 選択
y 2 の増加
U
3
S1 1
x = (0, 0, 1, 1, 1)
S2 1
y = (0, 2, 1, 0, 2, 0)
1
4
29
U3
S1 1
x = (0, 0, 1, 1, 1)
S2 1
y = (0, 2, 1, 0, 2, 0)
1
4
U4
e 4 選択
y 4 の増加
x = (0, 1, 1, 1, 1)
y = (0, 2, 1, 1, 2, 0)
30
解
U
5
S2 1
2
3
4
5
S5
3 S
3
1
6
x = (0, 1, 1, 1, 1)
y = (0, 2, 1, 1, 2, 0)
S4 2
f (x ) = 3 + 1 + 2 + 5 = 11
f * (y ) = 3g(2 + 1 + 1 + 2) = 18
31
近似率
相補条件より、直ちに以下のように求められる。
ìï a = 1
ï
í
ïï b = k (頻度)
ïî
n
å
j=1
m
c j x j £ (a gb )å bi y i
i= 1
\ f * (y ) £ f (x ) £ kf * (y )
よって、k-近似アルゴリズムである。
32
関数値の関係
少数最適値
少数双対可能解
少数主実行可能解
整数最適値
0
整数主実行可能解
f (x )
OPT f OPT
緩和少数双対可能解
k gOPT f
アルゴリズムでは、相補条件より
この範囲に含まれる整数解が得られる。33
アルゴリズムの正当性
アルゴリズムでは、
の更新は整数性を満たしている。
しかも、以下の2つを満足している。
○すべての要素がカバーされている。
○すべての集合が、オーバーパックされていない。
(タイトな集合を選んでいくので自動的に満足する。)
以上より、アルゴリズムは、集合カバーに対する
整数の実行可能解を出力する。
34
最悪の問題例
U
1
e1
1
e2
L
en
1
en - 1
1+ e
en + 1
最適値
1+ e
アルゴリズムの出力
(
を最初に選ぶ)
n+ e
35