下载 App

消除王的蒙特卡罗树搜索(mcts)解法初探

修改于2021/01/032807 浏览攻略
0. 缘由
获得消除王的较优解一直是我的愿望之一(所谓较优解,就是大概能上榜的意思)。接近两年前, wall-knight的帖子 已经提出过一种思路(虽然现在来看略粗糙了),在那以后,我慢慢弄懂了召合的消除规则,最近了解到了mcts方法,就尝试了一下,效果是尚可的,凌晨时在第一,现在应该是第二。
TapTap
1.我是消除王的规则
消除王当然符合一般的消除规则,即:
交换:交换怪物位置→ 初始消除→ ①下落→ ②补充→③一般消除→ 如③进行则跳转至①
拖出:拖出怪物→ ①下落→ ②补充→ ③一般消除→如③进行则跳转至①
具体可见于:
消除王的特殊之处在于,其补充队列是固定、每12个一循环的,所以如果初始状态和进行的操作相同,最终的结果就完全一样(这和章节、魔王等是不同的),即消除王不涉及任何随机过程,因此较优解更容易得到,也更容易比较(有排行榜)。
任一步操作之前/之后,我们都可以用沙盘+剩余步数+分数以及目前在补充序列中的位置 来完全描述当前的状态。记作S(table,steps,score,fill_id)。
对于任一状态,我们都可以选择(可以造成消除的)交换或拖出。这样的操作记作a,即:S-a->S'
显然,对于初始状态S0,我们有几十种可选的操作,相应可得到几十种S1,每个S1又对应几十个S2,如果我们将所有可能性画出来,就形成了一棵n叉树。这棵树有多大?以今天(2021年1月3日)的消除王举例,共45步,每步至少算30种可能,即使不算拖紫拖橙加的步数,也有30^45=2.95×10^66种可能。这个数量并不太大,至少比宇宙中原子的数量少得多——我的意思是,当然也比围棋的可能性少得多,围棋尚可以解决,消除王当然要轻松容易得多。我们知道AlphaGo的原理是一个经过了很多优化的蒙特卡罗树搜索(mcts),那么消除王能不能用一个简单的mcts就解决呢?
2.蒙特卡罗树搜索和改动
具体步骤可以参见:如何学习蒙特卡罗树搜索(MCTS)这里不赘述。
一言以蔽之,mcts的大致步骤是,选择,扩展,模拟和回溯,其基本思想是,我们显然不能完整构建出前述的n叉树(除非量子计算机被成功发明),那么就应该选择较有价值的分支进行扩展,其判断依据是:
TapTap
其中v'表示当前树节点,v表示父节点,Q表示这个树节点的累计quality值,N表示这个树节点的visit次数,c是一个常量。这个公式并不难理解,它是选择分支时的一个综合考虑,兼顾先前选择较少的分支+quality值较大的分支。由于目的是分数最高,令quality=η*score,η是归一化参数,如今天的最高分大概是10000+,η=0.0001较好。另一方面,η实际上可以起到调节收敛速度的作用,η较大时收敛快,最终分数可能就较低,反之收敛慢,分数可能高一点;
另外,随机扩展的结果并不好,这里我作出的改动是,只会进行造成消除数最多和次多的交换和紫、橙拖出,消除数最多很容易实现,用fill_id最大的就可(当然理应使用消除数前n的交换,待改进);
模拟时则是简单的在每一步,都任意选择所有可行操作之一,直至没有步数然后给出分数。总的来说不算复杂,希望大家都可以复现成功。
3.一些细节
说一下C++实现时的数据结构好了,复现可以参考,更具体的如果有人感兴趣我会更新在楼下。
首先是游戏状态:
TapTap
操作步骤:
TapTap
这里四个数全正时为交换,x2=y2=-1时就是拖出[x1,y1]
最重要的组成树的node:
TapTap
前两个不解释了;
isAllExplored 主要是为了解决消除完成之后,程序会可能不断选择同样的路线导致重复,因此消除完成时isAllExplored=true,而所有子节点均探索完成之后,父节点的isAllExplored值也为true;parent,children,state不解释;
后面的大致是,对于一个state,我们有若干可选的操作,这些都存储在vector<struct action> feasibleActions中,而任一节点只存储它所选的那个操作的序号,即subNode->parent->feasibleActions[subNode->actId]是subNode的上一个操作。
4.目前的发现
mcts很容易陷入局部最优,我们当然可以设定更小的η来增大搜索的广度,但是会极大提高计算量,而且很可能无法得到更优的结果,因为最优解可能在离局部最优很远的地方——拖橙。没错,mcts不会拖橙,即使限制某个家族不拖紫,因为太菜也无法达到拖橙的效果(最多的时候好像是两紫两蓝)。
总的来说可以改进的地方还很多,慢慢来吧。
5.额外的话
在搞清楚消除规则之后,目前已经做到了:
1)战棋消除,35波时38~45均消;
2)魔王消除,主力14紫+肉盾1橙
3)消除王消除,可以上榜,以后再争第一
还差一个就是竞技场啦,竞技场补充队列随机,而且限时,是最麻烦的部分了,希望有搞定的一天~
零氪新人冲榜的干货!截图
零氪新人冲榜的干货!
首先,我是在前辈攻略的基础上,再加上自己很多次的冲榜经验写给零氪新人的一点心得体会,希望能帮到喜爱这个游戏而又兜兜没钱的兄弟! 感谢这游戏的设计者们,真心良心,我是2026年过年期间冲榜的,钻石七天里收了靠5万,真的太大方了!所以有充足的资源! 1,这游戏的最重要的资源就是体力,上面图片里都是还在游戏的大佬,每天可以领取10-15每个人的体力还有几十万的金币!对新人冲榜有很大优势!每天买2次体力就
33 赞
80 回复
召合为什么要停服
首先,我不是什么“官方人员”,不过是一个玩家而已。当然啦,比起大多数玩家,我可能有更多的和官方交流的机会,所以我在这里凭借自己的个人理解,给大家讲讲我对停服和一些事情的看法。 Q1:为什么召合1要停服? A1: 燃灯提及的客观原因有: (1)召合1有很久在持续亏损了; (2)由于开发工具老旧,很多技术性问题无法解决 对于任何网络游戏,这两点都是致命性的,召合1的停服只是时间问题。 Q2:召合1停服
167 赞
66 回复
关于魔王消除程序的一些说明截图
关于魔王消除程序的一些说明
如某人所愿,我来剖腹证粉了,开心吗? 我真的非常不愿意发这个贴子,因为我真的很忙,我弃坑召合很久了,即使在玩召合的时候,你们可以去问,我有没有加入过任何一个玩家组织?玩家组织的群我只加过两个,都是和萌新教关系比较松散的,萌新教的消除群。名利,我真的气笑了,官方的活动我甚至都懒得参与,有一次我跟橙子说让她给我整个毛球,她都惊讶我居然没有(当然后来厚脸皮要了一个) 我为召合写攻略(https://ww
34 赞
56 回复
白鸡魔强6935无券一次过普通120截图
白鸡魔强6935无券一次过普通120
白鸡6935魔强,今天第一次打120就过了。用的鸡+喵斯特+爆炒/阿布/羊咩咩。第一关我利用天使合出来4橙,其中1个橙鸡,直接拖出来。(第一步至少在天使周围合出3绿,等天使变3橙,第一步失败就等重来不扣体力。) 天赋我用的汲血,没特别注意叠等级,用置换大法合出来一只红鸡。第2关直到最后一关之前,看对面战士厉害就用爆炒弹死,射手厉害就用阿布弹死,1倍速,每关上来就紫鸡或橙鸡开1-2个大过,别点慢了让
6 赞
3 回复
关于装备、宝物属性的选择截图
关于装备、宝物属性的选择
为了解答游戏群里萌新的疑问,专门写这篇攻略。我的游戏ID:1119748,565级,申请都会通过。 本文主要从几个方面来描述装备、宝物属性的选择问题:1、推图;2、秘境;3、魔王;4、补充说明。 1、推图 推图部分比较简单,破防是推图的核心思路(你的家族强度>怪的防御),一般使用射手推图(用战士或肉盾,属于大佬的骚操作而已)。当前推图射手推荐战斗鸡或火芯灵。推图留2套宝物,单魔强一套或单物强一套(
精华
71 赞
49 回复
关于藏宝图碎片获取的建议截图
关于藏宝图碎片获取的建议
首先,此结论适合于手动刷关卡和开通契约可以超级扫荡的玩家。藏宝图碎片每个等级每日可以刷取10个,所以需要10体力,如果你直接快捷获取,那么在关卡中就无法再获得碎片(原来的碎片岛会替换成金币,99章也只有8k左右的金币,很亏),如果你今天准备超级扫荡关卡,不要登陆就快捷获取,而是先超级扫荡完,再去快捷获取藏宝图碎片,可以节省一点体力。#召唤与合成
2 赞
新家族SSS战士哪吒信息全览截图
新家族SSS战士哪吒信息全览
评价:魔力橙Promaxplusultra 基础技能1——适应之力,初始35级加上觉醒和进阶最多点到65级:场上我方无肉盾时血量+140%;场上我方无射手时,伤害+280% 基础技能2——远程格挡,初始35级加上觉醒和进阶最多点到65级:受到的远程伤害-74% 基础技能3——火尖枪,初始35级加上进阶最多点到40级:攻击时34%概率触发,下次攻击升级为突刺,额外+50%伤害并击退。普攻30%概率造
17 赞
14 回复
萌新最新攻略(简单版)
有需要填我邀请码∶11150235
本文旨在打造最适合萌新的简单版攻略
1、从零开始主要流程。
 游玩两章,拿钻石,开至尊箱子(最好能有50以上战斗鸡碎片)
 合战斗鸡——主界面熔炼按钮,每日定向合成50碎片(橙卡在能合成的情况下,留橙子、女巫、神龙、树魔,如果不够合,那么这些也无脑熔),战斗鸡没有出现之前无论你有任何其他红卡都行,用四张红卡合成一张战斗鸡,无脑合,只要推图截图
萌新最新攻略(简单版) 有需要填我邀请码∶11150235 本文旨在打造最适合萌新的简单版攻略 1、从零开始主要流程。 游玩两章,拿钻石,开至尊箱子(最好能有50以上战斗鸡碎片) 合战斗鸡——主界面熔炼按钮,每日定向合成50碎片(橙卡在能合成的情况下,留橙子、女巫、神龙、树魔,如果不够合,那么这些也无脑熔),战斗鸡没有出现之前无论你有任何其他红卡都行,用四张红卡合成一张战斗鸡,无脑合,只要推图
35 赞
26 回复
最近战旗的感想!---9月战旗改版之前的攻略截图
最近战旗的感想!---9月战旗改版之前的攻略
上周接了一单,从45阶打到68阶,红卡均45左右,整体来说,前面半段难度一点没有。 54阶木头人是个关键分水岭。 前面也发帖说过,50阶以前都是跳关打上来的。 45跳47,然后47刻意不跳,然后48福利局跳50,之后50福利局跳52。基本强度足够,跳关很简单。打完54木头人,明显感觉55开始难度上来了。 从55开始,需要刻意去刷带血量的组合技(270血量以上)。 之后分水岭就是61关,10波启动很
投票
11 赞
15 回复
新家族剧透丨三太子降世!截图
新家族剧透丨三太子降世!
脚踏风火轮,手持乾坤圈——新家族哪吒登场!作为一个强力输出型战士,哪吒拥有较高的物理强度与魔法强度,其技能和觉醒让他十分适合与其它战士家族并肩出战。 再看觉醒词条,除了破甲、远程反弹这类最通用的战士基本功,哪吒的神器“风火轮”将助其在战场上逞威四方,莲花塑造的身体亦能在风云诡谲之刻护其周全。 至于具体内容……11月20日,我们游戏里见!
官方
32 赞
28 回复