ぼくの考えたKKPとKPPの実装(3)
KPPの利用できる対称性を部分写像に分解して捉えようとするのは筋が悪かったっぽいorz*1
正直、
KPP[OUPosB][PPos][PSpec][PPos'][PSpec']
= KPP[OUPosB][PPos'][PSpec'][PPos][PSpec]
= KPP[fh(OUPosB)][fh(PPos)][PSpec][fh(PPos')][PSpec']
= KPP[fh(OUPosB)][fh(PPos')][PSpec'][fh(PPos)][PSpec]
と表される関係が利用できる全てであって、実質データ量がほぼ1/4にできるというのはだいたい合ってるものの、その量を表す式は次のが正しい*2
- (|KPP| - |Z_g|) / 4 + |Z_g|
<追記>→誘導追記>
ここで|KPP|はKPPの総要素数、|Z_g|は上記4項関係におけるアドレスの不動点の個数う
言い忘れたがfh(p)は駒位置pの水平反転
このデータ量削減を実現するには、上記等式で結ばれる4種類のアドレス∈{OUPosB}×{PPos}×{PSpec}×{PPos'}×{PSpec'}の中からprincipalなアドレスを一意に決める規則が必要である。
一意なら何でもいいはずなので、ここでは次の条件を満たすものとしようっと
<追記>→誘導追記>
アドレス(OUPos, PPosL, PSpecL, PPosR, PSpecR)∈{OUPosB}×{PPos}×{PSpec}×{PPos'}×{PSpec'}のうち、
- PSpecL <= PSpecRを満たし、かつ
- OUPosとPPosのうち東側(筋1寄り)の駒位置を水平反転したものがもとの駒位置の西側より西にならないものがprincipal
ただし駒台位置0の水平反転は0とし、かつ東西判定から除外する。*3
何でこれで一意に決まるのかわからん…(マテ、
実質データ量削減はこれで良いとして*4、テーブルサイズ削減の方策が振り出しに戻った気がするわけだが、、
当初の規定路線に沿う形で
- f_1: {PPos}×{PSpec}→{idx1}
- f_2: {idx1}×{idx1}→{idx2}
- f_3: {OUPosB}×{idx2}→E
の分解でできるだけ変えずに済みますように人