【魔塔】《24层魔塔》魔龙不可被击杀的严格证明

您所在的位置:网站首页 魔塔结局 【魔塔】《24层魔塔》魔龙不可被击杀的严格证明

【魔塔】《24层魔塔》魔龙不可被击杀的严格证明

2024-07-11 01:37| 来源: 网络整理| 查看: 265

Part1 版本及设定说明

我们在这篇文章中的讨论,使用以下版本与设定:

《24层魔塔》V1.12,魔龙的血攻防属性为99999生命,9999攻击,5000防御,没有200级隐藏结局。

常见的其他版本有《魔塔V1.1》和《魔塔盛宴》,这两个版本中的魔龙都是很容易击杀的。    

次次暴击,但hp不够则不能开战。

勇士在与怪物战斗前,先用常规方法计算出本场战斗的估计伤害,如果hp小于估计伤害则不能开战,但在战斗中,勇士每回合对怪物的伤害,不等于勇士攻击减怪物防御,而是等于这个数值的2倍。

使用这样的设定,是因为原版中具有“随机暴击”的因素:勇士hp小于估计伤害则不能开战,但在每次攻击时,有一定的概率(具体数值为等级/200)触发2倍暴击。我们证明,即使在随机暴击发挥到极限,以至于每回合都暴击的情况下,也不可能击杀魔龙。

Part2 证明思路简介

如果想要证明一个魔塔不可能打过boss,应该怎样做?

有一种精确的证明方法,是穷举全部的路线,发现每一条都打不过boss,或穷举一部分路线,发现每一条都打不过boss,同时证明其他的所有路线不可能比已穷举的这些更优。

但是,无论是前者还是后者,想用在《24层魔塔》这种层数多,路线变化丰富的魔塔上,即使借助计算机,现在看来也是几乎不可能完成的。

所幸,这个魔塔的boss过强,使得证明变得容易。

考虑这样一种情况:对于一个没有商店,没有加点,怪物也没有特殊属性的魔塔,我们赋予勇士一种特殊能力,使他可以秒杀除boss以外的任何怪物,从而可以轻易地收集所有血瓶宝石并站在boss面前,如果在这种情况下,勇士的生命都不足以击败boss,那么这个魔塔就是绝对不可能通关的了。

这个证明使用类似的方法:假设除了23层的三个冥灵魔王,地下层的两个灵法师、一个冥灵魔王,以及最终的魔龙之外,其余一切怪物(包括麻衣法师、红衣法师、白衣武士和其他的灵法师),勇士在任意状态下都可以击败,同时自身累计只损失3000点生命 。

实际的损失一定比3000点要大,不提各种实际战斗的伤害,仅从吸血的角度来说,勇士的初始血量加上前16层必经之路上的血瓶,共计3400点,这些生命要被后面数以十计的白衣武士和灵法师多次吸取。

有了这个优势条件,再加上第三部分补充的其他优势条件,我们证明勇士仍然不可能击败魔龙,这就说明,在没有这些条件的原版中,勇士更不可能击败魔龙了。

《24层魔塔》地下层的布局,其中两只灵法师是勇士挑战魔龙的主要障碍

值得指出的是,这里的假设只是为了简化计算,而规划路线时可能忽略这些假设。比如,勇士在吃十字架前,不适合在经验商店升级,十字架也可以认为不增加勇士的生命,因为21层与23层的灵法师实在是太多了。

Part3 其他假设

由于这个魔塔存在钥匙和门、多商店、十字架、卖剑盾的老人和商人、变异和二次变异等众多设定,我们还需要一些其他的假设,其中的一些是给勇士的优势条件,另外一些是对路线的限制。

除去必经之路上的门以外,勇士开启任何门都不需要钥匙,剩余的所有钥匙可以在12层左上的商人处卖掉换取金币。

如果需要打开一扇门获取更多的钥匙,则这扇门也算作必经之路上的门。

每一枚金币可以选择加血(增加40生命)或加能力(增加0.2能力和),每一点经验可以选择升级(增加100/9生命,2/27攻击与2/27防御)或加能力(增加17/95能力和)。如果在中途几个位置的结算中遇到小数,采用向上取整。

这实质上是说,假设所有的金币和经验都可以在11层和13层加点,同时一定能被全部利用,不出现不足以进行一次加点的尾数。

15层的老人不再卖剑,而是直接增加勇士171经验;商人不再卖盾,而是直接增加勇士100金币。

这是因为,如果勇士购买他们的剑盾,相当于额外获得了约170.6经验和100金币。

所有可以变异的怪物,除必经之路上的之外,20层及以下的都在一次变异后击杀,22层及以上的都在二次变异后击杀。

这是因为,由于有十字架的加成,保留20层及以下的怪物,等到二次变异后击杀是不合适的。

勇士在吃十字架前不使用经验升级。十字架使勇士的能力和提升三分之一,如出现小数则向上取整,不提升勇士的生命。

勇士会与23层左右两侧的冥灵魔王战斗,同时在与23层的冥灵魔王战斗前,即可获得它们的全部金币经验,并在分配能力后吃掉圣水。

在有暴击的情况下,额外击杀左右两侧的两只冥灵魔王是合适的。

Part4 数据的收集

我们统计这个魔塔中的全部资源,为接下来的计算提供数据,由于十字架的存在,分20层及以下和21层及以上两部分统计。

20层及以下:

初始属性:1000生命,10攻击,10防御

红血瓶:共46个,增加9200生命

蓝血瓶:共28个,增加14000生命

红宝石:共33块,增加99攻击

蓝宝石:共33块,增加99防御

剑:共4个,增加300攻击

盾:共4个,增加315防御

(由于上面的假设,15层的剑盾已不包含在内)

小飞羽:共1个,增加1000生命,10攻击,10防御

