審判込みの一般化詰将棋問題を考えよう その他

バグがあったら書き込むスペース

 

前回

uso-800-plus-alpha.hatenablog.com

 

1 構成時の細かい点

構成すべき論理式が、

a_1∧a_1

だったり、

b_1∧¬b_1

だったりした場合の取り扱い。

 

重複

→将棋盤で表すときには、縮約するものとする。

 

矛盾

→馬の利きに関わらず、

 攻方敗北ライン(A_iのライン)は、詰み

 受方敗北ライン(B_iのライン)は、不詰

 とするので、それらしい配置を置いておく。

 

(追記 1/18)

と思っていたが、矛盾の場合は、通常どおりのスキームでパーツを置くことが可能なのだから、特記する必要はありませんでした・・・

 

 

2 開始局面

初期配置を受方手番で再現した場合、受方負けにすべきでしょうか?

ということを考えていたのですが、たぶん受方負けにしないとバグが発生します。

さらに、中途半端なタイミングで連続王手の千日手判定がされてしまうとマズいので、開始局面はこんな感じにすべきでしょう。

f:id:tanpe_kanpinuyep_ne:20200118112831p:plain

持駒は攻方が桂を占有し、受方が歩を占有しているような状態です。

 

例えば、

f:id:tanpe_kanpinuyep_ne:20200118113137p:plain

こうしておけば、9八歩のせいで同一局面にならないので、ある程度逆算を入れることができます。まぁ、そんなことをしても、EXPTIME論文のように「スタート地点を別に設定できるよ」程度のメリットしか思いつきませんが・・・・・・

 

3 余詰・不詰等々

気付いたら追記する。

 

例えば、

f:id:tanpe_kanpinuyep_ne:20200118114349p:plain

この赤枠のあたりで、「受方負けにするべきの同一局面」が発生することは無いのでしょうか?この構成だと、赤枠内で同一局面が発生した場合、連続王手の千日手により攻方負けとなります。ちょっと考えてみましょう。

 

(1)

過去に、(b_1, b_2) = (偽, 真)(b_1, b_2) = (真, 真)にしたことがあって、

今回は、(b_1, b_2) = (真, 偽)(b_1, b_2) = (真, 真)した(受方負け)

という場合は、変数の配置が1周目と2周目で異なっているため、たぶんバグは起こらない。

 

(2)

過去に、(b_1, b_2) = (偽, 真)(b_1, b_2) = (真, 真)にしたことがあって、

今回も、(b_1, b_2) = (偽, 真)(b_1, b_2) = (真, 真)にした(受方負け?)という場合は、変数の配置が全く同じである以上、上記赤枠で連続王手の千日手判定されて攻方負けになるというバグがある・・・

 

・・・のかと思ったのですが、この場合、攻方が直前に同一局面を再現する手をさしていないとこうならないはずなんですよね。したがって、(2)は受方負けではなく、その直前の攻方の手で千日手判定されて攻方負けになるのが正しいのではないでしょうか。実際、たぶん赤枠のはるか手前で千日手になっているはずです。

 

また、以前手が存在しない局面(初期配置)については、上記の方法で問題点を潰せているように見えます。

 

っていうことは、問題ないのかなぁ・・・