Upload
talon-fuller
View
148
Download
0
Embed Size (px)
DESCRIPTION
OBDD を用いた ナンバーリンクの解法. 古妻浩一・武永康彦 (電気通信大学). 研究の背景. 二分決定グラフ (Ordered Binary Decision Diagram : OBDD) 論理関数の効率的表現方法. ナンバーリンク : パズルの一種 決まった解法が知られていない. 本研究. ナンバーリンクを論理関数で表し、 OBDD を用いて解を求める 与えた問題の正当性の判定. 例: f = x 1 x 2 + x 2 x 3. x 1. 0. 1. x 2. x 2. 0. 1. 0. 1. x 3. 0. 1. 0. 1. - PowerPoint PPT Presentation
Citation preview
OBDDを用いたナンバーリンクの解法
古妻浩一・武永康彦(電気通信大学)
研究の背景• 二分決定グラフ
(Ordered Binary Decision Diagram : OBDD)–論理関数の効率的表現方法
• ナンバーリンク : パズルの一種–決まった解法が知られていない
本研究• ナンバーリンクを論理関数で表し、
OBDDを用いて解を求める• 与えた問題の正当性の判定
OBDD(二分決定グラフ )
• 論理関数の表現方法の一つ変数の順序を決めた順に変数節点が現れる
• 特長• 変数順序を決めると、
OBDDの表現が一つに定まる• 実用的な論理関数をコンパクトに表現
• 関数同士の論理演算を少ない計算量で実現
例: f = x1x2 + x2x3
1
x1
x2 x2
x3
0 1
0 1
0 1 0
0 1
ナンバーリンクのルール 1• 入力
m×n の盤面に 1 から s までの数字をそれぞれ 2 つずつ盤面上のマスに与える• 数字を与えた点を基点と呼ぶ
1
2 1
2
ナンバーリンクのルール 2• 解の条件
1. 1つのマスに上下左右のうち 2つを結ぶ直線、または折れ線が一本だけ引かれる
2. 同じ数字の基点のマス同士を線で結ぶ3. 全ての線は 2つの基点同士を結ぶ4. 基点以外の全てのマスに線を引く
全て満たすなら正当解
1
2 1
2
1
2 1
2
3、 4を満たさない(空白を許す)解は短絡解
ナンバーリンクの符号化• 盤面の数字を r ビットの 2 進数で符号化 ( 空
白は 0)• 繋がれたマスは同じ数字を割り当てる
1
3
2 2
1 3
01 00
01 11
10
11
10
11
01 01 01 11
ナンバーリンクの符号化 2
論理変数を : マス (i,j) 上の数字の k ビッ
ト目が 1 : 〃
が 0と定義 例:マス (i,j) に数字 1001(2) を割り当
てる
0
1,, kjix
0,,1,,2,,3,, jijijiji xxxx
j
i1001
j
i
解の制約条件
ある解(後述する)を求める関数
C1:基点における接続条件C2:基点でない点における接続条件
CONNECT(P,S) = 1 となるような充足解を求めることで解を得ることができる。
基点の接続条件• 関数 C1 の表す条件
1. 基点 (i,j) に数字 t を割り当てる2. 上下左右のうち、
1 方向だけ同じ数字をとるそれ以外の方向には違う数字をとる
3. 4 方向についての論理和をとる
i
j t
SET :マス (i,j) に値 t を割り当てる関数
S1-S4 :マス (i,j) の左(上右下)に値 t を割り当てる関数
基点でないマスの接続条件• 関数 C2 の表す条件
1. マス (i,j) に対して上下左右のうち、2 方向はマス (i,j) と同じ数、それ以外は異なる数を割り当てる
2. 全ての選び方について論理和をとる
i
j
M1-M4 :マス (i,j) の値と左(上右下)の値が一致することを表す関数
得られる解について
1
2 1
2
33
・明らかに短絡解が存在する場合
1
2 1
2
33
この場合には正当解を得られない
得られる解について 2線のループが存在する場合
上のようなことが起こりうる
正当解の条件のうち「全ての線は 2つの基点同士を結ぶ」という条件を除いた解が得られることになる
1 1 2 3
2 3
01 01
11 11
11 11
10 11
10 11
10 11
短絡解を許す制約条件• 基点でないマスの接続条件において、
0を割り当てても良いようにするつまりマスの空白を許す条件
0
i
j
i
j または
問題の正当性の判定
短絡解を許す場合と許さない場合の両方について唯一の解を持つ
• 正当な問題の定義唯一の正当解を持ち、短絡解を持たない問題
問題の正当性の判定短絡解を許さない場合にただ一つ解を持つがそれが正当解でないとき、(つまり線のループを持つとき)短絡解を許す場合の条件では必ず複数の解を持つ(線のループは空白と同等であるため)
両方の場合で正当解を唯一つ持つことが正当な問題の条件となる
解を求める実験
•8×8 その1
実際に問題を与えて解を求めた
短絡解 実行時間 OBDDサイズ許さない
0.2秒 10,393
許す 1.7秒 41,412
短絡解 実行時間 OBDDサイズ許さない
0.7秒 23,540
許す 20.9秒 466,246
•8×8 その2
解を求める実験
•10×10 その1
実際に問題を与えて解を求めた
・ 15×20以上では正当解も短絡解も求められなかった
短絡解 実行時間 OBDDサイズ許さない
1.6秒 58,873
許す 8分 40秒 13,400,524
短絡解 実行時間 OBDDサイズ許さない
0.3秒 8,960
許す 1分 4秒 1,114,248
•10×10 その2
解を求める実験 2
同じ問題でもマスに対する条件の適用順序によって最大 OBDDサイズが大きく変わる• 左上のマスから実行
• 右上のマスから実行3
45
21
1
2 4
5 3短絡解 実行時間 OBDDサイ
ズ許さない 0.3秒 4,813
許す 46.8秒 1,598,287
短絡解 実行時間 OBDDサイズ
許さない 5.8秒 141,906
許す 1時間 58分 53秒
84,586,122出展:ニコリ「ナンバーリンク 1」
接続条件の適用順序• 基点でない点の接続条件を適用順序を変更してBDDの最大サイズの変化を観察する
● ○
○ t
● ○
●
○
●
接続が決定しそうなところから実行する•基点の周囲•4隅(実験中)
●
●
○
適用順序の実験1• 先ほどの左上からの結果との比較・元の結果
・周囲 4マス
・周囲 8マス
短絡解 実行時間 OBDDサイズ
許さない 0.3秒 4,813
許す 46.8秒 1,598,287
短絡解 実行時間 OBDDサイズ
許さない 33.2秒 697,762
許す 17分 14秒 16,588,110短絡解 実行時間 OBDDサイ
ズ許さない 2分 13秒 1,053,016
許す 13分 37秒 6,774,414
適用順序の実験 2
• 先ほどの左上からの結果との比較・元の結果
・周囲 4マス
・周囲 8マス
短絡解 実行時間 OBDDサイズ
許さない 3分 50秒 5,533,526
許す ---- ----短絡解 実行時間 OBDDサイ
ズ許さない 6分 4秒 5,345,051
許す ---- ----
短絡解 実行時間 OBDDサイズ
許さない 5.8秒 141,906
許す 1時間 58分 53秒
84,586,122
メモリ不足で計算出来ず
適用順序の実験 3
基点の周囲を先に適用するだけではサイズは大幅に増加してしまった
・基点同士の位置関係が重要か
基点の周囲 4マスと 8マスの比較では8マスを適用した方が小さくなることもあった
今後の課題• 正当解だけを得るプログラムの実装
– アルゴリズムは考案済• 最大 OBDDサイズを小さくする
– 変数順序を変更してみる– 条件の適用、条件の追加を行う
• 問題の作成、列挙への応用