逆算法に基づく 詰将棋の列挙

36
逆逆逆逆逆逆逆 逆逆逆逆逆逆 逆逆逆逆 逆逆逆逆 逆逆 逆逆逆逆逆 () 逆逆逆逆 逆逆逆

Upload: julian-murphy

Post on 04-Jan-2016

43 views

Category:

Documents


0 download

DESCRIPTION

逆算法に基づく 詰将棋の列挙. 堀山貴史 中塚裕之 岩間一雄 (京都大学). 持駒なし. 9手詰め. 詰将棋. 攻方は王手になる手の中から 手を選択する. 攻方. 玉方は必ず最善手を選ぶ. 玉方. 攻方. 詰. 詰. 詰. 詰. ×. 詰将棋  - 不詰め -. 不詰め. 攻方. 攻方の手によらず、 玉方が最善手をとれば 詰みがない. 玉方. 攻方. 詰. 詰. ×. 詰. ×. 詰将棋  - 余詰め -. 余詰め. 攻方. 2 つ以上の攻方の手に対し、 玉方が最善手をとった場合でも 詰む. 玉方. 攻方. ×. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 逆算法に基づく 詰将棋の列挙

逆算法に基づく詰将棋の列挙堀山貴史中塚裕之 岩間一雄(京都大学)

持駒なし9手詰め

Page 2: 逆算法に基づく 詰将棋の列挙

詰将棋攻方

玉方

攻方

詰 詰 詰 詰 ×

攻方は王手になる手の中から手を選択する

玉方は必ず最善手を選ぶ

Page 3: 逆算法に基づく 詰将棋の列挙

詰将棋  - 不詰め -

攻方

玉方

攻方

詰 詰 × 詰 ×

攻方の手によらず、玉方が最善手をとれば

詰みがない

不詰

Page 4: 逆算法に基づく 詰将棋の列挙

詰将棋  - 余詰め -

攻方

玉方

攻方

詰 詰 詰 詰 詰

2 つ以上の攻方の手に対し、玉方が最善手をとった場合でも

詰む

余詰

×

Page 5: 逆算法に基づく 詰将棋の列挙

詰将棋  - 駒余り -

詰み上がり

玉金

持駒

詰み上がりに駒が余っている

Page 6: 逆算法に基づく 詰将棋の列挙

詰将棋1525 手詰 ミクロコスモス 橋本孝治 941 メタ新世界 山本昭一 901 万里の駒(余詰) 森長宏明 873 新扇詰 奥薗幸雄 789 イオニゼーション 橋本孝治 767 桃花源 添川公司 729 バベルの塔 変幻自斉 651 ゴゴノソラ 今村修 615 FAIRWAY 馬詰恒司、摩利支天

合作 611 寿 伊藤看寿 117 煙詰 伊藤看寿

脊尾詰が 解く ( 1997 )

Page 7: 逆算法に基づく 詰将棋の列挙

詰将棋

解く研究  脊尾詰が現在最長の 1525 手詰を解く (1997)

創作する研究  逆算法を用いた自動生成 [Hirose, et al., 1998]  1八裸玉の数え上げ [Koyama, 2000]  金銀図式の数え上げ [Noshita, et al., 2002]

金金

金金

Page 8: 逆算法に基づく 詰将棋の列挙

詰将棋生成研究の難しさどうやって局面が詰将棋であることを示すか?

        不詰め(詰まないこと)詰将棋 = 余詰め(手を変えても詰むこと)    のない局面        駒余り(詰み上がりに駒が余ること)

Page 9: 逆算法に基づく 詰将棋の列挙

詰将棋生成研究の難しさどうやって局面が詰将棋であることを示すか?

既存の研究

詰将棋の解答プログラムに解かせる

欠点:解答プログラムの実行時間は長い

金銀図式の数え上げ    普通の高速パソコンで2週間1八裸玉の数え上げ       300 MIPS 年

        不詰め(詰まないこと)詰将棋 = 余詰め(手を変えても詰むこと)    のない局面        駒余り(詰み上がりに駒が余ること)

Page 10: 逆算法に基づく 詰将棋の列挙

詰将棋生成研究の難しさどうやって局面が詰将棋であることを示すか?

本研究

逆算法を用いて詰みのある局面を全生成する

        不詰め(詰まないこと)詰将棋 = 余詰め(手を変えても詰むこと)    のない局面        駒余り(詰み上がりに駒が余ること)

解答プログラムを使うことなく高速に数え上げを行う

Page 11: 逆算法に基づく 詰将棋の列挙

逆算法

詰み上がり 1手詰め

玉方手番 3手詰め

逆順に手を戻して詰め将棋を創作する方法

・・・金

金 金

金 金

金 金

金 金

金金

Page 12: 逆算法に基づく 詰将棋の列挙

金 金

金 金

金 金

金 金

本研究• 逆算法の定式化• 拡張局面という概念の導入• 列挙アルゴリズムの提案

{駒なし}

{攻方金}

{駒なし、攻方歩、…}

{攻方金}

局面 拡張局面

Page 13: 逆算法に基づく 詰将棋の列挙

本研究• 飛、角、香を用いない図式を列挙する

アルゴリズムを構築• 実際に、桂図式(玉と桂のみの詰将棋)他を

列挙

※ 用いない駒は玉方持駒となっている

Page 14: 逆算法に基づく 詰将棋の列挙

列挙アルゴリズム詰め上がり図作成

攻方逆算手探索

玉方逆算手探索

余詰め判定

DB 登録

不詰め判定

DB 登録

拡張局面から詰将棋の抽出

Page 15: 逆算法に基づく 詰将棋の列挙

攻方逆算手探索

  局

面攻方手

 局面

玉方手

