dragoniye 发表于 2012-8-30 00:12:49

【黑白棋指南】第十三章 尾局数子

  第6章和第8章中,我们看了一些能在尾局时发现好棋的策略。不过很多局面下,找出正确棋步的唯一方法就是做一个精确的计算。你必须能想出棋局剩余部分的棋步顺序,进而算出棋局的最后比分。尽管我研究的技术会尽量降低这个过程的难度,但这仍然需要“预算”的能力,即有能力看出几步后的局面,这对新手大概比较困难。本章的第一部分解释怎样在最后两步时数子,这部分相对简单,即使是新手也不难操作。本章的剩余部分包含一些本书中最难的内容,是为高水平棋手设计的。不管你当前水平如何,练习尾局计算都是提高你预算能力的极佳途径之一,能提升你在棋局各阶段的棋力。附录介绍了几个专门设计来练习尾局的软件。
  图13-1展示了一个通过尾局数子判断最好棋步的典型局面。第一步是数出当前局面下你自己棋子的数目。如果你下的是有时限的棋局,速度就很重要,而且绝不能数错,因此找到一个精确数子的方法也很重要。我个人的方法数出每列的棋子,从右加到左。
(A1b1c1d1e1f1g1H1A2b2c2D2e2f2g2H2A3B3c3d3e3F3g3H3a4b4c4d4E4f4G4H4a5b5C5D5e5F5G5H5a6b6c6d6E6F6G6H6a7b7c7d7E7F7G7H7c8d8e8f8G8h8)
      图13-1      黑先
  例如,图13-1中,黑方h列有7子,加g列5子得12,加f列4子得16,等等。练习后,不用一颗颗的数,看一眼应该就能知道那一列有几子。当然,你也可以从左加到右,从a列开始加到h列。不过你很可能觉得逐列来加比逐行来加要容易一些。另一个方法是以五子为一单位进行数子(这样数:一五,二五,三五…),不过我发现要记住哪些子已经数过了比较难。

  确定了图13-1中黑方有26子后,我们现在计算棋局结束时黑方有多少棋子。考虑黑方下a8后会发生什么(图13-2),然后白方b8(图13-3)。黑方有多少子?图13-2中,黑方有26+7=33子,黑方初始有26子,在左边(a列)增加5子(a4、a5、a6、a7和a8),对角线上加2子(b7和b6)。当一步棋翻转了两个方向或更多的方向上的棋子时,通常这种方式数子容易一点:一次一个方向。图13-3中,白方翻回1子(b7),给黑方留下33-1=32子。因此,如果黑方在图13-1中下a8,最后他会有32子。
(A1b1c1d1e1f1g1H1A2b2c2D2e2f2g2H2A3B3c3d3e3F3g3H3a4b4c4d4E4f4G4H4a5b5C5D5e5F5G5H5a6b6c6d6E6F6G6H6a7b7c7d7E7F7G7H7c8d8e8f8G8h8)a8b8
      图13-1.2.3      黒先

  这种方法:先算出图13-2中黑方有33子然后结束时有32子,我称之为两步法。不过你能省掉一步直接在图13-3中找比分。毕竟,当我们在图13-1中考虑a8这步棋时,我们知道最后白方下b8后黑方是不能保住b7这颗子的。因此,与其先给黑方加上这颗子然后又减去,还不如在初始局面时就不加它要更容易一些。
  如果我来计算这个局面,我会先算出26子,然后在左边加5子得31,接着加上c6的棋子得32。如果你以前没有这么做过,看上去这是“走捷径”一步直接跳到了图13-3,这种方式似乎更难且容易出错。不过,如果你使用这两种方式有了岁月后,我向你保证裁掉多余的一步会让你算得既快且准。当我们考虑图13-1黑方先下b8后会发生什么时,两种方法之间的差异会更明显。

  图13-1黑方先下b8,结果见图13-4。白方下a8结束对局(图13-5)。黑方有几子?图13-4中,黑方有26+14=40子。黑方先有26子,底边加5子(b8、c8、d8、e8和f8),斜线上加5子(c7、d6、e5、f4和g3),b列加4子(b4、b5、b6和b7,注意b8已加过了)。图13-5中,白方翻回7子(b7、b8、c8、d8、e8、f8和g8),留给黑方40-7=33子。因此,如果黑方在图13-1中下b8,棋局结束时它会有33子。因为a8留给黑方32子而b8留33子,b8是更好的一步棋。
