3 审局
审局是对盘面的评估,这就需要保证审局的知识是准确的,虽然审局可以不全面,但是,使用了错误的知识,必然会导致问题
在我的审局模型中,我对审局划分为包括棋型/倾向性引导/王威胁三种评估
3.1 审局的作用,当引擎稳定后,对杀棋棋步进行测试,我们会发现,能否搜索出杀棋,跟引擎是息息相关,跟审局则是关系不大,但是,盘面危险度的认识,却跟引擎息息相关,所以,我们得出一个结论,审局,只是评估危险度,不要让审局承担提前发现杀棋的工作,多在引擎本身找找原因
3.2 王威胁>倾向性引导>棋型。我把棋型定义为子的摆放位置,倾向性引导定义为子力组合和运子方向,王威胁是对9宫的进攻情况。三者分数如上所述。很多棋型的合理性,在使用了子力表后,在计算中是可以体现出来的,但是,单车和单车士象全这种子力组合,却是无法通过子力表得知的。
3.3 王威胁模型,考虑下图:
| | |
---+--+--+---
---|---+--|---
---+--+--+---
| | |
假如王所在的9宫,是在棋盘的中心,而且兵的方向可以4周移动,那么,车马炮兵对9宫的威胁,是4个方向等价的
但是在实际棋盘中,因为规则限制的原因,9宫在4个方向受到的威胁是不同的,这就表示,棋子的移动方向,对王的威胁有影响
我们知道,车炮受到的影响是较少的,而马兵则很大,分析表明,马到了两边,可以踩到的9宫点明显减少,同理,兵也是,而车炮能踩到的9宫点,则不会变化太多
所以,我们可以得出一个推论,子对9宫的攻击点越多,那么,对王的威胁越大。
我们再来看看防守子,当象挡住了车照王,车对9宫的攻击点只有一个!所以,在我的模型里面,防守子的意义,在于减少对9宫的攻击点!
即,对9宫的威胁,通过攻击点的个数和程度来表示。例如,(炮)->(车)->[士]->[王],这样对9宫的攻击点有两个,因为车炮都双重攻击,所以被攻击的两个点的威胁度很高,(炮)->(马)->[士]->[王]可以有4个攻击点,但是威胁度都比较低,子力组合可以跟攻击点的威力有一定挂钩。
由此,抽象出一个模型,王被威胁的程度=f(进攻的子力组合,进攻的点),对王的威胁评估,只需寻找出上述两个参数,即可查表得知目前被威胁的程度
这种评估是想相当准确的。
3.4 子力组合和运子,当无法对王造成威胁时,子力组合和运子就非常重要了,运子在特定盘面,都有一定的倾向度,所以,搜索前通过调整子力表,即可对运子造成影响,当然,需要准确评估还是eval()可靠,如兵卒的分数调整。子力组合的情况,子少时,就是残局了,中局时,车马马是不如车马炮的,这些都需要有一定提示。
3.5 评估的准确,空头炮在子力充沛时,分数很高,但是子力减少,则威力降低。很多人的空头炮就采用了上述方法进行评估,如果按我的模型来算,则是因为子力减少,导致王威胁出现的机会降低,所以,空头炮如果子力很多但是无法舒展,还强行保持空头炮,会很危险。这就涉及审局准确度的问题。即,多高概率的事件可以采用模糊评估?
上面是我对棋软的一些认识,希望能对大家有帮助。因为本人的理论水平不高,用词不准确,对此抱以万分歉意。