跳转到内容

电脑围棋/Tromp-Taylor规则

来自维基教科书,开放的书籍,面向开放的世界
  1. 围棋在19x19的方形网格上进行,由两个玩家,黑方和白方,进行。
  2. 网格上的每个点可以是黑色、白色或空。
  3. 一个点P,不是颜色C,被称为到达C,如果存在从P到C颜色点的(垂直或水平)相邻点路径。
  4. 清除颜色是指清空所有未到达空点的该颜色点。
  5. 从空网格开始,玩家轮流下子,黑方先行。
  6. 回合可以是弃权;或是不重复先前网格着色的行动。
  7. 行动包括将一个空点着色为自己的颜色;然后清除对手的颜色,再清除自己的颜色。
  8. 游戏在连续两次弃权后结束。
  9. 玩家的得分是其颜色点的数量,加上只到达其颜色的空点数量。
  10. 游戏结束时得分更高的玩家获胜。得分相等则为平局。

来源: 约翰的围棋页面

Tromp-Taylor规则最常见的批评是它们没有描述从棋盘上移除“死子”的方法。如果要求两位玩家都必须下到棋盘上所有棋子都活为止2

  • 游戏玩起来或看起来会非常乏味
  • 一旦两位玩家都知道游戏最终的结果,继续玩下去就成了浪费时间
  • 按照日本规则设计的电脑程序,甚至可能无法在没有重大重新设计的情况下玩到那个地步

移除死子

[编辑 | 编辑源代码]

注意:根据Tromp-Taylor规则,在连续两次弃权后,不会移除任何棋子!

在连续两次弃权后,如果双方都同意某些棋子最终会被吃掉,则将这些棋子从棋盘上移除。但是如果棋盘上存在一方认为最终会被吃掉,而另一方不同意的棋子怎么办?

注意:在实践中,人类之间产生分歧的情况极其罕见。新手玩家经常在判断哪些棋子最终会被吃掉方面犯错,但他们通常不会产生分歧。在电脑围棋中,这是一个更为严重的问题,因为新手程序的水平低于任何人类。对于大多数人类玩家来说,那些弃权后却在哪些棋子是活棋方面意见不一致的程序,会让电脑围棋显得荒谬。

第三方调解

[编辑 | 编辑源代码]

最简单的解决方案是在出现分歧的情况下使用第三方。第三方可以是人类裁判,也可以是能够自动判断哪些棋子最终会被吃掉的电脑程序。

潜在问题

  • 第三方可能会出错或有偏见,尤其是第三方是电脑程序的情况下
  • 让第三方裁判可能会过于耗时或需要过多资源(例如,在大规模锦标赛中,或在每分钟结束数百场游戏的自动化服务器上)
  • 甚至可能没有可用的第三方

中国规则

[编辑 | 编辑源代码]

在连续两次弃权后,如果出现分歧,则必须通过实际对弈来解决分歧。在程序环境中,这可能看起来像这样

  • 两位玩家都提供一个他们认为最终会被吃掉的棋子列表。
  • 如果列表不同,则继续对弈,由首先弃权的玩家先行。
  • 如果两位玩家都立即再次弃权(从而形成连续四次弃权),则游戏结束,棋盘上所有棋子都被视为活棋。
  • 如果在游戏后期,两位玩家再次弃权,则重复此过程。

注意,这永远不会导致无限循环,因为每次通过此过程,都必须在棋盘上添加一个棋子,否则游戏结束。

潜在问题

  • 在限时比赛中,一方玩家可能在试图吃掉明显是死子的棋子时超时而输掉。在某些情况下,“清理”行动可能涉及生死问题,尤其对电脑程序来说,需要相当长的时间才能正确地进行。

日本规则

[编辑 | 编辑源代码]

在连续两次弃权后,分歧必须通过继续对弈来解决,这与中国规则类似。但是,由于这可能会改变地盘计分下的游戏得分,因此必须将两次弃权结束时的棋盘位置复制到另一个棋盘上,并在该棋盘上解决有争议的位置。然后,将任何有争议的棋组(活棋或死棋)的最终状态应用到原始棋盘上的该棋组,并丢弃第二个棋盘。

潜在问题

  • 除了中国规则解决方案中存在的问题之外,复制棋盘位置以进行有争议的位置对弈也是不方便的。大多数电脑程序并没有为这类争议解决设计,大多数协议也并没有为其设计。

KGS电脑围棋锦标赛规则

[编辑 | 编辑源代码]

KGS电脑围棋锦标赛规则本质上与中国规则相同,只是在第一次出现分歧后,建议玩家手动吃掉他们认为是死子的所有棋子。在接下来的连续两次弃权后,而不是重复此过程,游戏立即被视为结束,棋盘上所有棋子都被计为活棋,并以此进行评分。请参阅:http://www.weddslist.com/kgs/rules.html#gep

注意:该协议已被提出,但目前并未在KGS电脑围棋锦标赛中使用;目前,争议通过第三方调解来解决。

注意事项

[编辑 | 编辑源代码]

在试图开发一种合理的死子分歧解决方法时,记住以下几点可能会有所帮助

  • 一些围棋引擎非常简单,无法或不能生成准确的死子列表。任何解决方案都不应该惩罚这些程序;它应该优雅地回退到默认的Tromp-Taylor方法,即将棋盘上所有棋子都计为活棋。
  • 在两位玩家无法就哪些棋子最终会被吃掉达成一致的情况下,该方法不应允许出现无限循环,也不应该阻止一方玩家吃掉确实可以被吃掉的棋子。
  • 一种解决方案应该能够解决棋盘上所有棋组都处于未定状态的情况(例如,如果棋盘上只有两三颗棋子)
  • 一种解决方案应该考虑到以下情况
    • 一方玩家将对方的一组棋子标记为死棋,而对方玩家不这样认为
    • 一方玩家将自己的一组棋子标记为死棋,而对方玩家不这样认为
    • 上述情况的任何组合

辱骂行为

[编辑 | 编辑源代码]

电脑程序(或玩家)有可能

  • 故意不提供准确的死子列表,从而迫使对手继续游戏,希望对手犯错误或超时
  • 在对手的大眼内放置没有存活机会的棋子,希望游戏结束时,这些本该是死子的棋子仍然留在棋盘上

这些类型的辱骂行为在许多规则集中“有道理”,但它们通常会让大多数人类玩家感到厌烦。这些策略应该被视为粗鲁,但应该主要通过社会方式而不是通过编程方式来反对。然而,确保提出的解决方案不会过度奖励这种行为是值得的。

  1. 约翰的围棋页面。 http://tromp.github.io/go.html
  2. 在本页中,“活棋”是指在游戏结束时计为得分点的棋子,“死棋”是指如果继续对弈,最终会被吃掉的棋子。
华夏公益教科书