制約充足と反復改良

Download Report

Transcript 制約充足と反復改良

人工知能の探索アルゴリズム(5)
先を読んで知的な行動を選択するエージェント
制約充足と反復改良
(Constraint Satisfaction and Iterative Improvement)
制約充足
 後戻り法
 前向きチェック
 制約伝播
反復改良
 山登り法
 焼きなまし法
 制約違反最小化
配布資料 pp.81-83, 110-113
http://aibm4.main.eng.hokudai.ac.jp
別紙資料 pp.41-51
制約充足(Constraint Satisfaction)
制約充足問題
(CSP: Constraint Satisfaction Problem)
状態:変数 x1,x2,…,xnの値で定義
ゴール検査:制約をすべて満たすかどうか
探索問題
制約充足問題
制約充足の例:地図の塗り分け
隣り合う地域の色が異なるように3色で塗り分けよ
各地域が変数
変数の取りうる値が
領域
◆ ◆ ◆
隣り合う変数の値が異
なるというのが
制約
すべての制約を満たす色の配置が解
制約充足問題
問題
x1 x2 … xn
変数(variable)の集合
D1 D2 … Dn
各変数の領域(domain)
変数間の制約(constraint)の集合
解
Cxy ={(a,b),(c,d),…}
許される値の組
すべての制約を満たすような
変数への値の割当て
a1 a 2 … an
制約充足問題の難易度
難易度=NP完全 (NP-complete)
解が与えられれば,それが確かに解であるかどうか
は線形オーダーの時間で容易に判定できる.
しかし,解を自力で見つけるのは,最悪のケースで
指数オーダーとなり,非常に難しい.
ヒューリスティックで
平均的には実用的な時間で解く
制約充足問題のその他の例
おもちゃの問題(toy problem)
8クイーン問題
覆面算
クロスワードパズル
現実世界の問題(real-world problem)
線画解釈
VLSIレイアウト
スケジューリング
8クイーン問題
互いにアタックしないように8個のQを置く
Q
Q
Q
Q
Q
Q
Q
Q
x1=6
x2=8
x3=1
x4=4
x5=2
x6=5
x7=7
x8=3
制約
xi  x j
| x i  x j | | i  j |
覆面算
FORTY
+ TEN
+ TEN
-----------SIXTY
解
29786
+ 850
+ 850
-----------31486
クロスワードパズル
1
2
4
6
8
3
5
7
x1
x2
単語リスト
AFT
ALE
EEL
HEEL
HIKE
HOSES
KEEL
KNOT
LASER
LEE
LINE
SAILS
SHEET
STEER
TIE
x1,x2間の制約: x1の3文字目=x2の1文字目
線画解釈(1)
線画
(2D)
解釈
立体
(3D)
線画解釈(2)
線分のラベル付けによる空間表現
両側に物体の表面が見える.
前方に凸.
+
-
両側に物体の表面が見える.
前方に凹.
矢線の右側だけに物体の表
面が見える.
線画解釈(3)
ジャンクションに許される全パターン
L
Arrow
+
+
+
-
+
-
-
-
Fork
-
-
T
+
-
-
-
-
+
+
+
+
+
線画解釈(4)
制約充足による解釈の生成
+
++
変数: 辺
制約充足
領域: ラベル
制約: ジャンクション
のパターン
解: 解釈
+
+
二項制約と他項制約
許される値の組
x
二項制約
y
C xy  {( 1, 2 ), (1,3 ), ( 3 , 2 )}
z
x
三項制約
y
C xyz  {( 1, 2 ,1), (1,3 ,1), ( 3 , 2 , 2 )}
理論的には二項制約のみ考える
z
x
三項制約
C xyz  {( 1, 2 ,1), (1,3 ,1), ( 3 , 2 , 2 )}
a
y
b
c
新しい変数の領域
二項制約に変換できる
z
二項制約
x
p
y
C py  {( a , 2 ), ( b ,3 ), ( c , 2 )}
新しい
変数
制約ネットワーク
w
z
x
v
y
u
頂点=変数
辺 =二項制約のある2つの変数を結ぶ
後戻り探索(backtracking search)
バックトラック法=深さ優先探索+早めの後戻り
部分解
x1 x2 x3 x4
a1 a2 a3 a4
k=5
前進
x1 x2 x3 x 4
a1 a2 a3 a4 k=5
後退
x1 x2 x3 x4 x5
x1 x2 x3 x 4
a1 a2 a3 a4 a5 k=6
a1 a2 a3 a’4 k=4
OK!
これまでの部分解との間に
制約違反がないように部分解を拡張
拡張できないときは,
後戻りをして最近の選択をやりなおす
バックトラック法のアルゴリズム
現在x1の取れ
る値の集合
S1 = D 1
/* 前進 */
x1の領域
k=1
while
(k > 0)
while
(Sk≠φ)
/* 後退 */
k = k -1
ak = Skの要素を1つ選択
Sk = Sk -{ak}
もし( a1 a2 …ak )が解なら
それを記録
k=k+1
Sk= ( a1 a2 …ak-1 )との
制約に違反しない
ak ∈ Dkの集合
ただし, k=n+1のときは空
集合
バックトラック法(再帰版)
/* メイン */
BACKTRACK(空ベクトル, 1);
/* 再帰的定義 */
BACKTRACK( vector, k ) {
if (vector が解) {解を記録する}
local変数 Sk= vector に矛盾しない値∈ Dkの集合
(ただし,k=n+1のときは空集合)
for ( a ∈Sk ) {
vector[k] = a;
BACKTRACK( vector,
}
}
k+1 );
例:4クイーンをバックトラックで解く
Q
Q
1
Q
Q
Q
1
Q
Q
2
3
4
空3
4
2空
解
空3
前向きチェックの動機
1 H O 2S
E 3S
H
4
E 5
6
7E
8
T
x1
x2
x8に入る
単語が
ない!
x1,x2の値を決めた時点で解に到達不能であるのに,
x3,x4,x5,x6,x7のすべての組合わせに対して
x8の値を見つけようとする
AFT
ALE
EEL
HEEL
HIKE
HOSES
KEEL
KNOT
LASER
LEE
LINE
SAILS
SHEET
STEER
TIE
前向きチェック(forward checking)
前向きチェック=先読み+バックトラック
部分解
x1 x2 x3 x4
a1 a2 a3 a4
部分解を拡張
いずれかの領域が
空になったら
後戻り
前進
x1 x2 x3 x4 x5 x6 x7 xn
a1 a2 a3 a4 a5
すでにOK!
アルゴリズムは省略
これ以降の変数の領域から
a5と矛盾するすべての値を削除
前向きチェックでうまくいく
1 H O 2S
E 3S
H
4
E 5
6
7E
8
T
x1
x2
x8に入る
単語が
ない!
AFT
ALE
EEL
HEEL
HIKE
HOSES
KEEL
KNOT
LASER
LEE
LINE
SAILS
SHEET
STEER
TIE
アーク無矛盾性:サポーター
x
制約
y にサポーターがいない
y にサポーターがいる
許される
値の組
y
サポーター
アーク無矛盾性(arc consistency)
すべての変数のすべての値が,
制約のあるすべての変数にサポーターをもつ
y
x
w
z
制約伝播(constraint propagation)
一つの値の選択(削除)が制約によって次々と他の選択
に波及する
x
選択
領域が空
削除
アルゴリズムは省略
w
z
y
反復改良(Iterative Improvement)
反復改良の考え方
Q
Q
Q
Q
Q
Q
Q
すべての変数に
(ランダムに)
初期値を設定
Q
Q
改良をくりかえす
(後戻りはしない)
Q
Q
Q
評価関数 z=f(x,y) の山を登る
最適解
局所最適解
z
y
x
山登り法(Hill-Climbing)
近傍の状態のうち評価値が最大の状態に進む.
決して下り坂を降りない.
近傍
neighborhood
山登り法の欠点
高原
局所的最大
局所最適解で停止する.
高原では進むべき方向を判断できない.
焼きなまし法(Simulated Annealing)
近傍の状態から次の状態をランダムに選ぶ.
エネルギが減少するなら,必ずそこに進む.
エネルギが増加するなら,温度に応じた確率でそこに進む.
エネルギ
最小化すべき関数をエ
局所解を
ネルギと呼ぶ
局所最適解
ある確率で
脱出できる
最適解
熱的なノイズによるランダムな揺れ
エネルギ
温度
1
ΔE
確率=
e
  E/T
確率=1
温度はじょじょに
下げていく
ye
確率
大
エネルギ
増加分ΔE
小
温度 T
大
x
冷却スケジュール
T = schedule (k), k=1,2,…
線形冷却
T
T k 1  T k  c
指数冷却
T k 1  cT k
対数冷却
T k  c / log( k  1)
k
焼きなまし法の最適性
温度T を十分ゆっくり下げるならば,
確率1で大域的最適解を見つける.
対数冷却 Tk=c/log(k+1) はこの条件
を満たすが,収束時間はO(n!)より長い.
温度はすごくゆっくり
下げていく
反復改良による制約充足:
ヒューリスティック修復(heuristic repair)
y
x
許される値
の組
w
現在の状態
z
制約違反最小化(min-conflict)
制約違反=2
これを
選ぶ
制約違反=1
制約違反=2
制約違反最小化の実績
百万クイーン問題: 平均50ステップ
ハッブル天体望遠鏡の観察スケジュール
3週間から10分に短縮
まとめ
制約充足と反復改良
制約充足
 後戻り法
 前向きチェック
 制約伝播
反復改良
 山登り法
 焼きなまし法
 制約違反最小化