我的世界子民多人解密?
先引用一段知乎上的高赞答案 这里给出一种不破坏游戏平衡性的破解方法,需要玩家具备一定数学能力(微积分)和逻辑能力。首先证明MC中任意两个不同坐标点的X坐标是线性相关的。因为P(X,Y,Z)=0是一个二元一次方程,只要证明其中某一个未知量可以由其他已知变量表示即可。假设X1,X2是一组不同的坐标点,且不为(0,0,0)。则设过这两个点和原点的方程为:y = kx + b因为P(X,Y,Z) = 0,所以把上述方程代入后消去Y即可得到关于X的二次方程。因为X1,X2为一组不同的坐标,故该方程有两个不相等的实数根,用x1,x2分别表示两个根,则有k(x1-x2) = x1+x2-b。 因为k,b为常数,所以x1+x2-b必为一个定值,而x1-x2为一变值。因此存在一个函数f(x)使f(x1) = f(x2)。即对于任意的(x,y,z)有 P(x,y,z) = 0。 所以最终我们可以求解出所有的未知数并得到世界的所有坐标。 接下来引入一个辅助知识:贝叶斯定理。在推理计算时往往会遇到已知条件(观测数据)不足的情况下,而需要根据已有的信息来推断未知的信息。这时可以用贝叶斯定理来完成。
具体方法如下: 根据上文提到的线性关系,我们只需要找到世界中的任意三个点就可以求解出剩余的未知数了。为此我们先让机器人走到世界中任意三点(x3,y3,z3)、(x4,y4,z4) 和(x5,y5,z5)的位置,记录它们相应的坐标,记作集合D。然后令 f(x) = P(x,y,z) ,利用计算机软件模拟出世界中的全部点,并且把这些点与集合D进行对比。如果满足要求(误差在允许范围内)则停止;否则继续添加新的点为集合D,再进行测试。这样我们就得到了一个包含了世界所有坐标的数据集。
以上都只是在理论上完成了对世界坐标的求解,但是在Minecraft中真正的地图是由一个个正方体组成的。如果我们能够求解出每个正方体中物体的坐标,再把它们一一对应起来就好办了。问题是怎么从一堆随机的坐标求解出它的形状信息呢?这就要用到粒子群优化算法(PSO)。这是基于群体智能概念的一种优化算法,早期应用于解决复杂优化问题。它模拟的是鸟群等物种的觅食行为,通过个体之间的信息交换来实现整体最优。 具体怎么做呢?首先随机生成一堆适合大小的坐标,形成第一个“粒子”。然后让这个“粒子”飞一会,根据其当前位置以及以前经过的位置,使用PSO算法尝试寻找最优点(世界坐标)。如果没有找到就继续迭代,直到找到一个最优解。