我的世界多少方块?

梅露尤梅露尤最佳答案最佳答案

我算了一下,以一个标准尺寸的地图256×256为例(为了计算方便,把世界的高度也假设成256个层级),每堆4块(因为minecraft中只有正方体),每个物品摆放需要10位二进制数来记录方向,那么所有物品摆放情况共有 种不同的组合,也就是2的36次方种,大概十亿左右。当然实际要比这简单许多,因为有些物品是互相遮挡的,比如木墙和木头。不过这样依然相当大,比人类基因组全部可能的排列方式还要大的多!而且这只是物品摆放的情况,不包括物体本身所具有的性质,如果加上这个限制的话,那这个问题的规模会更加庞大。 不过我的世界中并没有这么多不同属性的东西;并且由于游戏的限制,很多东西是不能一起放的(比如木梯和木门放在同一格上面就会出错),所以实际上要少很多。不过就算是这样,这个数字也是巨大的,远远超过了目前人类的认知范围。在这样一个无穷无尽的数据海洋面前,任何人工查找或者搜索都显得苍白无力。

于是我就想到了用计算机来解决这个问题,让电脑来帮我寻找这些物品的摆放方案。首先我把这个图分开成9个部分(因为我想到了分治法,而分解后的问题规模相对较小,容易解决),然后分别对这9个部分进行填充。为了避免刚开始填充时因为无意义摆放而产生大量冗余的解,我在开始之前先用一种最暴力的方式生成了一组解:先随意摆放了这个世界中所有的物品(大概几千万组解的样子),然后用翻折的方法把这些解重新排布在一起形成一个新的解。之所以要用暴力算法先来生成一组解是因为我想确定一件事情——在我的世界中是否存在这样一种情况:无论怎样放置物品,世界最终一定可以正常生成。如果我这种通过暴力算法生成的解恰好包含了这种情况,那就证明我的猜想是正确的,我可以节约很多的时间和精力。幸运的是,我找到了这样的解。既然存在这样的解,说明问题有解,且我使用的暴力算法正确。之后我只需要继续沿用这一组解,不断迭代补充新的数据进来就可以找到问题的解了。

虽然我的世界中只有256×256这么一个小地方,但是组成这个世界的积木却非常多,光透明玻璃一个材质就有无数种排列方式,再加上其它岩石、泥土等材质,组合起来几乎是无穷无尽的。不过好在我的世界有‘边界’,只要我在边界之内找,总能找到答案。而我使用的这种方法,在边界内可以保证百分之百找到答案。如果一直找不到答案,就只能说明我的世界不存在这样的边界。然而我尝试了无数组解,最终都没有找到这样的问题案例。。。可以说我的世界是有边界的,只是我还没有找到它而已。

我来回答
请发表正能量的言论,文明评论!