TryinHard
在8X8的棋盘中,我想知道如何实现棋盘的对称性。
许多位置只是彼此的镜像或旋转(没有典当或铸造功能,方向是无法区分的)。
通过结合使用板的垂直,水平和对角线镜像,始终可以将一块的位置固定在a1-d1-d4三角形内。
如何在国际象棋棋盘上实现这些对称性?它是否取决于选择的板表示形式(位板,0x88、8x8阵列等)的选择?
编辑1:目标是实现残局表的生成及其压缩。
钩了
如果要压缩这些板,则可以生成每个板的规范表示。@DocBrown的一个较旧的答案很好地表达了这一点:
为了提高效率,您可以使用每个板的“规范表示”,定义如下。生成给定板的所有对称板,将每块对称板包装到一个字节数组中,并在这些数组中保留该数组,该数组被解释为一个大数字,具有最小值。这种打包的表示形式是每个板对称性类的唯一标识符,可以轻松地放入字典/哈希表中,这使测试该对称性类是否已经非常有效。
这个问题是与N皇后问题有关的,因为每个皇后都是无法区分的,因此可以找到很多对称性。对于最终游戏板,(很少)是这种情况,因此我不确定您会节省多少。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句