• 検索結果がありません。

アルゴリズム入門(5)(局所探索法))(局所探索法)

N/A
N/A
Protected

Academic year: 2021

シェア "アルゴリズム入門(5)(局所探索法))(局所探索法)"

Copied!
20
0
0

読み込み中.... (全文を見る)

全文

(1)

宮崎修一

京都大学 学術情報メディアセンター

アルゴリズム入門( 5 )

(局所探索法)

(2)

和積形論理式の最大充足問題(MAX SAT)

f = (x1+x2 +x3 ) (x1+x8 ) … (x3+x6 +x7 +x12)

入力:和積形論理式

出力: x , x , …, x に0/1 を割り当てて、1となる項の数を 最大にする。1 2 n

xi =0ならば xi =1 xi =1ならば xi =0

x xの反転を表す

(3)

項の中にある変数が、どれか1つでも1であれば その項は1となる。

(x1 +x2 +x3 ) 例

x1=0 x2=0 x3=1 (x1 +x2 +x3 )

の場合

0 1 1 (x1 +x2 +x3 ) = 1

x1=0 x2=1 x3=0 (x1 +x2 +x3 )

の場合

(x +x +x ) = 0

項が「充足される」と言う

(4)

( )

(x1 +x2 +x3 ) ( ) (x1 x 2 +x3 ) ( )x3 x2 (x1 +x2 +x3 ) (x 1 +x3 ) (x 2 +x3 )

問題:3変数からなる以下の入力の最適解は?

(5)

例:

2人の人物AとB。それぞれは「正直者」か「嘘つき」。

正直者は本当のことを言う。嘘つきは嘘を言う。

A: 「Bは嘘つきだ。」

B: 「Aは正直だ。」

変数 x A :Aが正直者ならば1、嘘つきならば0。 変数 x B :Bが正直者ならば1、嘘つきならば0。

変数 y A :Aの言っていることが正しければ1、間違っていれば0。 変数 y B :Bの言っていることが正しければ1、間違っていれば0。 SATを利用して、いろいろな問題を解くことが出来る。

(6)

これらの変数を使って論理式を立てる。

( xA + )yA Aが正直ならば、Aの言っていることは本当でなくてはならない。

xA =1ならば、yA=1でなければならない。

同様に、 ( xA + )yA ( xB + )yB ( xB + )yB

( yA + )xB ( yA + )xB ( yB + )xA ( yB + )xA

これらを全て満たす割り当てが、ABが正直者か嘘つきかを表す。

(7)

別の例:時間割

簡単のため、小さな問題を取り扱う。

教室は2つ(r1, r2) 2日分(月曜と火曜)

1日3時間

先生は3人(t1, t2, t3)

講義は10個(c1, c2, …, c10) 先生の担当

t1: c1, c2, c3, c4 t2: c5, c6, c7

t3: c8, c9, c10

(8)

教室r1 月曜 火曜

1時間目 2時間目 3時間目

教室r2 月曜 火曜

1時間目 2時間目 3時間目

変数 xi,j

c1 ~c10を、①~⑫の枠に割り当てる。

を用意する

xi,j =1:講義 i を枠 j で行う。

=0: 〃 行わない。

(例えば xc5,

(9)

「講義c1は必ず行わなくてはいけない。」

( xc1, + + … + xc1, xc1, )

「講義c1は2回以上行わない。」

( xc1, + )xc1, ( xc1, + )xc1, ・・・ ( xc1, + )xc1,

「同じ先生の講義を同じ時間帯に割り当てない。」

( xc1, + )xc3, ( xc1, + )xc3, ・・・

「先生t2の講義を火曜日1時間目に割り当てない。」

( xc5, )( xc6, )( xc7, )( xc5, )( xc6, )( xc7, )

(10)

単純な解法

x1, x2 , …, xn 0 0 0

1となる項の個数 0 0 1

1 1 1

14 43

22

これらの中で最大のものを 出力すればよい

2 通りあるので

指数時間アルゴリズム

n

(11)

局所探索法の考え方

0000000 0000001 0000010 0000011 0000100 0000101

0101100 0101101 0101110 0101111 0110000 0110001

…..

1つの割り当て

132

29 63

98

165 33

102

187 23

72

45 88

その割り当てによって 充足される項の数

2 個あるので、全てを 調べることは出来ない

n

(12)

局所探索法の考え方

ランダムに選んだ初期解から出発して、「近傍」に移りながら 良い解を探していく。

0101110

87

1101110 0101111 63

102

0101100

14

0101010

23

0100110

91 11 0111110

0001110

75

近傍=今の割り当てから、1変数だけ変更した割り当て

(13)

今よりも改善する近傍に移る。

0101110

87

1101110 0101111 63

102

0101100

14

0101010

23

0100110

91 11 0111110

0001110

75

次はこれを中心にして、この近傍を探索する もう改善が出来なくなった所で、やめる。

その時の割り当てを出力する。

※移り方のルールもいろいろあり得る(近傍の中で最も良い

(14)

( )

(x1 +x2 +x3 ) ( ) (x1 x 2 +x3 ) ( )x3 x2 (x1 +x2 +x3 )

(x 1 +x3 ) (x 2 +x3 )

0 1 0 x1 x2 x3

4

1 1 0 0 0 0 0 1 1

5 5 6

(15)

局所探索法の考え方

解同士の「近傍」を定義する。

ランダムに選んだ初期解から、

近傍の中でより良い解に移る ことを繰り返す。

これ以上移れなくなったら、

その時の解を出力する。

(16)

局所探索法で、必ず最適解が求まるとは限らない。

(むしろ一般には求まらない。)

充足される 項の数

出力 本当の最適解

局所探索法の利点:

(17)

局所探索法では、近傍の定義の仕方はいろいろある。

例えば極端な話

全てが、お互いに近傍同士と定義しても良い。

必ず最適解にたどりつくが、1回のステップにかかる時間が大きくなる。

(18)

MAX CUT

入力:グラフG

出力:Gの頂点集合の2分割

間にある枝数が出来るだけ多くなるように 局所探索法の例をもう1つ

4本

問題:最適解は?

(19)

MAX CUTに対する局所探索法

近傍:=1頂点だけを反対側のグループへ移す

例えばこの頂点を 動かすことで、解は 改善する

(20)

問題: 局所探索法で最適解が得られないグラフ(と初期解)の例 を与えよ。

参照

関連したドキュメント

\bullet グラフ H の代わりにグラフオートマトンを入力とし、条件を満たす (グラフオートマ

2 2 反転近傍に基づく局所探索法 局所探索法は,適当な初期解 $x$ から始めて,現在の解 $x$ に少しの変形を加えて得られる解の集合 $NB$ $(x)$

   最短経路問題は,グラフ問題のーつであり,各辺にコストが与えられているグラフ に対して,任意の2

まえがき 局所探索法 Local Search, LS は様々な組合せ最適化問題に 対して,ある程度精度の良い解を比較的短時間に算出可能な近 似解法として知られている.バイナリー

最大クリーク問題 (MCP) に対する,反復局所探索 (Iterated local search , ILS) に k-opt 局所探索法 (k-opt local search , KLS) [4] を導入した反復 k-opt

となる.つまり,case 2 においては任意の vdel に対して 式 13,式 15 のいずれかを満たすような vins を探索す

このとき、探索木に含まれない辺 e={u,v} に対して、 u,v は探索木上で 先祖 / 子孫の関係にあることを示せ。. Perform the DFS on a undirected

探索範囲の真ん中あたりとみつけたいものとを比較し、その結果