利用电脑学象棋的一点想法

本来觉得,这辈子如果没有足够财力,聘请教练一对一辅导,象棋是不可能入门了。但是现在想,如果有合适的软件,自学也有可能学到一定的程度。因为现在资料很丰富,棋谱多如牛毛,如果加以充分利用,或许可以取得一点成绩。

最理想的软件(和硬件)当然是参加象棋软件大赛的那些软件和硬件。显然也需要很多钱(至少几万吧)才能达到。没那么多钱玩这个,只好找别的,最好是免费软件。

需要用到的软件主要是:1. 打谱软件 2.对弈软件

首先说打谱软件。打谱软件显然比手工下棋方便,节省时间。现在比较常用的打谱软件中,象棋演播室(XQStudio)有源码,比较容易利用。象棋桥没有公开源码,但是它的棋谱可以转成象棋演播室的格式,所以只要能够解析象棋演播室的格式,也就能利用象棋桥的棋谱。但是象棋演播室有不少局限,所以打算参考它的源码,也做个自用的打谱软件。关键的功能是:

1. 支持语音和图片注释。着法的注解非常重要。注解好比是老师的指点,明白这步棋是好棋还是坏棋,为什么要这样下。象棋演播室只支持文本,这样现在很多扫描版的棋谱以及视频资源就不能充分利用。

2. 支持导入象棋演播室的棋谱(.xqf)

3. 支持多棋谱的连接或者相互参考(cross reference)。虽然有人制作了一些开局谱,但是如果要将新的着法补充进去就很麻烦,好像目前只能手工录入。而且,棋谱的汇入显然受到内存的限制,棋谱太大了,打开和运行可能会有问题。这里可分成3个子功能:

1)自动监测可连接棋谱的功能。比如两个棋谱,前面10步的着法完全一样,那么就可以在第11步用增加变着的方式,把两个棋谱连接起来。而前10步着法的注解也可以汇合起来。

2)静态连接棋谱的功能。就是把两个棋谱合成为一个。

3)动态连接棋谱的功能。就是不物理合并,而是添加一个类似指针的东西,指向另一个棋谱,动态加载。

4. 一些辅助的功能。比如ocr扫描版的棋谱。关键问题就是识别率。Tesseract支持通过训练数据来学习,但没有提供增量学习的功能。它是开源的,不过要修改估计要花不少时间。另外,视频资料如何利用。最简单的就是手工转换成文本,显然较费时间。但是自动处理的困难也不小。有些视频上没有人,只有棋盘棋子,相对容易一点。想到的一个办法是先用软件连续截图,然后解析这些图片,转成着法。配讲解也挺麻烦。

合成的作用主要是构建比较完整的开局走法。比如最常见的中炮过河车对屏风马平炮兑车,如果构建了比较完整的开局着法,搞熟了,肯定对布局的一些原则和技巧加深了理解。在此基础上再逐步熟悉其它一些常用开局,肯定长棋力。对于脱谱的着法,就要用到下面说的对弈软件了。

再说对弈软件。理想的软件是能够显示电脑的思考过程,并且能够保存,处理。比如电脑根据当前局面,计算出10种下法,然后分别打分。如果把这个思考过程记录下来,无疑是很有价值的。

如果这个难以做到(因为一则软件要支持这个功能,二则需要有足够的开局库,这个免费估计就难以做到了),对于我这样的水平,一个很老的软件《将族》用来训练已经绰绰有余了。先修改成可以无限悔棋,然后和电脑对弈。为了方便同步到文本棋谱,可以考虑利用windows的语音识别功能,先训练好,然后下棋时同步念出着法,这样可以自动生成文本着法,或者可以自己定义一个简单的输入法。如果别的软件没有悔棋功能,则可以利用虚拟机的快照功能,下一步前先建个快照,然后走一步,如果走错了,就恢复快照还原。

简单地说,就是“基于理解的记忆”的学习方法。在软件的帮助下,记住合理的着法,并慢慢体会出象棋之道。传统的学习方法,主要也是读谱,拆棋和实战对弈这几方面。利用打谱软件,方便了读谱和拆棋。在水平不高的时候,自己拆棋比较辛苦,因为难以知道走的是正着还是坏着。特别是容易走出脱谱的着法,又不知道对方可以怎样应对。在对弈软件的帮助下,就可以试走脱谱的着法,然后把着法记录下来。一般的棋谱不可能罗列所有可能的走法,用对弈软件可以在一定程度上弥补这个缺陷。另外,棋谱主要的优势是布局分析,但中局的下法就只能举几个例子。利用改进后的打谱软件和对弈软件,就可以大大丰富中局甚至全局的棋谱。而且,利用可以无限悔棋的对弈软件,可以较早地察觉错着,而不会下完全局,还不知道哪一步是关键错着,还要回过头去分析。和真人对弈,即使知道哪步走错了,要验证自己的判断,纠正错着,试验正着 ,只能再下一盘棋,而用可以无限悔棋以及保存局面的对弈软件,就可以随时纠正和检验,无疑效率高很多。

当然,对弈软件毕竟不能代替和真人对战。因为软件的算法可能有盲点,水平也可能不如真人。不过,在打谱软件和对弈软件的训练下,应该可以达到一定的水平。

猜你喜欢

转载自www.cnblogs.com/badnumber/p/11386505.html
今日推荐