エクセルでシミュレーション
場
面ごとの選択
枝の数(将
棋)
打たないであろう手(= いきなり端歩など)も含めると将棋の初手の選択枝は30通
り。 shogi_modelC7.xlsm (王手放置を修正)
(単に選 択枝の数を探すだけのプログラムですが、マクロを使うので自己責任でお願いします) ※ 持ち駒の一部は表計算の関数をそのまま使っているのでボタンに関係なく先に計算されます
もし何も考えず打った場合その一局が起こる確率(※手順も指定)は 30〜100の手数乗分の1 のオーダー 。
58手目で以下と
なった例では次の59手目が
674574139919452936744867937551557704674334108379949109935643152212232765440000000000000000
分の1
(90桁 : 選択枝の積の逆数) の確率となった
・・・ 1手ごとに 約1.5〜3桁 増える
一人が一生に将棋
を打つ数が平均1000回(4桁)として1億人(8桁)が20世代(2桁)続いているとしても合計14桁しかありません
このような選択肢
の数の積は50手までくると70桁以上にもなります。 定石を打たない初心者や将棋の研究をして普通打たないであろう手を打っている場合、
意味があるかは別
問題として かなり割り引いても50手目あたりでは大抵
人類史上初めての手を打っていることになります
普通は絶対やらない相手陣に飛車が入っても龍にならない、角が馬にならない、歩がと金にならないといった無意味な選択枝もカウントします
但し、実戦で 無意味に見えて意味がある手、角が馬にならず打ち歩づめを回避したということはあったようです
◆考慮されていないこと(=基本ルールだが例外処理に近いもの)
@打ち歩詰め判定のルーチンは入っていません。 打ち歩詰めがある場面だと +1 だけ多い数字が表示されます
A千日手の判定ルーチンも入っていません。
B歩の持ち駒は9枚までしか記録できない。 ※記録フォーマット上の都合、 簡潔な表記のため
→ ※※10進数<-->18進数変換を使用して 18枚まで対応可能とした ( 2022.08.26 )
◆考慮されていること(=基本ルールの主要部分等)
@二歩(持ち駒があっても打つと二歩になる場所はカウントしない)
A歩、香は相手側の1段目には打てない、桂はさらに2段目にも打てない
B歩、香は相手側の1段目に行ったとき成らないという選択肢がなくなる(成るのみ)
桂も1〜2段目に行ったとき同様 ・・・ 先に駒が進めなくなるため
C同種の持ち駒が2枚あっても選択肢は2倍にはならない (バグ修正)
D自ら王手になりに行く、及び、取ると王手になる駒を取る を禁止
E盾になっている駒を動かして 自ら王手にする を禁止
F王手がかかっているのに逃げずに端歩をつく等 「王手」時の過剰計上 を補正
◆王の選択肢数過剰計上の補正ルーチン ※Dの補正ルーチン
1)相手の駒の行先のセルに黄色で色付けする (飛、角、金、銀、桂、香、歩、と、成香、成桂、成銀、龍、馬、王、玉)
(イメージ) (単に選
択肢の数を探すだけのプログラムですが、マクロを使うので自己責任でお願いします)
2)先手の場合は玉の周り、後手の場合は王の周りの黄色(且つ、相手駒または空き)のセルをカウントする
3)2)のカウント分を王(または玉)の選択肢から引く
4)セルの色を白(無色)に戻す
その他のルーチン
可読性の高い関数名
記録ルーチン (イメージ)
◆打ち歩詰めのルーチン(未作成 または 作成しない予定)
1)攻める側が歩を持っていない場合は打ち歩詰めは存在しない
2)攻める側が歩を持っていても2歩になる場合は存在しない
3)攻める側が歩を持っていて2歩にならない場合でも王の前に駒がある場合は存在しない
4) 1-3)を満たした上で以下の判定を行う
・王の逃げ道を探索する
盤の外でないこと|味方の駒でないこと → 空白又は相手方
空白又は相手方の道が相手方すべての駒で「あたり」にならないこと
空白又は相手方1の一つ上に歩がない
空白又は相手方1の上に香がない
空白又は相手方1の桂があれば桂が飛べる位置に桂がいない
・・・(以下、同様の処理)・・・ ※空白又は相手方2以降も同様
5) 以上、4)の処理を持ってすべての条件を満たす場合は打ち歩詰めとなるので
持ち駒の歩の選択肢から 1を引く
◆千日手のル−チン(未作成 または 作成しない予定)
・数手前の過去の配置(持ち駒含)を記憶し、かつ現状と照合するルーチンを組み込む必要がある
・現時点ですでに遅く、 あまり起きない千日手に対し、このルーチンを入れるとさらに遅くなりデメリットが大きい
→ もし作るとするなら、これ以上は専用ソフトで作成するべきと判断した
◆新たな疑問
1)囲碁と違って、将棋の場合、千日手を容認すると無限に続けることができる
・・・ 例えば、王(おう)と玉(ぎょく)が互いに1歩前進、1歩後退を繰り替えすなど。
千日手だけがしばりの場合、選択肢の枝の数はいくらに見積もられる
か?
⇒ 概算だけでも見積もる方法はあるか?
「1
局中に4回現れると千日手となる」・・・の
で 実
現可能局面数がわかっていれば
『そ
の3倍プ
ラス次の1手』が 4回目となることから、多くても実現可能局面数の3
倍+α(ア
ルファ)
以下と見積もれる。
(α≦593:
最大選択肢数)
2)一般的ルールでは500手で引き分けとなる。
500手以内で勝敗は決まるか? ⇒
完全解析まちか? ⇒
完全解析以外の回答方法はあるか?
3)最大選択肢数はいくらか?
⇒ これは
既に調べられていました。 593
とのこと。 (奈
良女子大 篠
田正
人
& ロジカルな将棋入門 野
崎昭弘著 )
⇒ 選択肢数 593のときの駒配置は?
・・・
『ロ
ジカルな将棋入門』 p66
参
照
⇒ 選択肢数 593のときの駒配置はオンリーワンか、複数か?
複数の場合、何個あるか? 又、駒配置は?
あまりに制約がきつく、左右対称のもの、先手後手の対称を同一とするならオンリーワンと思われ
た。
※篠
田氏の証明を読んだところ強い制約がかかっている
→ 飛車は1段目 角は3段目 銀は2段目 相手玉(後手玉)は2段目 先
手玉は2段目
※H(金) = 0、 H(桂) = 0、 H(歩) = 0 となるあたりの記述のところがまだ理解できていない。
(ただ金、桂、歩は盤上に置いても分岐数は増えないのは明らかなので、ここの理解はおいておく)
ま
た、『ロジカルな将棋入門』p66の
配置図では、 盤上の飛車、 角、 銀、 香、 先
手玉、 い
づれも
駒
ごとに取りうる最大選択肢数となっていることから
飛
車での選択肢の減少を他の駒( 角、 銀、 香、
玉
)
側の
選択肢の増加で補うと
いう類(たぐい)の方法がとれない。
このため、あるとすれば 段は固定したまま筋の並び替えに別解がある可能性だけが残る。
並び替えの探索の結果、他
の方法はいづれも否定され、593
のときの駒配置は 本
に書かれていたものと下の別解の2つだけが残った。
【最大選択肢数593 】
ロジカルな将棋入門に『も
うひとつある』とだけ書かれているが図示されていない方の別解(駒配置)
4)選択肢数と手数をグラフ(散布図)にするとどんな感じになるか?
(横軸が選択肢数 縦軸が手数)
(拡大図)
平均選択肢数は80ぐらいと言われれていますが、こうして調べてみると、序盤は、30〜40前後で推移していることがわかります。
急戦なら30手付近と100手以上の2極化など、グラフをみるとどんな将棋かがわかるような特徴がでるかもしれません
現状のソフトでは棋譜が読めないのと人力なのでここまで。
さらに今のソフトは単純な合計です。
本格的にやるにはその前に「王手」時の過剰計上を補正しておく必要があります
「王手」がかかると合駒を打つか、盤上の駒を移動して王手を避ける、王を動かす、の3つになり、今のソフトは対応しておりません。
→ ※対応しております 2022.07.02 「王手」時の過剰計上は補正された ( shogi_modelC7.xlsm
)
おそらく「王手」のかかる終盤は変動の激しい
特徴的
なグラフなると予想します
一例目 ・・・ [ 70手で終わった例 ]
(拡大図)
二例目 ・・・ [
117手で終わった例 ] ※※ 「情報」 から観た将棋
盤面を見ていないのに
1) 序盤 - 中盤 - 終盤がわかる
2) 角交換しているのがわかる
(拡大図)
5) 将棋ソフトはいつ人間を超えると思われていたか?
参考:ロジカルな将棋入門 野崎昭弘著 p66 筑摩書房
将棋世界 2020年 7月号
Math TOP