本文纯属作梦
我们知道,2048这个游戏中的每种情况,只能有4种解法,上下左右。以函式f(x)=y来说,输入x为场上的局面,而输出y为上下左右中的某个值。
因为结果只有4个,可以用2bit保存之。
00 上
01 下
10 左
11 右
而一个char中有8bit,一个局面x的返回值需要2bit保存。
所以,每一个char可以保存4个情况。
以2用1表示,4用2表示,8用3表示,假设最大数为65536,即16,那么场上的局面可以分为
16 * 16 * 16 * 16
16 * 16 * 16 * 16
16 * 16 * 16 * 16
16 * 16 * 16 * 16
总情况,也就是pow(16,16)即18,446,744,073,709,551,616总情况。
以2进数表示为:
1 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
63 48 47 32 31 16 15 0
即超越__int64存储上限,有点可怕。
因为一个char可以保存4个情况,所以,这些局面总共需要4,611,686,018,427,387,904个char进行保存。
而1024个char为1kb,而1024kb=1mb。按照该方式如下表进行转换。
4,503,599,627,370,496 kb
4,398,046,511,104 mb
4,294,967,296 gb
4,194,304 tb
4096 pb
所以总共需要4096pb的空间。
SO?
WTF!
我原本以为最多也不会超过100GB,没有想到居然这么大。
就算把最大值改为14,仍然需要数百pb的空间才能存下。
而全世界最大的网站一个月的访问两大约也只有几pb,所以,数百pb,目前而言几乎是一个不可能的概念。
话说NTFS文件格式支持pb级文档的访问吗,目前所有文件格式似乎最大也只能访问tb级的单文件吧?
所以,保存下每个局面应该走的方向的AI,虽然这是一个很美好的梦,但是,梦碎了。
不过还是有希望的,因为有分布式存储的存在。
总之我是没那个闲钱买N多伺服器做测试了,以上。