一个写 2048 AI 的思路

May 8, 2019

本文纯属作梦


我们知道,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多伺服器做测试了,以上。