百科问答小站 logo
百科问答小站 font logo



逃离丧尸包围的游戏,你能否逃生? 第1页

  

user avatar   liu-yang-zhou-23 网友的相关建议: 
      

一、概述

僵尸的策略:全程追踪或者预判封锁. 两者可以同时使用.

我尝试算一下封锁的情况. 因为题目给出的两者速度比过于悬殊,所以我认为靠追踪是不可能追得到的,所以干脆直接考虑封锁的策略. 我们采用同心圆夹逼法,或者叫千层饼法:将目标锁定在夹层,然后逐渐缩小包围圈.

记号

:僵尸速度

:玩家速度


二、建模

1.最大包围圈

考虑最外层包围圈.

设僵尸打算在半径为 的圆 上实现封锁(这个 一定存在,当 时, 只需要充分大即可),这意味着圆上需要分布着 数量的僵尸,上的僵尸来源有三类:

因为我们只需要 个僵尸就够了,只需要派遣内僵尸, 满足

其中 表示半径为 的圆内整点个数. 有了这些僵尸,关键看如何快速聚集到 上. 分配好位置,一个萝卜一个坑,目标是花费时间最短 ,也即是路程最远的那名僵尸所决定的:

这里涉及一个优化问题,每个僵尸应当走什么路线.

而游戏玩家在 时间内是无法到达 的,即满足

即游戏玩家沿直线到达 所花的时间是 的上界.

2.收缩最大包围圈

大包围圈里当然还可以有小包围圈,我们考虑最差的情况,小包围圈始终不能困住游戏玩家,只能指望大包围圈逐渐收缩。于是游戏结束的时间上限是:

三、计算 和

解得

也就是说离大外包围圈 最远的点的距离为 ,我们让它到达 上离它最近的点就算完成任务,也就是说

于是代入 立即得到

结论 1:这个公式说明,无论形成多大的圆,所需要的时间都是一样的,只取决于僵尸的速度.

代入 我们得到 的半径下界

于是我们得到 的计算公式

在题主所给的数据中, 代入公式

结论 2:这个包围圈至少要距离原点——游戏玩家的初始位置 个单位长度开外.

代入 我们得到游戏时间的上界


四、考虑小包围圈

上面的计算和推理同样适用于小包围圈的形成. 比如我考虑形成半径为 的圆,此时需要时间 ,且形成此圆所需要的僵尸数量并没有超过 的范围.

形成这个包围圈之后,游戏玩家必定在某个夹层中:

  • 在 中
  • 在 中

无论是那种情况,去夹他/她就可以了,我们的策略是:第一种情况,外圈缩小,内圈不动。因为内圈膨胀的话,僵尸之间的距离变大,包围圈就露出缝隙了。第二种情况,只需要缩小次包围圈就行了。两种情况所需的时间都一样。

由 ,我们最终得到围追堵截游戏玩家的时间上限:

这个计算公式显然刚好是只有一个包围圈的所需时间的一半.

代入游戏数据得


user avatar   eric-89-99 网友的相关建议: 
      

图2为图1的后期局部放大图,速度比为4:1,玩家走法由算法控制:始终走向间隙最大的地方。有意思的是,不管玩家初始位置如何,最终似乎总是会变到图2的模式。但遗憾的是,按照这种走法的话,玩家最后总是会被抓住。


为了方便数值计算,我们先考虑一种简单的策略:走直线。假设初始时刻,一只僵尸在原点处,你在 处向正北方向移动。僵尸在t时刻的位置为 . 依据题意

其中 为僵尸的速度.

上两式消去t,得到

注意到这里y', y''是对x的导数。积分一次得到

其中 。按照题意 。假设 ,则僵尸与你的最小距离应该在 时取得,此时如果僵尸刚好抓到你,则 。将上述值带入 化解得:

对于 ,等号右边 ,因此 .

按照上面的计算结果,开局时如果你在 处,然后一路向北不回头。两边的僵尸列队欢送,你被抓到之前可以一直走出大概 的距离,或者说题目第一问中R的下限是 .



更新:实际上可以考虑一个简单点的问题,只保留某个正方形包围圈上的僵尸,如下图所示。如果有足够大的包围圈可以抓住玩家,那么原问题中也可以抓住玩家。

按照上面的计算,显然存在足够大的正方形,使得玩家如果从原点出发沿任何直线走都不可能逃出。你说我可以走曲线呀?令玩家的点为W,两只相邻的僵尸为Z1和Z2,那么

  • 线段Z1Z2减小的速度大致正比于 ,这个角我们可以记为
  • 如果你走到Z1Z2附近的时间为T,Z1Z2减小的距离大概就是

直线朝着僵尸走,显然T最小。当然这并不直接说明上面的积分就最小,但是至少说明螺旋向外绕圈的方式是很可疑的,因为时间T多了很多,并且这些多出来的时间里 并没有比直线明显减小。具体有没有一种移动方式使得上面的积分比直线更小呢?应该是有的。但是能不能对于任意大的包围圈都能走出去呢,这个要在确定路线后具体算了。


二更:如果只有两只僵尸,它们之间的间距为1,那么不管它们距离你多远,相对位置如何,你始终可以找到合适的路线从它们中间穿过去。

证明:假设两只僵尸和玩家分别为G1, G2, F. 若0时刻 ,那么玩家就可以从它们中间穿过去,因为:

做辅助僵尸G3, 由于所有僵尸的间距随时间非增,因此若玩家沿y轴直线移动,在玩家到达僵尸G3之前,G2会始终落在两个圆交集的眼形区域中。这意味着F到达G3时,G1与G2之间的间距会大于√2-1. 对于1/100的速度比和安全半径,这个间距足够F从G1G2中间穿过了。

若 ,我们可以先稍微绕圈把这个角度变成 ,这不至于损失太多间距. 以下以 的极端例子来说明(假设图中G1(0)=(0,n), G2(0)=(1,n)):

首先,如上图所示,如果F向左走,那么线段G1G2会逆时针旋转。这样我们可以让F沿着以G1(0)为圆心,n为半径的圆顺时针走。F走出 的距离后, 必然小于 . 由于速度比为100,这时两只僵尸最多走了n/100的距离,离玩家至少有99n/100的距离。根据相似三角形,此时两只僵尸之间的间距至少为0.99. 玩家按照此证明第一段中的策略(调换G1和G2)即可从两只僵尸中间穿过。

抛砖引玉,如有不当欢迎指出和讨论。




  

相关话题

  如何证明一个同时以1和π为周期的函数无最小正周期? 
  如何评价王萼芳的高等代数教材? 
  蒙特卡罗算法是什么? 
  这个积分问题怎么做? 
  这道定积分怎么算(据说是某211期末考试题)? 
  为什么梯度下降能找到最小值? 
  这道怎么求极限? 
  这个式子对吗?若是,具体步骤是什么? 
  请问这道数竞题怎么做?请大神不吝赐教? 
  请问,一加一为啥等于二? 

前一个讨论
李群的伴随表示如何理解?
下一个讨论
拿棒球棒像打棒球一样往坏人脑袋上使劲一削能咋样?





© 2024-05-15 - tinynew.org. All Rights Reserved.
© 2024-05-15 - tinynew.org. 保留所有权利