(A1b1c1d1e1f1g1H1A2b2c2D2e2f2g2H2A3B3c3d3e3F3g3H3a4b4c4d4E4f4G4H4a5b5C5D5e5F5G5H5a6b6c6d6E6F6G6H6a7b7c7d7E7F7G7H7c8d8e8f8G8h8)b8a8
                图13-1.4.5      黒先
  现在换用一步法来计算图13-5中的棋子数。 先是图13-1中的26子,黑方在斜线方向加5子(c7、d6、e5、f4和g3)得31,加b列3子(b4、b5和b6)得34。最后,当白方下a8,黑方失去g8的棋子(注意完全没有加上底边的棋子,因此现在没必要减去它们),棋局最后黑方会有34-1=33子。个人认为,这种方法比先算26+14=40,然后算40-7=33的方法要容易得多。
  我现在要提到另外一种数子法,我称之为加/减法。上面,我们以先下a8和b8比较了棋局最后的棋子数,判断出b8更好。另一种替代方法是计算得失的子数。比较图13-1和13-3,我们看到棋局最后,黑方下a8得6子(a4、a5、a6、a7、a8和c6)。比较图13-1和图13-5显示黑方下b8得7子(8颗新增子c7、d6、e5、f4、g3、b4、b5和b6,但失去了g8的棋子)。再一次的,因为下b8(+7)所得比a8(+6)更多,我们知道b8要更好。
  使用加/减法的优势在于不需要在图13-1时数出黑子的数目。如果a8是+6并且b8是+7,那么b8更好,这就行了。如果给我5秒时间判断正确棋步我会用加/减法,在图13-1中数出26颗黑子可能都要花我10秒钟。不过,如果你确实很烦在初始局面中数出棋子数的话,加/减法实际上仍会让你最后时刻必须数子。在我们的例子中,b8是+7,那么最后数子也就是初次数子了。26,加7,那么这次要数33子。
  
  如果你不打算计算超过2格空的局面,那么加/减法大概要优于数子法。在你开始计算较长的棋步顺序时,数子法的主要优势会显现出来。通常的原因不是判断出最佳步,而是找到一个足够赢棋的棋步。如果你数子,并且发现一个棋步顺序让你有33子,那么你知道你能赢。如果你发现一个棋步顺序+10,足够赢棋吗?确定的唯一办法还是数出原始局面中的棋子数,这样又拿走了加/减法的主要优势。实际上,当我使用加/减法时,我通常有一个“目标”分数告诉我要多少才能赢。在我们的例子中,先有26子,目标是+7,这就是说,如果我找到了一步棋分数是+7或更好,那么我知道我能赢。不过,当你对很多可能的棋步顺序进行长考时,把目标分数记好有点困难。而当数子时,很明显33子会胜。
  
  加/减法的另一个缺点是:在你考虑丢子的局面时可能会被弄糊涂。假设你现在有45子不过棋局剩余部分会不断丢子。很明显33子结束优于32子,但是-12优于-13?心算“45减5得40,减5得35,加2得37,减4得33”比心算“负5减5得负10,加2得负8,减4得负12”要容易。
  
  因为你可以一步的或两步的来算,还可选择数子法或加/减法,所以有4种不同的数子方法。尽管我强烈建议你用一步法而不是两步法,但不管你是用数子法还是加/减法完全是个人习惯问题:每一种方法都可以练到很有效。返回到我开始下黑白棋的时候,那个史前恐龙时代,我所知的每个人都用两步、加/减法,并且直到今天有一些专家仍用这种方法计算。大概1990年我换用一步加/减法。2000年时我最终改用数子法。有过使用所有方法的经验,我建议在考虑长的棋步顺序时用数子法而不是加/减法。

