作为一个会写AI象棋,但是下象棋一般般的IT行业工作人员谈一下个人观点,写象棋AI很厉害 ≠ 下象棋很厉害,为什么呢?
其实象棋AI并没有你们想的那么高深,一个 AI 版本的中国象棋实现只需要实现如下几点便能达到比较厉害的水平:
1、写一个比较好的 评估函数,说白了,就是给电脑一局对弈的当前局势,然后告诉他一个根据当前局势计算得分的固定算法,让他将己方能走的所有情况计算出来,然后选得分最高的招式作为下一步招式就可以了,而这个根据当前局势计算下一步每一种局势的算法(方法)就叫做 评估函数。
2、以上的方法已经能够实现一个简单的电脑自动下棋,但是它还比较初级,因为只会考虑下一步如何下棋,而不会考虑下下步棋该怎么走,这时候就需要想办法让机器不仅要考虑下一步棋局的好坏,而且还要考虑下下步该怎么下棋,这个时候需要用到一个博弈树的搜索算法,说得比较简单易懂一些,就是如果 我是方式红方(真人),对方是黑方(机器),则我方想要下一步走更好的棋,就需要假设黑方下一步会走一步对我最不利的棋,而我们下一步就需要根据黑方走的这一步最不利的棋走一步最好的棋,这样,我们就考虑得更深一层了,并且也能已经做好了最坏的结果的最好打算了,我们能这样想,及其也能这么做,而这个算法就是 极大极小算法,当然,依据我们的数学知识,能猜测得到结果可能有很多,但是依赖于计算机计算能力特别强大,再配合一些不可能走法的排除算法(如: α-β剪枝), 层次10层以内还是没啥问题的。
3、上述两步之后,AI 的水平已经是业余水准中的高级水准了,如果评估函数足够优秀,考虑下一步考虑得足够深,其实也和专业水准有得一战之力,当然,专业的象棋人员可能会懂得更多的套路,故意走一些差棋欺计算机上当,这个时候就需要利用棋谱,机器学习之类的东西训练机器,自己上当过的招式就不要再走了。
ok,经历过上3步之后,AI 版本的象棋已经比较拽了,但是实现这个算法的我呢,下棋并不厉害,我知道应该怎么通过数学计算得到最好的招式,但是这计算量太大,不借助机器几乎无法在短时间计算出来,估计没走几步就饿晕了!
好了,这就是我的个人观点,希望对你有所帮助!!!