象棋中的技术主要分为2类,一、蛮力搜索,二、象棋知识的表示。目前网上大量的文间论及蛮力搜索技术,这些技术都很先进,也很正确,本文不涉及此项内容。对于象棋知识的表示,则内容与**相对少得多,大家都只是说要用到浅层搜索,局面评价函数什么的,但是几乎谁也没给出具体的编程的例子,本人由于象棋水平实在差得可以,所以也无法给出局面评价函数的实例,不过本人致力于知识的表示的研究,相信对象棋的知识表示还有略有效果的。为了论述方便,我们先从残局入手,介绍一下什么是象棋知识。在残局中,大家都知道,由于待选的棋步较少,因此可以进行更深ply的搜索,并与此相应引入一些特殊的技术,故而最终出现专用于残局的搜索算法。很多象棋软件就是这样处理的,在主搜索函数搜索到各叶结点时,判定是否是残局,如果是则用残局专用搜索函数来评价。但是,这实际是对残局错误的处理方法,在残局我们为什么要用搜索算法呢?完全可以应用知识来解决问题。会下象棋的人都知道,象棋残局经历多年的发展,其实早就有必然的结论了,(本人以前不知,后来才知道~)对于五子,甚至是6子还是多少子,本人不清楚,反正就是必胜或必败的了。比如说,单车必胜单马。。。如果有此必然性的结论存在,我们为什么还需要蛮力搜索呢?我们只要判定给定的局面,是否是我方一车对方一马,即可立即给出必胜或必败的结论了!!这就是知识的应用!
|