Komakuro

English/日本語

将棋の数学:攻められているマスに注目した分析

定義「有限列に対するマップ」s=[s<sub>1</sub>,s<sub>2</sub>,...,s<sub>n</sub>]をS上の有限列、fをSからTへの写像とするとき、T上の有限列f(s)をf(s):=[f(s<sub>1</sub>),f(s<sub>2</sub>),...,f(s<sub>n</sub>)]と定義します。
定義「駒の動きもと」(k,s,o)∈Kind×Side×Turnに対してℤ×ℤ上の有限列の集合をわりあてる写像UnMoveを次のように定義します。
 Unmove(k,s,o):={-pos|pos∈Move(k,s,o)}
例えば Unmove(香,不成,先手)={ [(1,0),(2,0),...,(8,0)] } です。
定義「経路」ℤ×ℤ上の有限列uとo∈Turnに対し、あるk∈Kind、s∈Sideがあってu∈Unmove(k,s,o)であるとき、uを-oに対する素経路といいます。
o∈Turnに対し、すべてのoに対する素経路の集合をWay0(o)とかきます。
u,u'∈Way0(o)に対し、「uの長さをn、u'の長さをmとしたとき、「n<mかつu(1)=u'(1)かつu(2)=u'(2)かつ...かつu(n)=u'(n)」であるとき、uはu'に含まれるといいます。
u∈Way0(o)が、「任意のu'∈Way0(o)に対し、uがu'に含まれない」とき、
(1)oに対する素経路u
(2)集合{ (k,s,i)∈Kind×Side×ℕ | あるu'∈Way0(o)があって、u'がuに含まれ、かつu'∈Unmove(k,s,o)かつu'の長さがi }
の2つ組を、oに対する経路といいます。
すべてのoに対する経路の集合をWay(o)とかきます。
例えば、Unmove(銀,不成,先手)の元u<sub>1</sub>=[(1,0)]に対し、(u<sub>1</sub>,???)の形の組は後手に対する経路ではありえません。
なぜなら例えばUnmove(香,不成,先手)の(唯一の)元u<sub>2</sub>=[(1,0),(2,0),...,(8,0)]に対し、u<sub>1</sub>(1)=u<sub>2</sub>(1)であり、u<sub>1</sub>はu<sub>2</sub>に含まれるからです。
一方このとき、組way=( u<sub>2</sub>, {(歩,不成,1),(歩,成,1),(香,不成,8),(香,成,1),(桂,成,1),(銀,不成,1),(銀,成,1),(金,不成,1),(角,成,1),(飛,不成,8),(飛,成,8),(玉,不成,1)} )が後手に対する経路になります。
要するにこの経路wayは、注目しているマスposの「下方向」に対応していて、駒がposの下方向にある場合、例えば不成の銀ならposの下方向1マス以内、不成の香なら8マス以内にあれば、posまで一手で動きうる、ということを表しています。
定理「経路の具体像」まず、記述を短くするため、以下のようにおきます。
金系:={(歩,成,1),(香,成,1),(桂,成,1),(銀,成,1),(金,不成,1)}
前用={(歩,不成,1),(香,不成,8),(銀,不成,1),(角,成,1),(飛,不成,8),(飛,成,8),(玉,不成,1)}∪金系
後ろ用={(角,成,1),(飛,不成,8),(飛,成,8),(玉,不成,1)}∪金系
横用={(角,成,1),(飛,不成,8),(飛,成,8),(玉,不成,1)}∪金系
前斜め用={(銀,不成,1),(角,不成,8),(角,成,8),(飛,成,1),(玉,不成,1)}∪金系
後ろ斜め用={(銀,不成,1),(角,不成,8),(角,成,8),(飛,成,1),(玉,不成,1)}
桂用={(桂,不成,1)}
このとき、つぎの2つの等式が成り立ちます。
Way(先手)={
( [(1,0),(2,0),...,(8,0)], 横用 ),
( [(1,-1),(2,-2),...,(8,-8)], 前斜め用  ),
( [(0,-1),(0,-2),...,(0,-8)], 前用 ),
( [(-1,-1),(-2,-2),...,(-8,-8)], 前斜め用 ),
( [(-1,0),(-2,0),...,(-8,0)], 横用 ),
( [(-1,1),(-2,2),...,(-8,8)], 後ろ斜め用 ),
( [(0,1),(0,2),...,(0,8)], 後ろ用 ),
( [(1,1),(2,2),...,(8,8)], 後ろ斜め用),
( [(1,-2)], 桂用 ),
( [(-1,-2)] 桂用 )
} です。
Way(後手)={
( [(-1,0),(-2,0),...,(-8,0)], 横用 ),
( [(-1,1),(-2,2),...,(-8,8)], 前斜め用 ),
( [(0,1),(0,2),...,(0,8)], 前用 ),
( [(1,1),(2,2),...,(8,8)], 前斜め用 ),
( [(1,0),(2,0),...,(8,0)], 横用 ),
( [(1,-1),(2,-2),...,(8,-8)], 後ろ斜め用 ),
( [(0,-1),(0,-2),...,(0,-8)], 後ろ用 ),
( [(-1,-1),(-2,-2),...,(-8,-8)], 後ろ斜め用 ),
( [(-1,2)], 桂用 ),
( [(1,2)] 桂用 )
} です。
証明手の運動です。
簡単のため、Way(先手)の元を、順に、先手に対する左/左上/上/右上/右/右下/下/左下/左桂/右桂経路とよぶことにします。
Way(後手)の元も同様によびます。
定義「経路上にある」(c,r),(c',r')∈Column×Row、t∈Turn、way=(path,set)∈Way(t)とします。
あるi∈ℕがあって(c,r)+path(i)=(c',r')のとき、(c',r')は(c,r)のtに対する経路way上にあるといいます。
定理「経路の双対性」(c,r),(c',r')∈Column×Row、t∈Turnとします。
(c',r)が(c,r)のtに対する経路way上にあるとき、唯一つのway'∈Way(-t)があって、(c,r)は(c',r')の-tに対する経路way'上にあります。
証明経路の具体像から
wayがtに対する左経路ならway'を-tに対する左経路
wayがtに対する左上経路ならway'を-tに対する左上経路
wayがtに対する上経路ならway'を-tに対する上経路
wayがtに対する右上経路ならway'を-tに対する右上経路
wayがtに対する右経路ならway'を-tに対する右経路
wayがtに対する右下経路ならway'を-tに対する右下経路
wayがtに対する下経路ならway'を-tに対する下経路
wayがtに対する左下経路ならway'を-tに対する左下経路
wayがtに対する左桂経路ならway'を-tに対する左桂経路
wayがtに対する右桂経路ならway'を-tに対する右桂経路
とすれば定理がなりたつことがわかります。
定義「同一経路上にある」(c,r),(c',r')∈Column×Rowとします。
あるt∈Turnとway∈Way(t)があって、(c',r')は(c,r)のtに対する経路way上にあるとき、(c,r)と(c',r')は同一経路上にあるといいます。
特にwayがtに対する左桂経路または右桂経路のとき、(c,r)と(c',r')は桂経路上にあるといいます。
定理「経路と駒の利き」state∈State、p∈Piece、(c,r)∈Column×Rowとするとき、次の2つの条件は同値です。
<dl>
<dt>(1)</dt>
<dd>stateにおいてpが(c,r)に利いている</dd>
<dt>(2)</dt>
<dd>stateの立場写像をpostとおくと、post(p)=((c'',r'',s),o)とおけて、(唯一つの)(path,set)∈Way(-o)とi≦nなるi,n∈ℕがあって以下がなりたつ
<dl>
<dt>(2-1)</dt>
<dd>(kind(p),s,n)∈set</dd>
<dt>(2-2)</dt>
<dd>途中に駒がない
任意の1≦i'<iなる自然数i'に対して、(c,r)+path(i')=(c',r')とおくと、任意のp'∈Piece,s'∈Side,o'∈Turnに対してpost(p')≠((c',r',s'),o')</dd>
<dt>(2-3)</dt>
<dd>(c,r)+path(i)=(c'',r'')</dd>
</dl>
</dd>
</dl>
証明これは両者の定義からすぐにわかります。
定義「隔離度」state=(post,t)∈State、(c,r)∈Column×Row、t'∈Turn、way=(path,set)∈Way(t')とします。
以下の条件をみたす最大の非負整数nを、stateにおける(c,r)のt'に対する経路wayの隔離度といいます。
条件: 任意の1≦i≦nなる自然数iに対して、(c,r)+path(i)=(c',r')とおくと、任意のp'∈Piece,s'∈Side,o'∈Turnに対してpost(p')≠((c',r',s'),o')
隔離度がnであるとは、要は、(c,r)からみて、wayの方向にn個の空きマスがある、ということです。