dragoniye 发表于 2012-8-30 00:13:14

相消法

本帖最后由 dragoniye 于 2012-8-30 00:33 编辑

  不管你使用哪种方法计算的,一个我称之为相消的技术能使计算更简单。考虑用加/减法计算图13-6所示的局面。考虑棋步顺序黑a8,白b8,通常我们会说黑方得了2子(a7和a8)+2,丢了2子(b5和b6)得0。用相消法,我们心算时将得到的子(a7和a8)和丢掉的子(b5和b6)配对,马上就得到了结果0(见图13-7)。为了算出黑b8,白a8棋步后的结果,我们可以把得到的4子(例如c7、d6、e5和f4)消去丢掉的4子(c6、d5、e4和f3),多留下一个g3的棋子。因此,这个棋步顺序对黑方是+1(见图13-8)。


  相消法在当相消的棋子相邻或靠近时,即类似于图13-8的局面时最好用。如果棋子位于棋盘的两边,我发现不用相消法,直接计算更好。如果你必须把目光在棋盘的两部分上来回切换,排列起哪些棋子要被消去,会很容易犯错。

  一种例外是可用于当边上有大量棋子可以相消时,例如图13-9。当考虑黑a8,白b8时,可以消去5颗边上棋子,得出结果+1。如同我在本章中所强调的,通过多练习,经验会告诉你这个技术对你来说是否会使数子变易。

dragoniye 发表于 2012-8-30 00:13:19

剪枝法

本帖最后由 dragoniye 于 2012-8-30 00:48 编辑

  在上面的例子中,仅有两个空格,一旦黑方选择了一步棋,最终结果就确定了,因为白方只用填入最后的空格。当你开始考虑有更多空格的局面时,你的对手也可能有多个选择,那么很自然的,你不仅要考虑自己的棋步,也要考虑对手会怎样回应。即使仅剩3个空格,都可能使找出最佳步难上很多。例如,考虑图13-10。

  白方可以选择3个空格中的任何一个,并且在他落子后,黑方也能在余下的2个空格中任选一个。这意味着有3×2=6种可能的棋步顺序要考虑。见图13-11,白方的每一种可能的棋步顺序及白方最后得子数都显示在图上(例如,第1个分枝是白a7,黑a8,白b8,白方最后有30子)。有了这些信息,哪些是双方的最佳步?
  如果白方先下a7,那么黑方从a8和b8中选择。如果黑方下a8,那么白方最后有30子,意味着黑方有34子。如果黑方下b8,那么白方最后有29子,黑方有35子。黑方自然会选择自己子多白方子少的棋步。因此,如果白方先下a7,黑方应b8,那么白方最后有29子。类似的,如果白方先下a8,黑b8,白方得33子。如果白方先下b8,黑方的两个应手会有相同结果,白方得31子。因此白方下a8能得33子,但a7只有29子,b8只有31子。白方在图13-10中的最佳步是a8,黑方会应b8。
  上例显示出在尾局中对手有多种选择时,数子会变得多么的复杂。好消息是在练习中,我们使用剪枝可以在相当程度上简化这个过程,在图13-10中找出最佳步不是那么的困难。假设你执白,没有图13-11的信息。第一步是数出当前局面白方的棋子数,24。第二步,你必须考虑三个选择中先计算哪一个。通常,你想先考虑的那步棋,是你还没计算的情况下一眼看上去最好的。假设你决定先下b8,图13-12展示结果局面,白方30子(当然,实际对局时你应能在脑海中看到此图)。
