自动生成空洞骑士速通路线的设想(空想)
建模成一个图上的转移。令地图每一面各个入口作为图的结点,直接相连的结点(如同一面的两端)作为边。
同时维护一个状态向量,其中的每一维可以包括:当前总耗时(可以是概率分布),当前位于哪个结点,是否具有某能力、物品,是否装备了某护符,具有的血量和灵魂(可以是概率分布),是否处于超冲状态(以继承上一面的超冲),某道门开没开等等任何影响速通目标和图上移动速度的状态。
那么我们实际上做的是状态向量之间的转移,某个符合一定条件的状态向量可以转移成另一个状态向量(消耗一定的时间、血量、灵魂获得某一能力、移动到另一位置、改变其他状态等)。所以其实搜索是在状态向量为点的图上搜。
优化的目标是,从初始向量开始,使最终的状态向量满足一定条件,且总耗时尽可能小。朴素的算法就是从初始向量开始bfs。能想到的简单剪枝是,引入一定的记忆化,如果判断某个状态向量严格劣于另一个就剪掉,避免到处闲逛。另一个想法是给bfs队列加权,衡量当前状态和目标状态的相似度,然后和时间结合作为权值,做一个优先队列bfs。
这东西如果有应用价值,那应该是在tas或者长流程。前者可以保证每一面基本耗时固定,不受概率影响(这样就不用建模成概率分布)。后者则是流程太长,人设计的路线不一定完美。
但是问题是,状态向量的转移要多长时间,这是要人自己去输入的。也就是说把它搞出来有很大成本(虽然搞出来之后维护更新很简单,改一下数据然后在已有结果上跑就可以,已有结果应该会让剪枝很充分),而且只能让已有想法最优。像酸泪线这种,如果最初根本没有这样的跑法,也就不会输入到算法里,也就不可能生成出来。不过这种东西,简化一下应该能当个大模拟题。