找回密码
 立即注册
搜索
热搜: 活动 交友
查看: 1538|回复: 5

今年参赛程序思路

[复制链接]

8

主题

14

回帖

77

积分

版主

积分
77
发表于 2-9-2025 10:56:03 来自手机 | 显示全部楼层 |阅读模式
本帖最后由 Ray 于 2-9-2025 11:04 编辑

如题,
楼主今年把21年的参赛版本拿出来增加了一个开局库,没有其他修改,提交了模拟赛和正式赛。

21年的参赛版本用了ab剪枝,没有用算杀,没有用hash,没有用kmp(其实一个棋盘剖成两组19个长19的串和两组长1 2 3 4 ... 18 19 18 ... 4 3 2 1的串,用kmp➕递归(可以想想为什么要递归)可以很快评估棋盘状态,一个点可以更快判断)

此外21年的代码在至少三个被经常调用的函数中复杂度表现不佳,可优化,并且存在跳步的冲四无法正确识别的问题。

上述问题中,第二段的问题已经在新版本中实现,新版本也有着更佳的效率和更优的复杂度。第三段这个冲四没改是能力不足,因为我已经看不懂自己写的棋型判断函数了。以前留下的屎山过于难以维护,希望大家引以为鉴,注重代码规范和加上必要的注释。

楼主加上了上述算法(这样可以绕开原有的棋型判定),把深度和宽度拉大(从比赛时的6-15拉到12-20)打了一组黑先开局库,7~13步不等(取决于优势程度,但是并没有算到必胜再结束,这太无意义了),移植到21年的版本上,可以O(1)搜索较优开局。

其实黑先无禁必胜已经是一个closed problem,实现这个目标成本最低的方法就是算到可杀的开局库➕算杀,甚至不需要很好的前期评估函数,因为开局库已经解决了前期评估问题。更有挑战的问题是,如何在没有开局库的情况下实现必杀。

另,有兴趣的同学可以去github搜一下gomocup比赛中大佬们开源的代码,棋力很强,启发函数并不复杂,复杂的是如何搜索(有很多种不同的搜索函数 什么时候用哪个),如何搭建好的架构,如何符合逻辑,有先后地调用自己创造的函数。

祝大家玩得开心

6

主题

22

回帖

80

积分

注册会员

积分
80
发表于 2-9-2025 12:20:54 来自手机 | 显示全部楼层
实际上gomocup上面的大神全是c++写的
只有我们在这里用python
天然劣势,没辙

8

主题

14

回帖

77

积分

版主

积分
77
 楼主| 发表于 2-9-2025 13:57:43 | 显示全部楼层
附上和刘老师聊天中的两段话:
“我觉得重要的是有更多人赢自己的程序,而不是去赢更多人的程序”
“学弟学妹可以一起动脑筋 特别上进的去github学学人家真正大佬的技术 大佬们比我强很多 比较有动手能力的把解释清楚的算法搞搞好 有这个实现能力也很强”
重要的不是别人写了什么,而是别人的思想方法如何。如果别人写的直接拿来,换变量名换接口,那就是赤裸裸的抄袭。如果是别人写的,自己读懂了重新写一遍,甚至是instruct AI写一遍,那也是对自己有很大提升的。

点评

太有道理,支持  发表于 2-9-2025 14:33

6

主题

22

回帖

80

积分

注册会员

积分
80
发表于 2-9-2025 14:39:28 来自手机 | 显示全部楼层
但提醒一下学弟学妹
github并不都是大神
绝大多数都是很渣的

要学习的话一定要找hyz这种级别的大神
不然可能实力不增反降

8

主题

14

回帖

77

积分

版主

积分
77
 楼主| 发表于 2-9-2025 22:21:16 | 显示全部楼层
总决赛使用了部分新版的程序
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|RealDevClub ( 沪ICP备2024093864号-1 )

GMT+8, 4-12-2025 10:01 , Processed in 0.060556 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表