(A1B1C1D1E1F1G1H1A2B2C2D2E2f2g2H2A3b3c3D3e3f3g3H3A4b4C4d4E4f4g4H4A5B5C5D5e5f5g5H5A6B6C6d6e6f6g6H6B7C7d7E7F7G7H7C8d8e8f8g8h8)b8a8a7(A1B1C1D1E1F1G1H1A2B2C2D2E2f2g2H2A3b3c3D3e3f3g3H3A4b4C4d4E4f4g4H4A5B5C5D5e5f5g5H5A6B6C6d6e6f6g6H6B7C7d7E7F7G7H7C8d8e8f8g8h8)a8
      图13-10.12.13      白先                                                                图13-10.14      黒先

  如果我们依照图13-11的逻辑,我们现在必须为黑方考虑最佳步,只有这样才能知道白方最后有多少子。练习中,最好算黑方下a8白方a7后的最后比分,因为这显然比黑a7白a8要容易一些。黑a8白a7后,白方唯一的改变就是在a7多了一子。因为白方在图13-12中有30子,图13-13中白方是31子。现在,确认在图13-10中白方下b8得到了31子,我们继续考虑图13-12中黑方选a7的结果,也许a7对黑方更好,那么白方会少于31子。即使不用计算a7后的棋步,有一件事也已经很明显了:白方先下b8会输。唯一的问题是他会输多少,与其花时间把它算出来,还不如去尝试图13-10中的其它选择。现在假设你决定下a8,局面见13-14,这时白方有29子。
  再一次的,我们必须决定先算黑方哪步棋。本例中,b8看上去是明显的选择,保住了底边的两颗子。白方a7,最终局面见图13-15。把这个和图13-14比较,白方得了4子(a7、b6、c5和c7),总共留下33子。因此,看起来图13-10中白方先下a8会胜。不过,我们必须确认图13-14中b8就是黑方的最佳步。如果黑方换做下a7,那么白方b8(图13-16)。比较图13-14和图13-16,白方得了5子(b5、b6、b8、c7和c8),最后34子。因此,如果白方先下a8,黑方没有比b8更好的选择,白方会33:31胜。
(A1B1C1D1E1F1G1H1A2B2C2D2E2f2g2H2A3b3c3D3e3f3g3H3A4b4C4d4E4f4g4H4A5B5C5D5e5f5g5H5A6B6C6d6e6f6g6H6B7C7d7E7F7G7H7C8d8e8f8g8h8)a8b8a7(A1B1C1D1E1F1G1H1A2B2C2D2E2f2g2H2A3b3c3D3e3f3g3H3A4b4C4d4E4f4g4H4A5B5C5D5e5f5g5H5A6B6C6d6e6f6g6H6B7C7d7E7F7G7H7C8d8e8f8g8h8)a8a7b8
      图13-15      结果白33子                                                图13-16      结果白34子
(A1B1C1D1E1F1G1H1A2B2C2D2E2f2g2H2A3b3c3D3e3f3g3H3A4b4C4d4E4f4g4H4A5B5C5D5e5f5g5H5A6B6C6d6e6f6g6H6B7C7d7E7F7G7H7C8d8e8f8g8h8)a7
      图13-10.17
 现在你判断出白方下a8会胜,你也许会就此打住,下a8。不过,如果你要确定a8的确就是最佳步的话,那么你还必须考虑图13-10中白方最后的一个选择,也即a7(图13-17)。图13-17中白方仅有29子,显然白方得子不可能超过33(白方先下a8的结果),白方可以拒绝a7,接受a8。
  上面的分析显示,为了找出最佳步,并不需要计算完所有分枝。例子中我们考虑了6种分枝中的4种,而在某些例子中,很可能只考虑一小部分分枝就找到了正确的棋步顺序。特别是当我们愿意接受任何能赢的棋步,而不是追求绝对的最佳步时,这一点尤其正确。不过,分枝确实把计算弄得更复杂,这也是为什么专家棋手通常不用剪枝法寻找获胜棋步顺序的原因。下一节会展示一些例子。
      




