老虎解说我的世界介绍各种核弹(豆比我的世界科学分析)

今天在悟空问答上看到了一个很有趣的问题,当时随便写了个答案,后来仔细想了想,发现这个问题其实很有意思:

老虎解说我的世界介绍各种核弹(豆比我的世界科学分析)(1)

那我们就来仔细分析一下:到底TNT大爆炸和超级计算机的碰撞是怎样的。

首先来一本正经地分析TNT的爆炸:

老虎解说我的世界介绍各种核弹(豆比我的世界科学分析)(2)

首先,来看一下到底最多可以垒出多少个同时爆炸的TNT~我的世界在我们不使用区块加载器的情况下,最多最多只会加载玩家周围的17*17个区块,如果我们的这17*17个区块刚好邻近常加载的出生点区块,我们也不过能再多加载出生点区块周围强加载的部分,这个值是19*19个区块。为了方便计算我们取2*20*20,也就是800个区块。对于每一个区块而言,其共有16*256*16格方块,我们为了方便计算,取250*300,也就是75000,以上两个值相乘,得到的数字是60000000,也即六千万个方块【注意,实际数值是小于这个的,因为我们在估算时取了一个比真实值略大的值】。

其次,我们来考虑一下,TNT爆炸到底需要经历怎样的计算。很显然,每一个TNT的x,y,z坐标需要被记录,同时我们要算每个TNT和其他TNT之间的交互作用。因为TNT的爆炸是链式反应,也即1格影响两个,两个影响四个这样,所以对于每个TNT,如果把对其他的TNT的影响都迭代完需要log2(60000000)次,这个值大概是25-26之间,保守估计,我们取25好了。在每一次TNT爆炸的时候,我们默认mojang根据10格以内的TNT来判断这个TNT会落下的轨迹参数,10格以内有8000(20*20*20))个TNT,共有3格坐标值,也即8000^3,就是256000000000次计算。最大的一次同时算的个数是60000000/2,也即30000000次。那么,我们需要计算256000000000*30000000 = 7.68*10^18次计算。这个估计可能会有偏差,但应该处在一个比较合理的范围内。

最后来看超级计算机比如天河二号,有312万个计算核心,每个核心的计算性能为1.1GHZ。那么就意味着开足马力后,一秒钟可以算3.12*10^6 * 1.1 *(1024 * 1024 *1024)次,约为3.4 * 10^15次。可以看到大概差了3个数量级,也即超级计算机对于最后一次大爆炸的计算估计要持续2000s也即40分钟左右。

可即便是40分钟,也依然不是这个中间真正的瓶颈。我们知道的是超级计算机并无显卡,所以怎么输出计算结果是个大问题。如果我们只是要知道最后的地形结果,我们应该等上几小时就可以计算结束,但是,如果我们要想实时地看到图形输出,感觉这并不在显卡的能力范围内。

如有计算错误,欢迎指正~求关注一波,豆比的红石世界,将持续更新红石教程、游戏机制、游戏趣闻以及魔性MC科学,多谢啦~

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页