Perft

将棋でPerftしてみたまとめ http://qiita.com/ak11/items/8bd5f2bb0f5b014143c8 初めてデコりたくなった
0
merom686 @merom686

これ、入玉形とかでテストしたいな。

2015-05-28 19:32:13
ak11 @ak11

@merom686 自分の実装では X(7)=15086269607 になりました。何が違うんでしょう…。

2015-05-29 07:07:28
merom686 @merom686

@ak11 ありがとうございます。差は73ですか。何か間違えたにしても、こんなに近い値が出るものなんですかね…。とりあえず、作りたての不成生成が相当怪しいです。

2015-05-29 07:28:49
ak11 @ak11

@merom686 6手目の局面でぎりぎり生成可能になる指し手なんでしょうね。角以外の成る手とか不成とか詰み絡みとかでしょうか。一つ思い当たったものとして、(7手目で指せるか分かりませんが)、不成を生成する場合は行き所のない駒とかは注意が必要かもしれません。

2015-05-29 07:53:09
merom686 @merom686

.@ak11 15086269607になりました!不成生成で3段目の香不成を生成していたのが原因でした。コメントには「飛・角・歩・2段目の香の不成」と書いたものの、通常のでも王手回避でも実装がすっぽり抜けていました。感謝します。

2015-05-29 09:43:04
ak11 @ak11

@merom686 同じ結果になったようで一安心です。ルール通りに実装するだけでもなかなか大変ですよね。

2015-05-29 09:49:24
merom686 @merom686

@ak11 ご心配をおかけしました。今回のバグは、指し手の重複がないかを様々な局面でチェックすれば発見できましたね。

2015-05-29 09:54:10
math26 @math26

7手目の三段目香不成は▲96歩△94歩▲95歩△同歩▲同香△(94歩、94香以外)▲93香不成が36通り、▲16歩△14歩▲15歩△同歩▲同香△(14歩、14香以外)▲13香不成が37通りで合計73通りですか

2015-05-29 12:18:58
math26 @math26

なお、飛不成は6手目に生じる可能性があります(▲76歩△32飛▲33角成/不成△同飛▲(36歩以外)△37飛不成)

2015-05-29 12:21:09
merom686 @merom686

@merom686 これは間違っていました。代わりの値は以下。 X(7)=15086269607(たぶん正しい) X(8)=416062133009(未確認)

2015-05-29 13:27:45
ak11 @ak11

将棋でPerftしてみたまとめ [コンピュータ将棋] on @Qiita qiita.com/ak11/items/8bd…

2015-05-29 22:24:24
merom686 @merom686

@ak11 > 末端の1つ前がそれだったときだけをカウントしてみたのですが Stockfishのperftをいじって王手を数えてみたところ、Checksは末端の直前の指し手のみをカウントしたもののようです。 初期局面の深さ7までは、こちらの結果と一致しました。

2015-05-30 00:03:20
ak11 @ak11

@merom686 あ、なるほど。情報ありがとうございます。

2015-05-30 00:08:35
merom686 @merom686

@ak11 初期局面の深さ8まで、合法手最多局面の深さ4まで、全て一致しました。後者は打ち歩詰めも絡むのでありがたいです。 あと、昨日は「末端」という言葉の使い方が曖昧でした。例えば深さ8でやる場合、深さ8未満(7とか)で詰んだとしても、その詰んだ局面は「末端」ではないのですね。

2015-05-30 10:46:06