• 余詰め(手を変えても詰むこと)の判定

1手戻す

余詰めあり

余詰めあり

Page 16: 逆算法に基づく 詰将棋の列挙

攻方逆算手探索

n手

n+1手

  手 αで1手戻し

  局

面攻方手

 局面

玉方手

DB

• 余詰め(手を変えても詰むこと)の判定

余詰めなし

1手進めた  局面の生成

1つは同じ

マッチング

手 α

手 β

手 γ

n手以下の全ての詰みがある局面

Page 17: 逆算法に基づく 詰将棋の列挙

攻方逆算手探索

  手 αで1手戻し

  局

面攻方手

 局面

玉方手

• 余詰め(手を変えても詰むこと)の判定

余詰めなし

マッチしたもの

手 β

手 αと βの2通りの詰め方があるので         余詰めあり

Page 18: 逆算法に基づく 詰将棋の列挙

攻方逆算手探索

攻方:n‘+1手

玉方:n手

攻方:n+1手 有

玉方:n‘手

同じ局面

DB

Page 19: 逆算法に基づく 詰将棋の列挙

攻方逆算手探索• 余詰めあり局面も以降の余詰め判定のため

に逆算を続ける

有攻方:n手

玉方:n+1手

攻方:n+2手 有

DB

Page 20: 逆算法に基づく 詰将棋の列挙

逆算手探索

生成

  拡張局

面攻方手番

 拡張局

面玉方手番

生成とは、拡張局面からある手を1手戻すこと

• 拡張局面の生成

Page 21: 逆算法に基づく 詰将棋の列挙

逆算手探索• 拡張局面の生成

金 金

金 金

金金

金 金

金 金

金金

金金

{駒なし、攻方金}

手:2二金を2 三金に

Page 22: 逆算法に基づく 詰将棋の列挙

攻方逆算手探索

n手

生成

  拡張局

面攻方手番

 拡張局

面玉方手番

DB

• 余詰め(手を変えても詰むこと)の判定

余詰めなし

1手進めた  拡張局面の生成

1つは包含される

マッチング

n手以下の全ての詰みがある局面

Page 23: 逆算法に基づく 詰将棋の列挙

攻方逆算手探索

n手

生成

  拡張局

面攻方手番

 拡張局

面玉方手番

• 余詰め(手を変えても詰むこと)の判定

余詰めなし

マッチしたもの

余詰めあり

余詰めなし

Page 24: 逆算法に基づく 詰将棋の列挙

玉方逆算手探索

n+1手

n手

  手 αで1手戻し

  局

面玉方手

 局面

攻方手

DB

• 不詰めの判定1手進めた  局面の生成

1つは同じ

マッチング

手 α

手 β

手 γ

n手以下の全ての詰みがある局面

Page 25: 逆算法に基づく 詰将棋の列挙

玉方逆算手探索

n+1手

n手

  手 αで1手戻し

  局

面玉方手

 局面

攻方手

• 不詰めの判定 マッチしたもの

手 β

マッチしなかったもの

手 βでは詰みがないか、より長い手の逃げ方があるので         不詰め

Page 26: 逆算法に基づく 詰将棋の列挙

玉方逆算手探索

n手

生成

  拡張局

面玉方手番

 拡張局

面攻方手番

DB

• 不詰めの判定1手進めた  拡張局面の生成

1つは包含される

マッチング

n手以下の全ての詰みがある局面

Page 27: 逆算法に基づく 詰将棋の列挙

玉方逆算手探索

生成

  拡張局

面玉方手番

 拡張局

面攻方手番

• 不詰めの判定

マッチしたもの

不詰めなし

Page 28: 逆算法に基づく 詰将棋の列挙

玉方逆算手探索

生成

  拡張局

面玉方手番

 拡張局

面攻方手番

• 不詰めの判定

不詰めなし

Page 29: 逆算法に基づく 詰将棋の列挙

詰将棋列挙の結果

詰み 1 手 3 手 5 手 7手 9手 11 手桂図式 7,524 12,366 6,142 1,188 242 12 0金2歩1図式 1,129 1,750 529 137 60 0 -

銀2歩1図式 4,671 9,155 2,156 534 328 36 0

銀1桂2図式 2,985 6,133 1,588 416 220 14 0

銀1桂1歩1図式

5,769 11,207 2,784 740 414 20 0

詰め手数別の詰将棋の数

1.83倍

Page 30: 逆算法に基づく 詰将棋の列挙

詰将棋列挙の結果列挙に要した資源量

実行時間( s ) メモリ量( KB )

拡張局面(個)

桂図式 4,866 648,385 66,542

金2歩1図式 286 80,213 8,232

銀2歩1図式 1,143 268,759 27,582

銀1桂2図式 2,345 199,616 20,486

銀1桂1歩1図式 1,781 348,894 35,806

Pentium4 2.8GHz/1GB (Debian GNU/Linux 3.0)

Page 31: 逆算法に基づく 詰将棋の列挙

生成された詰将棋例

9手詰め

Page 32: 逆算法に基づく 詰将棋の列挙

生成された詰将棋例

7手詰め

Page 33: 逆算法に基づく 詰将棋の列挙

生成された詰将棋例

7手詰め

Page 34: 逆算法に基づく 詰将棋の列挙

生成された詰将棋例

9手詰め

Page 35: 逆算法に基づく 詰将棋の列挙

生成された詰将棋例

11手詰め

Page 36: 逆算法に基づく 詰将棋の列挙

まとめ• 拡張局面という概念の導入• 逆算法による列挙アルゴリズムの提案• 桂図式(玉と桂のみの詰将棋)等を列挙

今後の課題• 飛、角、香を加えた定式化• さらなる記憶量削減のための拡張局面の検討• 他の図式の列挙