将9=C(9,1)
士5=C(5,2)+C(5,1)+1(无士)=16
象7=C(7,2)+C(7,1)+1(无象)=29
兵55=C(50,5)+..+1(无兵)=3478761+341055+26235+1485+55+1=3847592
车90=C(90,2)+C(90,1)+1(无车)=4005+90+1=4096
马90=C(90,2)+C(90,1)+1(无马)=4005+90+1=4096
炮90=C(90,2)+C(90,1)+1(无炮)=4005+90+1=4096
3847592*4096*4096*4096*29*16*9=122683692145199546368*9=1104153229306795917312(1GT=1ZB=十万亿亿)
>> 由于互相占位, 实际数量要比这个数小得多:
将不在士位: 4 此时士为16种
将在士位: 5 此时士只有C(4,2)+C(4,1)+1=11
那么将士总数为: 16*4+5*11=119 < 16*9=144
同样, 占份额最大的兵也可以大幅度降低, 如兵的可选位置数量为45-1-对方未过河棋子数
局面的存储最节省空间的就是求余, 以上计算就能用70个比特存储(仅其中一方)
实际上, 当局面数量达到32位(40亿时)就可以涵盖绝大多数情况, 用软件去对人时基本无敌了
若每个局面使用一个32位哈希主键, 外加2字节走法, 那么占用的空间仅为: 6*4G=24G字节
可以轻松的保存U盘或者固态硬盘中
将局面140位最多18字节再加进来, 占用空间仅为: 24*4G=96G, 可以轻松存在128G固态硬盘里
设想走法的横纵分别不大于9和10, 也就是可以余9为列, 除9余10为行, 那么8100(13位)就能存储着法
则存储两个着法外加6位棋子总数和键值, 就能保存到64位结构体中, 大小为32G
16位,24位的数量分别为64K和16M就更小, 如64K每个6字节才384K, 连开局库都算不上
士5=C(5,2)+C(5,1)+1(无士)=16
象7=C(7,2)+C(7,1)+1(无象)=29
兵55=C(50,5)+..+1(无兵)=3478761+341055+26235+1485+55+1=3847592
车90=C(90,2)+C(90,1)+1(无车)=4005+90+1=4096
马90=C(90,2)+C(90,1)+1(无马)=4005+90+1=4096
炮90=C(90,2)+C(90,1)+1(无炮)=4005+90+1=4096
3847592*4096*4096*4096*29*16*9=122683692145199546368*9=1104153229306795917312(1GT=1ZB=十万亿亿)
>> 由于互相占位, 实际数量要比这个数小得多:
将不在士位: 4 此时士为16种
将在士位: 5 此时士只有C(4,2)+C(4,1)+1=11
那么将士总数为: 16*4+5*11=119 < 16*9=144
同样, 占份额最大的兵也可以大幅度降低, 如兵的可选位置数量为45-1-对方未过河棋子数
还要减去己方已过河棋子数量, 减一是对方将帅必定占去一格, 加上未过河的10个位置
要精确分析会很复杂, 但结果的局面数会更小, 那是才能论证需要多少存储空间, 多少运算量, 等等
局面的存储最节省空间的就是求余, 以上计算就能用70个比特存储(仅其中一方)
实际上, 当局面数量达到32位(40亿时)就可以涵盖绝大多数情况, 用软件去对人时基本无敌了
若每个局面使用一个32位哈希主键, 外加2字节走法, 那么占用的空间仅为: 6*4G=24G字节
可以轻松的保存U盘或者固态硬盘中
将局面140位最多18字节再加进来, 占用空间仅为: 24*4G=96G, 可以轻松存在128G固态硬盘里
设想走法的横纵分别不大于9和10, 也就是可以余9为列, 除9余10为行, 那么8100(13位)就能存储着法
则存储两个着法外加6位棋子总数和键值, 就能保存到64位结构体中, 大小为32G
16位,24位的数量分别为64K和16M就更小, 如64K每个6字节才384K, 连开局库都算不上