大飞羽:共1个,增加3000生命,30攻击,30防御

黄钥匙:共73个

黄门:共52个

蓝钥匙:共26个

蓝门:共17个

需要留到后几层的蓝钥匙:共3个

红钥匙:共12个

红门:共10个

需要留到后几层的红钥匙:共2个

所有钥匙换取金币数:357金币

金块:共1个,增加300金币

怪物:增加10895金币,9863经验

老人与商人:增加100金币,171经验

21层及以上:

红血瓶:共6个,增加1200生命

蓝血瓶:共15个,增加7500生命

红宝石:共15块,增加45攻击

蓝宝石:共15块,增加45防御

小飞羽:共4个,增加4000生命,40攻击,40防御

大飞羽:共2个,增加6000生命,60攻击,60防御

黄钥匙:共3个

黄门:共0个

蓝钥匙:共6个(包含带上来的3个)

蓝门:共6个

红钥匙:共5个(包含带上来的2个)

红门:共7个

所有钥匙换取金币数:-179金币

金块:共10个,增加3000金币

怪物:增加7220金币,6257经验

Part5 数据的处理

根据以上数据,可以得到这样的结果:

在吃掉十字架后,勇士将拥有一个圣水,34600生命,586攻击,606防御,以及5502点能力和(这些能力和可以自由分配给攻击或防御,或以1:200的比例兑换为生命)。

在准备进入地下层之前,勇士将拥有一个圣水,53300生命,731攻击,751防御,7511点能力和,以及6257点经验。

Part6 变量的引入与复杂的推导

经过一系列的简化,如今只需要证明下面的这个结论,即可证明《24层魔塔》的魔龙不可被击杀:勇士拥有一个圣水,53300生命,731攻击,751防御,7511点能力和,以及6257点经验,此时无论他以何种方式分配这些能力和与经验,进入地下层后都不可能击杀魔龙。

设6257点经验中,x点用来升级,共增加100x/9点生命,2x/27点攻击与2x/27点防御,则剩余(6257-x)点折算为(106369-17x)/95点能力和。

在这种情况下,我们有7511+(106369-17x)/95=(819914-17x)/95点能力和。

再设(819914-17x)/95点能力和中,y点增加攻击,z点增加防御,则剩余(819914-17x-95y-95z)/95点增加生命,共增加(163982800-3400x-19000y-19000z)/95点生命。

于是,在按照上述的方式加点结束后,勇士的生命

H=(169046300-3400x-19000y-19000z)/95+100x/9

攻击

A=731+y+2x/27

防御

D=751+z+2x/27

这里的H,A,D应为整数,若表达式计算出的不是整数,采用向上取整。

当x从0遍历到6257,y从0遍历到(819914-17x)/95,z从0遍历到(819914-17x)/95-y(若有小数则向上取整)时,H,A,D的值将优于一切有可能达到的血攻防数值。换句话说,无论一名玩家以什么样的方式玩《24层魔塔》,无论他能得到什么样的数据,这些数值中,总有一部分比它更适合迎战魔龙。

如果让这些数值逐一挑战魔龙,然后发现它们无一例外地倒在魔龙面前,这个证明就完成了。

挑战魔龙的流程如下:首先吃掉圣水,然后击杀三只冥灵魔王,接着进入地下层,先后击败一只灵法师、一只冥灵魔王和另一只灵法师,最后吃掉4000血与灵杖,以(A+20)点攻击和(D+20)点防御迎战魔龙,此时可以计算出勇士的生命H′与魔龙的伤害Dam。

最终,我们只需要证明

L=H′-Dam> main

L =

  -319

可以发现,L的最大值为-319,这说明,经过种种复杂的假设、运算和证明,我们终于得到了一个令人满意的成果。

定理:《24层魔塔》的boss魔龙不可能被击杀,无论使用何种路线,勇士想与魔龙开战的血量差距,不可能小于319hp。

Part9 附录

之前贴吧中有几个魔龙无法击败的“证明”,我也写过一些,但它们都有疏漏之处——引用了一些看似正确,但很难证明的结论,比如升级不合适,或这个魔塔的攻防和max为10088。

从某个角度讲,一个正确率为99%的“证明”似乎已经足够了,但在我看来,无论正确的可能性有多大,只要有一丝一毫错误的可能,也总有种不完美的感觉。因此一直以来,我都想把这个定理的严格证明写出来。

之前我长期认为这个证明非常简单,统计数据结束后随便算算就可以成功,因为如果实际去打一下这个魔塔,可以发现距离击败魔龙的差距是巨大的,而且我以前写过的“证明”中,确实不严格地“证明”了这个差距非常大。

直到开始写之后才发现,很多地方为了保证严谨,都不得不在数据上作出很大的退让,这些退让影响如此严重,以至于我的尝试失败过三次。

在第一次失败前,我假设勇士开所有的门都不消耗钥匙,因为当时猜测这样的精度是够的,结果最终与成功差距巨大,仅仅证明了L的值不超过十几万。

第二次失败前,我假设只有两只灵法师和一只魔龙费血,结果只证明了L的值不超过三万多。这个失败让我被迫考虑了四只冥灵魔王的伤害,从而多花费了不少篇幅去描述击杀冥灵魔王的过程,引理的证明也因此变得复杂。

第三次失败比较倒霉,考虑冥灵魔王之后,我证明了L的值不超过2347,可以说差一点就成功了,不过数据小自有它的好处,从前面随便找出3000血就可以了,实际上即使再多个几千,也不太难找。

证明成功的时候,其实我是激动了一会的,不过现在似乎不激动了,因为我好困…

嗯,就这样,如果有人有更大的耐心,或者有更好的想法的话,估计把319这个凄惨的数值优化到六位数不成问题吧。

(全文完)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3