下载 App

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

修改于2021/01/032834 浏览攻略
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)消除王消除,可以上榜,以后再争第一
还差一个就是竞技场啦,竞技场补充队列随机,而且限时,是最麻烦的部分了,希望有搞定的一天~
召合为什么要停服
首先,我不是什么“官方人员”,不过是一个玩家而已。当然啦,比起大多数玩家,我可能有更多的和官方交流的机会,所以我在这里凭借自己的个人理解,给大家讲讲我对停服和一些事情的看法。 Q1:为什么召合1要停服? A1: 燃灯提及的客观原因有: (1)召合1有很久在持续亏损了; (2)由于开发工具老旧,很多技术性问题无法解决 对于任何网络游戏,这两点都是致命性的,召合1的停服只是时间问题。 Q2:召合1停服
167 赞
66 回复
关于魔王消除程序的一些说明截图
关于魔王消除程序的一些说明
如某人所愿,我来剖腹证粉了,开心吗? 我真的非常不愿意发这个贴子,因为我真的很忙,我弃坑召合很久了,即使在玩召合的时候,你们可以去问,我有没有加入过任何一个玩家组织?玩家组织的群我只加过两个,都是和萌新教关系比较松散的,萌新教的消除群。名利,我真的气笑了,官方的活动我甚至都懒得参与,有一次我跟橙子说让她给我整个毛球,她都惊讶我居然没有(当然后来厚脸皮要了一个) 我为召合写攻略(https://ww
34 赞
56 回复
关于装备、宝物属性的选择截图
关于装备、宝物属性的选择
为了解答游戏群里萌新的疑问,专门写这篇攻略。我的游戏ID:1119748,565级,申请都会通过。 本文主要从几个方面来描述装备、宝物属性的选择问题:1、推图;2、秘境;3、魔王;4、补充说明。 1、推图 推图部分比较简单,破防是推图的核心思路(你的家族强度>怪的防御),一般使用射手推图(用战士或肉盾,属于大佬的骚操作而已)。当前推图射手推荐战斗鸡或火芯灵。推图留2套宝物,单魔强一套或单物强一套(
精华
79 赞
54 回复
零氪新人冲榜的干货!截图
零氪新人冲榜的干货!
首先,我是在前辈攻略的基础上,再加上自己很多次的冲榜经验写给零氪新人的一点心得体会,希望能帮到喜爱这个游戏而又兜兜没钱的兄弟! 感谢这游戏的设计者们,真心良心,我是2026年过年期间冲榜的,钻石七天里收了靠5万,真的太大方了!所以有充足的资源! 1,这游戏的最重要的资源就是体力,上面图片里都是还在游戏的大佬,每天可以领取10-15每个人的体力还有几十万的金币!对新人冲榜有很大优势!每天买2次体力就
39 赞
88 回复
帮真萌新和老萌新捋一捋发育思路截图
帮真萌新和老萌新捋一捋发育思路
先说结论:开局随便用什么家族,推普通关卡10章,然后把设置里的不自动合成家族勾上,然后把送的钻石抽掉,先用S卡璐鹿兽/超威蓝猫+S卡恶魔锤手+任意背景板(推荐喵斯特)推图,利用宝箱积分和熔炼凑SSS战斗鸡,然后用战斗鸡+恶魔锤手+喵斯特(或者其他挂件)并推图至101,开始进入游戏中后期。 当前养成图镇楼: 本次召合重新开服,全部需要从头开始,特在此帮各位真萌新和老萌新捋一下发育思路。 针对真的新人
392 赞
145 回复
矿战消了个豹子码截图
矿战消了个豹子码
今天自动消除出了个豹子码[表情_大笑] 有缘的盆友来加个召友:11207270 #游戏日常
1 赞
怪物全+10、建筑全满级后,木头和铁的用途截图
怪物全+10、建筑全满级后,木头和铁的用途
刚刚完成怪物全部+10,之前建筑也全部满级。目前来说没有紧迫的铁和木头的需求了,那溢出的木头和铁要怎么用呢?个人一点思考,供大家参考。 铁可以继续生产元气,木头则生产为铁(但绝不要买木头生产铁,性价比极低),材料商店出来以后,可以选择将元气出售,获取材料市场的货币,买红卡。 我将不同元气的出售价格列了个表,详见图。大家可以看到6级红色元气的出售价格,相对来说性价比最高。也就是说每一个铁可以获得0.
17 赞
21 回复
关于战旗一些学习方向截图
关于战旗一些学习方向
只有学习方向没有攻略 告诉你应该学习什么 新手期无上棋神20-30阶之前 三幻神就够用 具体的看别人写的攻略 冰糖果果写的很好了可以用到 70阶 这个是传送门 https://www.taptap.cn/moment/623529594829407058?share_id=fa645b56332c&utm_medium=share&utm_#source=copylink 初步离开新手村30-50
投票
18 赞
18 回复
这个瞬间移动的有啥技巧吗,前期不会打了,打到第五波就一定会掉血,打到第九波血量就剩一半了。紫卡白卡120左右截图
这个瞬间移动的有啥技巧吗,前期不会打了,打到第五波就一定会掉血,打到第九波血量就剩一半了。紫卡白卡120左右
5 回复
新家族剧透丨三太子降世!截图
新家族剧透丨三太子降世!
脚踏风火轮,手持乾坤圈——新家族哪吒登场!作为一个强力输出型战士,哪吒拥有较高的物理强度与魔法强度,其技能和觉醒让他十分适合与其它战士家族并肩出战。 再看觉醒词条,除了破甲、远程反弹这类最通用的战士基本功,哪吒的神器“风火轮”将助其在战场上逞威四方,莲花塑造的身体亦能在风云诡谲之刻护其周全。 至于具体内容……11月20日,我们游戏里见!
官方
32 赞
28 回复