一个放置充分长时间的发射子弹植物,于任何一个时间点,距离其下一次触发攻击时间点(不包含当前时间点)的时长x,服从一个固定的分布律。该分布律只与植物自身的攻击间隔有关,也被称为初次攻击分布。
用马尔可夫链来解决这个问题。“任一个时间点对应的下一次攻击时长”对应的就是马尔可夫链的一个状态;每cs发生一次状态转移,而且仅与前1cs的状态相关。求这个所谓的初次攻击分布,也即求给定的初始分布下的极限分布(如果存在的话)。
初始分布是什么样的
以豌豆射手为例,其刚刚被种下的第0cs初,其内存值被设置为0~150(对应初次攻击间隔0cs~150cs)的每个概率(写成向量)就是:
但是遇到内存值为0的情况又会瞬间以等概率设置为136~150间的值,即0cs末该向量变为
因为我们只考虑 “下一次触发攻击的时间点” 因此就去掉第一个代表0cs概率的元素
这就是给定的初始分布。
状态转移矩阵:
的转移概率全部为1。
的概率全部为 1/15。
容易写出状态转移矩阵:
容易证明:该马尔可夫链有限、不可约、非周期。因此它的平稳分布存在且唯一,任意给定初始分布的极限分布都是这个平稳分布。
直接来考虑更一般的情况:
n 是植物最大攻击间隔,k = 最大攻击间隔 - 最小攻击间隔 + 1。对于我们讨论的植物而言,都有 k=15
于是状态转移矩阵
同样可以证明其极限分布存在唯一,我们不需要关心初始分布是什么。直接求解
其中向量x表示分布,每个元素是一个概率:
得到
它就是我们求得的初次攻击分布。
代入k=15,n=150,200,300可以得到发射类植物,忧郁菇,投掷类植物对应的初次攻击分布(重写成分布的形式):
发射类植物(间隔136~150)
忧郁菇(间隔186~200)
投掷类植物(间隔286~300)
另一种表述:有时候初次攻击分布表述为“最早触发攻击的时长(0cs~149cs)”对应的概率分布。
现在初始状态其实是植物0cs种下后第1cs的初始状态:
取前0~149cs,最后得到相同的初始分布、状态矩阵与平稳分布。只不过现在向量x的含义变为:
对应的是。