dragoniye 发表于 2012-8-30 00:13:24

算多格

本帖最后由 dragoniye 于 2012-8-30 01:02 编辑

  本节描述计算局面多于2空格时的技术。本章第一部分提到过,只剩两格时都有几种计算方法,那么自然的,当考虑长的棋步顺序时可能有更多的变化。下面一些例子,先介绍一下我是怎样计算一个局面的。但是,我绝不会说这就是唯一正确的方法。通过练习和经验,你可以发现哪种方法最适合你。
  在前面剪枝的那一节,我们看到了计算多于2格时不仅要算出一个棋步顺序,还需要考虑选择哪个棋步顺序来算。图13-18中,黑方有3个选择,每个选择后白方也有3个选择,再之后黑方有1个或2个选择。幸运的是,我们不必为计算所有可能的顺序而烦恼。计算这个局面的关键在于运用偶数理论(见第8章)来帮助找出正确的棋步顺序。
(b1c1d1e1f1a2B2c2d2e2f2g2a3b3c3d3e3F3g3h3a4B4c4D4e4F4g4h4a5B5c5d5E5f5G5h5a6B6c6D6E6F6G6h6a7b7c7d7E7F7G7h7a8B8C8D8E8F8G8H8)h2a1
      图13-18.19.20      黒先
  不管黑方在图13-18中下到哪儿,右上方区域都会剩2格,左上区域剩1格(a1)。偶数理论告诉我们白方可能会下a1,让黑方先下入最后的空格对。考虑更进一步,如果黑方先下h2,会形成一个黑方无法下入的偶数区域(逆转奇偶),因此即使白方继续下a1,白方还是必须先下入这个区域。因此,实际上是在黑h2白a1后开始计算的。结果局面见图13-19。现在的问题是,白方想下到哪里?g1还是h1?
  处理这个局面至少有两种方法。一种是对图13-19数子,考虑这个局面下的两个棋步顺序(白g1黑h1和白h1黑g1)。使用这个方法的话,我们必须判断出图13-19中的黑子数目。为了这么做,我们首先要数出图13-18中的黑子数,即23。黑方下h2后右边(h列)得6子(h2、h3、h4、h5、h6和h7),加g3得30,在第二行得5子(c2、d2、e2、f2和g2)得35。白方下a1翻转了b2,给黑方在图13-19中留下34子。现在我们知道了这个数目,我们可以算出白方两种选择后得最后结果。首先,如果白g1黑h1,那么黑方丢掉了f2和g3得32,加h1得33。如果白h1黑g1,那么黑方丢掉f3得33,加g1得34。因此,图13-19中白方没有比g1更好的选择,并且黑方33:31胜。
  另一种方法是在计算之前判断出对白方来说哪步棋更好。本例中,我们可从从白方的角度看,用加/减法。再次从图13-19开始,白g1黑h1后,白方得3子(g1、f2和g3)。如果换做白h1黑g1,白方得2子(h1和f3)。因此,图13-19中,我们假设白方会下g1。那么我们就准备从图13-18开始计算(这时我们要这个局面黑方23子)。整个棋步顺序是黑h2、白a1、黑弃权、白g1,黑h1。首先,我会重要到棋局结束黑方有了整条右边,得到7子(h1、h2、h3、h4、h5、h6和h7),30子。另外加g2得31,第2行上加3子(c2、d2、e2)得34,减b2得33。
  通常我更喜欢前面的一种方法,因为容易一些,尽管后面一种方法可能稍快一点,因为我们直接根据最终局面计算的(前面一种里,我们把f2和g3加给黑方,之后又减去它们)。练习会告诉你哪种方法更适合你,但是我相信,使用后面那种方法,必须在脑海里想清楚最终局面,当空格数更多时这会变得非常困难。此外,有时图13-19这样的局面,你能立刻判断出是胜还是负。我们的例子中比分很接近,因此我们在图13-19中必须考虑白方的棋步。不过,如果黑方这时有38子,那么我们不用计算就知道黑方会胜。或如果黑方26子,我们知道黑方会负。
  计算出黑h2白a1黑方会胜后,h2后怎样下就很简单了(图13-20),不管白方下到哪里黑方都能胜。本例中,右上区域(g1和h1)和左上区域(a1)是各自独立的。这就是说,不管白方先下a1还是先下右上区域,翻转的棋子都是相同的,不改变结果。因此,如果白方不下a1换做下g1,黑方最后还是33子。
  如果我们要检验h2就是黑方在图13-18中的最佳步,那么我们必须考虑黑方其它的选择,也即g1和h1。上面提到过,偶数理论告诉我们,白方肯定会先应a1。黑h1、白a1、黑h2显然是最好的选择。黑g1、白a1后,最后两步(黑h2白h1)是强迫性的。因此,我们需要考虑两个棋步顺序,即h1a1h2g1和g1a1h2h1。这个留做练习,不过不难验证出没有哪一个能得33子。最后,只需在图13-18中下h2结束棋局后验证一下。
  图13-21展示我在2001年世锦赛中一个对局中的局面。在这个局面中找出并验证最佳步并不容易。在WZebra中布下这个局面,它在选h1前搜索了3440种棋步顺序。实际对局时我没有下这步棋,但是我找到了一种能胜的棋步顺序,而且相当容易计算。首先,我数出白方有19子。看着这个局面,我想a3是一步好棋,吃下4颗内子(b4、c5、d6和e7)。黑方只有一个选择a2,白方留有23子。
