71
MINATO ZDD Project ZDDのリンクパズルへの応用 川原 純 ,斎藤寿樹 ,鶴間浩二 ,湊 真一 ‡† 吉仲 亮 科学技術振興機構ERATO湊離散構造処理系プロジェクト北海道大学大学院情報科学研究科組合せゲーム・パズル ミニプロジェクト 第6回ミニ研究集会 2011年3月10日

ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDDのリンクパズルへの応用

川原 純†,斎藤寿樹†,鶴間浩二†,湊 真一‡†,吉仲 亮†

(†科学技術振興機構ERATO湊離散構造処理系プロジェクト,‡北海道大学大学院情報科学研究科)

組合せゲーム・パズル ミニプロジェクト第6回ミニ研究集会2011年3月10日

Page 2: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

リンクパズル• グラフから次数2以下の部分グラフを抽出

– ナンバーリンク– スリザーリンク– ヤジリン– ましゅ など

2 ↑1

131

3 22 3

32

3

Page 3: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ナンバーリンク• 問題:

– 長方形のテーブル– 各セルは空白もしくは 1~p の数が入っている– 各数はテーブル中にちょうど2回現れる

• 解答:– 各セルを縦横に結んで互いに素なp 組のパスを作る(パスマッチング)

– 各パスの2端点が同じ数になる• NP完全

3

(使用前)

(使用後)

131

3 22

131

3 22

Page 4: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

スリザーリンク• 問題:

– 長方形のテーブル– 各セルは空白もしくは 0~3 の数が入っている

• 解答:– 罫線を縦横に結んでサイクルを作る– k と書いてあるセルの周りにはk 本の線が引かれるべき

• NP完全4

(使用前)

(使用後)

33

2

3

33

2

3

Page 5: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ヤジリン

5

(使用前) (使用後) ↑1 ↑1

ましゅ

(使用前) (使用後)

Page 6: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDDによるパスの列挙• D. Knuth によって ZDD を用いた

パスやサイクルの列挙手法が提案される(演習問題)

