240 likes | 512 Views
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.
E N D
OBDDを用いたナンバーリンクの解法 古妻浩一・武永康彦 (電気通信大学)
研究の背景 • 二分決定グラフ(Ordered Binary Decision Diagram : OBDD) • 論理関数の効率的表現方法 • ナンバーリンク : パズルの一種 • 決まった解法が知られていない
本研究 • ナンバーリンクを論理関数で表し、OBDDを用いて解を求める • 与えた問題の正当性の判定
例:f = x1x2 + x2x3 x1 0 1 x2 x2 0 1 0 1 x3 0 1 0 1 OBDD(二分決定グラフ) • 論理関数の表現方法の一つ 変数の順序を決めた順に変数節点が現れる • 特長 • 変数順序を決めると、OBDDの表現が一つに定まる • 実用的な論理関数をコンパクトに表現 • 関数同士の論理演算を少ない計算量で実現
1 2 1 2 ナンバーリンクのルール1 • 入力 m×nの盤面に1からsまでの数字をそれぞれ2つずつ盤面上のマスに与える • 数字を与えた点を基点と呼ぶ
1 2 1 2 1 2 1 2 ナンバーリンクのルール2 • 解の条件 • 1つのマスに上下左右のうち2つを結ぶ直線、または折れ線が一本だけ引かれる • 同じ数字の基点のマス同士を線で結ぶ • 全ての線は2つの基点同士を結ぶ • 基点以外の全てのマスに線を引く 全て満たすなら 正当解 3、4を満たさない(空白を許す)解は短絡解
1 2 2 01 00 10 10 3 01 11 11 11 1 3 01 01 01 11 ナンバーリンクの符号化 • 盤面の数字をrビットの2進数で符号化(空白は0) • 繋がれたマスは同じ数字を割り当てる
j j 1001 i i ナンバーリンクの符号化2 論理変数を : マス(i,j)上の数字のkビット目が1 :〃 が0 と定義 例:マス(i,j)に数字1001(2)を割り当てる
解の制約条件 ある解(後述する)を求める関数 C1:基点における接続条件 C2:基点でない点における接続条件 CONNECT(P,S) = 1 となるような充足解を求める ことで解を得ることができる。
i j t 基点の接続条件 • 関数C1の表す条件 • 基点(i,j)に数字tを割り当てる • 上下左右のうち、1方向だけ同じ数字をとるそれ以外の方向には違う数字をとる • 4方向についての論理和をとる SET:マス(i,j)に値tを割り当てる関数 S1-S4:マス(i,j)の左(上右下)に値tを割り当てる関数
i j 基点でないマスの接続条件 • 関数C2の表す条件 • マス(i,j)に対して上下左右のうち、2方向はマス(i,j)と同じ数、それ以外は異なる数を割り当てる • 全ての選び方について論理和をとる M1-M4:マス(i,j)の値と左(上右下)の値が一致することを表す関数
3 3 3 3 1 1 2 1 2 1 2 2 得られる解について • ・明らかに短絡解が存在する場合 • この場合には正当解を得られない
1 1 2 3 2 3 得られる解について2 線のループが存在する場合 01 01 10 11 11 11 10 11 11 11 10 11 上のようなことが起こりうる 正当解の条件のうち「全ての線は2つの基点同士を結ぶ」という条件を除いた解が得られることになる
i i 0 j j 短絡解を許す制約条件 • 基点でないマスの接続条件において、0を割り当てても良いようにするつまりマスの空白を許す条件 または
問題の正当性の判定 • 正当な問題の定義 唯一の正当解を持ち、 短絡解を持たない問題 短絡解を許す場合と許さない場合の両方について唯一の解を持つ
問題の正当性の判定 短絡解を許さない場合にただ一つ解を持つがそれが正当解でないとき、(つまり線のループを持つとき)短絡解を許す場合の条件では必ず複数の解を持つ(線のループは空白と同等であるため) 両方の場合で正当解を唯一つ持つことが正当な問題の条件となる
解を求める実験 実際に問題を与えて解を求めた • 8×8 その1 • 8×8 その2
解を求める実験 実際に問題を与えて解を求めた • 10×10 その1 • 10×10 その2 ・15×20以上では正当解も短絡解も求められなかった
解を求める実験2 同じ問題でもマスに対する条件の適用順序によって 最大OBDDサイズが大きく変わる 左上のマスから実行 右上のマスから実行 5 3 1 2 4 3 2 1 5 4 出展:ニコリ「ナンバーリンク1」
● ○ ● ○ t ○ ● ○ ● ● ● ○ 接続条件の適用順序 • 基点でない点の接続条件を適用順序を変更してBDDの最大サイズの変化を観察する • 接続が決定しそうなところから実行する • 基点の周囲 • 4隅(実験中)
適用順序の実験1 先ほどの左上からの結果との比較 ・元の結果 ・周囲4マス ・周囲8マス
適用順序の実験2 先ほどの左上からの結果との比較 ・元の結果 ・周囲4マス ・周囲8マス メモリ不足で計算出来ず
適用順序の実験3 基点の周囲を先に適用するだけではサイズは大幅に増加してしまった 基点の周囲4マスと8マスの比較では8マスを適用した方が小さくなることもあった ・基点同士の位置関係が重要か
今後の課題 • 正当解だけを得るプログラムの実装 • アルゴリズムは考案済 • 最大OBDDサイズを小さくする • 変数順序を変更してみる • 条件の適用、条件の追加を行う • 問題の作成、列挙への応用