飛び駒を考慮した逆算法に基づく 詰将棋問題の列挙 ○川原 蟻塚 堀山 伊藤 純 正樹 貴史 大雄 京都大学大学院 情報学研究科 京都大学 工学部 埼玉大学大学院 理工学研究科 京都大学大学院 情報学研究科 詰将棋とは • 駒を動かし、玉を詰ませるゲーム 初期盤面 … 攻方 玉方 詰上がり図 重要なルール: 攻方は常に王手をかけなければならない 計算機を用いた詰将棋研究 解く研究 脊尾詰がミクロコスモス(1525手詰)を解く (1997) 知られている最長 創作する研究 逆算法を用いた自動生成 [Hirose, et al., 1998] 1八裸玉の数え上げ [Koyama, 2000] 金銀図式の数え上げ [Noshita, et al., 2002] 本研究の目標 • すべての詰将棋問題を列挙 究極の目標 • 使用駒を限定した詰将棋問題の全列挙 例)桂馬4枚と玉 – 飛び駒(飛車、角、香)なし [中塚, 堀山, 岩間 2004] – 飛び駒あり 今回 詰将棋問題創作の難しさ • ある局面が詰将棋の問題として成立しているか 判定するのは難しい 詰将棋の問題として正しいかの 判定は難しい 適当に駒をいくつか並べた局面 詰将棋の問題の成立要件 1. 攻方が適切な手を選べば、玉方がどのように 逃げても詰む 逆に、攻め手(王手をかける手)が なくなる場合は不詰となる 攻方 玉 金 玉方 玉 金 攻め手がない 玉方 詰 詰 玉 攻方 詰将棋の問題の成立要件 2. ある手番に詰みへのパスが2つ以上あっては いけない 攻方 どちらを選んでも詰みにたどりつく →× 余詰 玉方 詰 詰将棋とは認めない (最後の1手を除く) 詰 詰 3. 詰んだときに持ち駒が余っては 駒余り いけない 詰将棋生成研究の難しさ どうやって局面が詰将棋であることを示すか? 不詰(詰まないこと) 詰将棋 = 余詰(手を変えても詰むこと) のない局面 駒余り(詰み上がりに駒が余ること) 既存の研究 本研究 詰将棋の解答プログラムに 解かせる 欠点:実行に時間がかかる すべての詰将棋問題を列挙し、 データベースを作成することで、 高速判定が可能に 金銀図式の数え上げ 普通の計算機で2週間 1八裸玉の数え上げ 300MIPS年 発表の概要 • 列挙アルゴリズムの概要 • 飛び駒の導入によって生じる問題の考察と対応 • 列挙の結果 アルゴリズム:逆算法 • 詰んだ状態から手を逆にたどる 3手詰 玉方手番 同様にこれは3手詰の詰将棋 1手詰 詰上がり図 これは1手詰の詰将棋になっている (ただし、不詰、余詰がある可能性がある) 逆算法に基づく列挙 (飛び駒がない場合) 1. すべての詰め上がり図を列挙する 単純な方法 玉をマスに置く 王手をかける駒を置く 玉の逃げ場所がなくなるまで駒を置く すべての置き方を考える … 逆算法に基づく列挙 (飛び駒がない場合) 2-1. 攻方について1手戻す 玉 玉 金 玉 金 金 王手を解除する 金 金 金 余詰の判定も行う 詰め上がり図 逆算法に基づく列挙 (飛び駒がない場合) 2-2. 玉方について一手戻す 王手がかかるようにする 玉 玉 金 金 玉 玉 金 金 金 金 玉 金 金 金 玉 金 金 金 不詰の判定も行う 金 逆算法に基づく列挙 (飛び駒がない場合) 2-1 と 2-2 を繰り返す (幅優先探索) … 攻方 … 玉方 逆算木を構築 … 3手詰詰将棋 … 攻方 詰め上がり図 1手詰詰将棋 詰め上がり図 詰め上がり図 詰め上がり図 データ構造(局面集合) 明示的な駒 金 金 玉 玉 玉 金 金 暗黙的な駒 金 金 金 余剰な駒(王手に関係しない) 玉 玉 金 金 金 金 金 金 金 まとめて 表す {駒無、金} {駒無、金} 局面集合 逆算木と局面集合 逆算は局面集合に対して行う 逆算木の各ノードが局面集合に対応する 攻方 玉 金 金 {駒無, 金} {駒無, 金} 模式図 飛び駒の導入 • 飛び駒を導入して変わる点は4つ 1. 2. 3. 4. 手の戻し方が増える 局面集合の考慮が必要 玉方持ち駒の概念が生じる 無駄合いの概念が生じる 飛び駒の導入 (1) 手の戻し方 • 飛び駒がない場合、王手をかけている駒(王手駒)は ちょうど1つ 1手戻しではその駒を戻せばよい • 飛び駒がある場合、 王手駒は最大で2つ 飛び駒の導入 (1) 手の戻し方 • 手の戻し方も増える 飛び駒有りの場合 空き王手 両王手 合駒 飛び駒の導入 (1) 手の戻し方 • 飛び駒がない場合、戻す駒は必ず王手駒。 王手駒は明示的駒 金 飛 飛 玉 {駒無, 銀, 金} 玉 場合の数が著しく増える 玉 • 飛び駒がある場合、 暗黙的な駒を戻すこともある 銀 飛 飛び駒の導入 (1) 手の戻し方 • 飛び駒自身を戻すときは、通過したマスを 駒無にする必要がある 玉 {駒無, 金} {駒無, 金} 玉 飛 飛 {駒無} {駒無} 残り3つは無効 飛び駒の導入 (1) 手の戻し方 • 玉方1手進めのときも、飛び駒を効かせるため 駒無にすることもある 玉 玉 飛 飛 {駒無, 金} {駒無} {駒無, 金} {駒無} 飛び駒の導入 (2) 局面集合 • 同じ局面集合で、飛び駒が効く場合と効かない場合 玉 玉 玉 玉 攻方一手戻しによって、 王手を解除するとき 金 金 金 金 金 金 玉 金 金 香 {駒無, 金} 1つの局面集合では 表せない 玉 局面集合 玉 {駒無, 金} 香 玉 香 香 玉 {駒無, 金} 香 金 金 金 金 金 金 金 金 香 金 金 金 金 金 香 香 香 飛び駒の導入 (2) 局面集合 • 同じ局面集合で、飛び駒が効く場合と効かない場合 差の形でそのまま保持する 玉 玉 金 金 {駒無, 金} {駒無, 金} 香 {駒無, 金} {駒無} マイナス {駒無} 香 {駒無} 飛び駒の導入 (3) 玉方持ち駒 玉方が持ち駒を打って防ぐ → 合い駒 玉 飛 飛び駒がない場合、合い駒できないので、 玉方の持ち駒は使わない 飛び駒の導入 (3) 玉方持ち駒 使用駒を香車4枚と玉1枚に限定した詰将棋 香 香 玉 これは詰まない (合い駒できる) 玉 香 香 香 香 これは詰み (合い駒できない) このような合い駒させないためだけに置いた局面は 詰将棋問題として数えない 玉方の持ち駒の概念が必要 列挙の結果 列挙の結果 15手詰② (残りは①と同じ) ①、②と左右対称 15手詰① 15手詰③、④ 列挙の結果 詰め上がり図の数 銀1枚 銀2枚 銀2枚 銀3枚 銀3枚 銀4枚 銀4枚 160 金1枚 3,930 金1枚 46,464 金2枚 995,666 金2枚 金3枚 5,437,340 金3枚 24,675,097 金4枚 35,533,434 20分、1200MB メモリ不足のため、列挙できず まとめ • 飛び駒を考慮した詰将棋問題の列挙 1. 2. 3. 4. • 手の戻し方が増える 局面集合の考慮が必要 玉方持ち駒の概念が生じる 無駄合いの概念が生じる 香車3枚に限定し、実際に列挙を行った
© Copyright 2025 ExpyDoc