• 多項式回の ZDD の基本演算によるパスの列挙(川原ら,冬のLAシンポジウム'10)

• 本発表– リンクパズルの解の列挙– リンクパズルの問題生成

6

Page 7: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

関連研究• 古妻浩一・武永康彦 「OBDDによるナンバーリンクの解法」組合せゲーム・パズル第3回ミニ研究集会 (2008)

• 古妻浩一・武永康彦「ナンバーリンクのNP完全性と問題の列挙」信学技報, vol.109, no.465, COMP2009-49, pp. 1-7, 2010年3月

7

Page 8: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

Zero-suppressed Binary Decision Diagram (ZDD)

8

ab

c c

d

10

• 組合せ集合をグラフで表現

例:ac + ad + b + bc + d

YesNo

{ {a,c}, {a,d}, {b}, {b,c}, {d} }

a<b<c<d の順番で取調べる

Page 9: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

Zero-suppressed Binary Decision Diagram (ZDD)

• 組合せ集合をグラフで表現

9

ab

c c

d

10

YesNo

例:ac + ad + b + bc + d

a<b<c<d の順番で取調べる

{ {a,c}, {a,d}, {b}, {b,c}, {d} }

Page 10: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

Zero-suppressed Binary Decision Diagram (ZDD)

10

ab

c c

d

10

• 組合せ集合をグラフで表現

YesNo

例:ac + ad + b + bc + d

a<b<c<d の順番で取調べる

{ {a,c}, {a,d}, {b}, {b,c}, {d} }

Page 11: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

Zero-suppressed Binary Decision Diagram (ZDD)

11

・同じ働きの節点は2つとない

a

b

c

b

c cc

10 10

Page 12: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

Zero-suppressed Binary Decision Diagram (ZDD)

11

・同じ働きの節点は2つとない

a

b

c

b

c cc

10 10

a

b

c

10

Page 13: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

Zero-suppressed Binary Decision Diagram (ZDD)

11

・同じ働きの節点は2つとない

a

b

c

b

c cc

10 10

a

b

c

10

(a+1)(b+1)c

Page 14: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (1)

12

b

c

d

10

F = b + c + d

b

c

d

10

Page 15: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (1)

12

b

c

d

10

F = b + c + d

G = aF = ab + ac + ad = a(b + c + d)

b

c

d

10

a乗算

Page 16: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (1)

12

b

c

d

10

F = b + c + d

G = aF = ab + ac + ad = a(b + c + d)

b

c

d

10

a

H = F + G = ab+ac+ad+b+c+d = (a+1)(b + c + d)

b

c

d

10

a乗算 加算

Page 17: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (2)

13

F = a(b + c) + de

a

d

e

10

c

b

Page 18: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (2)

13

F = a(b + c) + de

G = F / a = b + c

除算

a

d

e

10

c

b

Page 19: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (2)

13

F = a(b + c) + de

G = F / a = b + c

a

d

e

10

c

b

除算

a

d

e

10

c

b

Page 20: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (2)

13

F = a(b + c) + de

G = F / a = b + c

a

d

e

10

c

b

除算

a

d

e

10

c

b

Page 21: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (2)

13

F = a(b + c) + de

G = F / a = b + c

a

d

e

10

c

b

H = F % a = de

除算剰余算

a

d

e

10

c

b

Page 22: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (2)

13

F = a(b + c) + de

G = F / a = b + c

a

d

e

10

c

b

H = F % a = de

a

d

e

10

c

b

除算剰余算

a

d

e

10

c

b

Page 23: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD の基本代数演算 (2)

13

F = a(b + c) + de

G = F / a = b + c

a

d

e

10

c

b

H = F % a = de

a

d

e

10

c

b

除算剰余算

a

d

e

10

c

b

Page 24: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

パスの列挙• 入力:グラフ G=(V, E),2頂点 s, t • 出力:s から t までのパスを列挙(保持したZDD)

14

[入力] [出力]s

t

Page 25: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

パスは辺の組合せである

15

e12 + e13e23 + e13e24e34

+ e14e23e34 + e14e2410

e12e13

e14e23 e23

e34

e24e243

2

4

1 e12

e24

e34

e23e14e13

Page 26: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

パスは辺の組合せである

16

e12 + e13e23 + e13e24e34

+ e14e23e34 + e14e2410

e12e13

e14e23 e23

e34

e24e243

2

4

1 e12

e24e23e14

e13

e34

Page 27: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

17

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

e12

e13

e12

es4

Page 28: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

17

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

e12

e13

e12

es4・素朴なアイディア:- 各辺について 使う/使わない の選択に基づく 2分木を幅優先で作る- 明らかにパスを構成しない辺の組合せは 枝刈りしてそれ以上探索しない

Page 29: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

18

es1

es4

e12

e13

e12

es4

e15

e14

※実際には幅優先で探索

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

5

4

2

3

1

Page 30: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

18

es1

es4

e12

e13

e12

es4

e15

e14

※実際には幅優先で探索

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

5

4

2

3

1

Page 31: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

18

es1

es4

e12

e13

e12

es4

e15

e14

※実際には幅優先で探索

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

5

4

2

3

1

Page 32: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

18

es1

es4

e12

e13

e12

es4

e15

e14

※実際には幅優先で探索

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

5

4

2

3

1

Page 33: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

18

es1

es4

e12

e13

e12

es4

e15

e14

※実際には幅優先で探索

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

5

4

2

3

1

Page 34: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

18

es1

es4

e12

e13

e12

es4

e15

e14

※実際には幅優先で探索

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

5

4

2

3

1

Page 35: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

18

es1

es4

e12

e13

e12

es4

e15

e14

※実際には幅優先で探索

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

5

4

2

3

1

Page 36: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

19

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

e12 e12

es4

Simpath by D. Knuth

※実際には幅優先で探索

Page 37: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

20

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

e12 e12

es4

0

Simpath by D. Knuth

※実際には幅優先で探索

Page 38: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

21

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

e12 e12

es4

Simpath by D. Knuth

0

※実際には幅優先で探索

Page 39: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

22

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

e12

es4

Simpath by D. Knuth

00

※実際には幅優先で探索

Page 40: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

23

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

e13

e12

es4

Simpath by D. Knuth

00

0

※実際には幅優先で探索

Page 41: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

24

5

4

6

7

2

38

9

1

s

t10

11

Simpath by D. Knuth

5

4

6

7

2

38

9

1

s

t10

11

0

Page 42: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

25

Simpath by D. Knuth

e13

es4es4

es1

e12 e12

e13 e13 e13

e14 e14 e14 e14 e14 e14 e14

0 0

0

Page 43: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

25

Simpath by D. Knuth

e13

es4es4

es1

e12 e12

e13 e13 e13

e14 e14 e14 e14 e14 e14 e14

0 0

0

・素朴に2分木を作っていては 計算が爆発する・「明らかにパスを構成しない」 かどうかの判定が面倒だ

Page 44: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

未処理辺既処理辺

MINATO ZDD Project

26

☆  mate  ☆ ~ パスの端点対の組合せ ~

5

4

6

7

2

38

9

1

s

t10

11

5

4

6

7

2

38

9

1

s

t10

11

どちらも端点対 (s一④), (⑤一⑧), (⑥一⑦) のパスをもつ

未処理辺既処理辺

Page 45: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

27

☆  mate  ☆ ~ パスの端点対の組合せ ~

5

4

6

7

2

38

9

1

s

t10

11

5

4

6

7

2

38

9

1

s

t10

11

どちらも端点対 (s一④), (⑤一⑧), (⑥一⑦) のパスをもつ

!

"

#

$

%

&

!10

11

Page 46: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

27

☆  mate  ☆ ~ パスの端点対の組合せ ~

5

4

6

7

2

38

9

1

s

t10

11

5

4

6

7

2

38

9

1

s

t10

11

どちらも端点対 (s一④), (⑤一⑧), (⑥一⑦) のパスをもつ

!

"

#

$

%

&

!10

11

t

Page 47: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

28

☆  mate  ☆ ~ パスの端点対の組合せ ~

5

4

6

7

2

38

9

1

s

t10

11

5

4

6

7

2

38

9

1

s

t10

11

t

どちらも端点対 (s一④), (⑤一⑧), (⑥一⑦) のパスをもつ

!

"

#

$

%

&

!10

11

Page 48: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

28

☆  mate  ☆ ~ パスの端点対の組合せ ~

5

4

6

7

2

38

9

1

s

t10

11

5

4

6

7

2

38

9

1

s

t10

11

t

どちらも端点対 (s一④), (⑤一⑧), (⑥一⑦) のパスをもつ

!

"

#

$

%

&

!10

11

Page 49: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

29

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

es1

e13

e12

es4

0

e15

e14

Simpath by D. Knuth

Page 50: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

29

5

4

6

7

2

38

9

1

s

t10

11

es1

es4

es1

e13

e12

es4

0

e15

e14

・ZDD の各節点は そこまで辿って得られる辺の組合せ=パスマッチング に対応・各節点の mate = 端点対集合 を記憶して, 同じmate を持つものは1節点にまとめる

Simpath by D. Knuth

ZDDでは同じ働きの節点は2つとない

Page 51: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

30

mate の更新

• 未使用の節点 v については (v一v) と約束すると便利(長さ0のパス)

• v に接続する全ての辺について処理が終わったら– (v一v) は忘れる– (v一u) のように v が内点なのに次数1をもつなら枝刈り

• 最後の mate は [(s,  t)] になりますよ!

eab

e次

e次

← この mate が [...,(a一c),(b一d),...] のとき

← この mate は [...,(c一d),...] になる

Page 52: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

mate-ZDD 法(提案手法)• Knuth 法

– トップダウンにZDDを作った– 作成途中のグラフ構造はZDDではない

• mate-ZDD 法– ZDD をボトムアップに作る– mate 端点対の組合せも ZDD で管理– 多項式回の基本代数演算でZDDを完成

31

Page 53: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

32

Mate-ZDD 法

5

4

6

7

2

38

9

1

s

t10

11

5

4

2

3

1

ms4 m35 es4 e13 e15対応する単項式

• mate-ZDD 法での変数– eab:辺 ab を表す変数– mab:mate中の端点対 (a一b) を表す

Page 54: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ZDD式の更新• 初期値

– F = m11 m22 ... mtt

• 辺 ab を処理するときそれぞれの節点 c,d に対してF = F + (F/mac/mbd) x eab x mcd

– [...,(a一c),(b一d),...]  → [...,(c一d),...]

• 節点 a に接続する辺の処理が全て終わったとき– それぞれの節点 b ≠ a に対してF = F % mab (剰余算)  mab で割り切れる= a の次数が1

– F = F / maa + F % maa 33

Page 55: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

Simpath vs mate-ZDD 法

• Knuth法 は速い• mate-ZDD法 は

– コーディングが易しい– 可塑性に優れる

• 両アルゴリズムについてパズルへの応用を試す34

n Simpath Mate-ZDD8 0.03 0.449 0.15 1.9210 0.63 6.0011 1.88 23.7512 6.25 148.11

n x n 正方格子グラフ上の対角パスの列挙  所要時間(秒)

Page 56: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

リンクパズルへの応用

35

自動解答器 問題生成器

ナンバーリンク

スリザーリンク

①mate-ZDD base

③Simpath base

②mate-ZDD base

④mate-ZDD base

Page 57: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

36

① ナンバーリンクソルバー• 特定2頂点間のパスの列挙

• 特定 p 組2頂点間のパスマッチング列挙

(使用前) (使用後)

131

3 22

131

3 22

Page 58: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

37

② スリザーリンクソルヴァー• サイクルの列挙に制約をかます• mate-ZDD法では辺 eij を保持しているので,各セルの条件と罫線の数の一致を確かめられる

eαeβ eγ

eδ3

F = (F/eα/eβ/eγ%eδ) eαeβeγ + (F/eα/eβ%eγ/eδ) eαeβeδ + (F/eα%eβ/eγ/eδ) eαeγeδ + (F%eα/eβ/eγ/eδ) eβeγeδ

Page 59: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

実験• 対照:汎用SATソルバー Sugar(田村直之)– パズルから帰着も用意済み

38

Page 60: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

ナンバーリンク対決

39

level size Solver  based  on  Mate-­‐ZDD

Sugar

1 easy 8  x  8 0.76 1.0415 easy 8  x  8 0.54 1.0730 easy 10x10 2.09 1.8043 medium 10x10 8.41 1.8052 medium 10x10 1.54 1.1564 medium 10x10 3.74 1.1872 hard 10x10 1.47 1.2879 hard 10x10 6.81 2.0985 hard 20x15 >  24  hours >  24  hours99 hard 20x15 >  24  hours >  24  hours

Page 61: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

Solver based on Mate-ZDD

• 処理する辺の順序に性能が大きく依存

40

Mate-ZDD 左上から右下へ:2.5 秒 右下から左上へ:866 秒Sugar:約 2 秒

例:hAp://www.pori2.net/puzzle/numberlink/03/index.html

Page 62: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

スリザーリンク対決

41

size Solver  based  on  Mate-­‐ZDD  (sec)

Sugar(sec)

1 10x10 1.00 2.9212 10x10 3.72 3.6225 10x10 4.47 2.8937 10x10 2.19 2.6443 18x10 21.58 3.7454 18x10 125.39 3.7368 24x14 5711.49 6.2077 24x14 2311.87 5.4689 36x20 49  hours 35.2496 36x20 >  24  hours 120.78

Page 63: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

そこで 問題生成(列挙)

• ZDD の十八番は全列挙• 1個だけ解を求めればいいだなんて・・・

42

Page 64: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

③ ナンバーリンク問題生成• 入力:盤面サイズ m x n と端点対数 p

• 出力:唯一解を持つ出題の全列挙

• 方法:Knuth法.ZDDでの合流 → 複数解 → 棄却.全辺の処理を終えて p 組の端点対を与える mate が欲しい出題そのもの.

43

e12

e13 e13

e14

e25

… …

Page 65: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

③ ナンバーリンク問題生成

44

p 生成問題数 計算時間 (秒)1 0 0.742 0 0.923 496 1.814 3454 3.525 6820 4.436 4652 4.597 952 4.578 36 4.56計 16410

4x4 格子p 生成問題数 計算時間 (秒)1 0 0.892 0 119.9>2 ? N/A計

5x5 格子

Page 66: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

③ ナンバーリンク問題生成• 小さい盤面でしか全列挙できない• 適当に問題を作らせるとくだらない†出題が多い

45(†個人の感想です)

Page 67: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

④ スリザーリンク問題生成• 入力: m x n 格子グラフ上のサイクル       (絵画的スリザァリンク)

• 出力: 唯一解を与えるヒントの組合せを全列挙

46

Page 68: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

④ スリザーリンク問題生成• mate-ZDD 法ベース• 与えられた解に対して,完全ヒントを生成

• ヒントアリ/ナシのパタンごとに別解の有無をチェック

47

33

2232

21

1

....3

32

32

21

1

33

22

2

332

13

21

1

2

2

2

1

33

2232

21

1

Page 69: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

④ スリザーリンク問題生成• 完全ヒントなども含まれる• 問題のランダム生成が可能• 最小ヒント数のもののみを抽出したりできる• 小さい盤面でもいやらしい†問題ができる

48(†個人の感想です)

Page 70: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

まとめ• パス/サイクルを列挙するアルゴリズム

– Simpath (Knuth)– Mate-ZDD (提案手法)

をリンクパズルに応用した• ソルバーはあまり強力ではないが改良の余地あり

– 辺・ヒント変数の順序など• 問題生成も時間がかかって大きな盤面には不向き• ときどき面白いパズルが出来て楽しかった†

49(†個人の感想です)

Page 71: ZDDのリンクパズルへの応用 - University of Electro … · 2013-04-17 · 「OBDDによるナンバーリンクの解法」 組合せゲーム・パズル第3回ミニ研究集会

MINATO ZDD Project

(演習問題2) 6 x 6 方眼上で,0ヒントのみを10個使って 解のないスリザーリンク問題を作れ      (問題生成器の教えるところによると10個が最小) 50

2131221

11 1 (問題生成器による出題)

極端に難しくはないものの,通常の定石はあまり役に立たず,ただ単に深読みが要求される.解けてもそれが唯一解だという確信を持ちにくい.

(演習問題1)次のスリザーリンクを解け