(D1e1F1G1C2D2e2F2B3C3D3E3F3G3H3A4B4C4d4e4f4G4H4A5B5C5D5E5F5g5H5A6b6C6D6e6F6g6H6A7b7c7d7E7f7G7H7A8b8c8d8e8f8g8H8)a3a2(D1e1F1G1A2C2D2e2F2A3B3C3D3E3F3G3H3A4b4C4d4e4f4G4H4A5B5c5D5E5F5g5H5A6b6C6d6e6F6g6H6A7b7c7d7e7f7G7H7A8b8c8d8e8f8g8H8)b1c1
      图13-21      白先                                                                图13-22      白先
  现在,左上区域是黑方无法下入的偶数区域,对付这种区域的唯一办法就是送吃棋步(见第8章)。我决定考察b1,给了黑方两个选择,b2和c1。不过b2很糟糕,让白方可以连下h1、c1和a1。因此,黑方必须下c1。这两步给白方加了两子b1和b3,不过黑方最终会下a1翻转b1。因此我只加了b3,得24子(图13-22)。剩下的棋步见图13-23,很容易算出并且黑方没有其它选择。白方在左上加5子(b2、c2、d2、b3和c3)得29,加右上4子(f1、g1、h1和h2)得33。本例中,我真的只需计算一种棋步顺序来找到可胜的棋步顺序。
(b1C1D1e1F1G1A2C2D2e2F2A3B3C3d3E3F3G3H3A4b4C4d4e4f4G4H4A5B5c5D5E5F5g5H5A6b6C6d6e6F6g6H6A7b7c7d7e7f7G7H7A8b8c8d8e8f8g8H8)h1a1b2h2g2
      图13-23      白先

  

dragoniye 发表于 2012-8-30 00:13:29

习题

本帖最后由 dragoniye 于 2012-9-8 23:47 编辑

习题1 : http://hbqhome.com/thread-379-1-1.html
习题2 : http://hbqhome.com/thread-380-1-1.html
习题3 : http://hbqhome.com/thread-381-1-1.html
习题4 : http://hbqhome.com/thread-382-1-1.html
习题5 : http://hbqhome.com/thread-383-1-1.html
习题6 : http://hbqhome.com/thread-384-1-1.html

页: [1]
查看完整版本: 【黑白棋指南】第十三章 尾局数子