国际象棋是否有完美的算法?

时间:2008-11-18 01:25:44

标签: algorithm chess game-theory

我最近与一位非编码人员就国际象棋电脑的可能性进行了讨论。我对理论并不精通,但想想我已经足够了解。

我认为不存在确定性的图灵机总是在国际象棋中获胜或陷入僵局。我认为,即使你搜索了玩家1/2移动的所有组合的整个空间,计算机在每一步决定的单一动作都是基于启发式的。基于启发式,它不一定能击败对手可以做的所有动作。

相反,我的朋友认为,如果计算机永远不会做出“错误”的举动,那么计算机将永远赢得或打平(但是你定义了吗?)。然而,作为一名采用CS的程序员,我知道即使你的好选择 - 给予明智的对手 - 也会迫使你最终做出“错误”的动作。即使你知道一切,你的下一步行动也是贪婪地匹配启发式。

大多数国际象棋计算机试图将可能的最终游戏与正在进行的游戏相匹配,这本质上是一个动态的编程追溯。同样,有问题的最后阶段是可以避免的。

编辑:嗯......看起来我在这里乱了一些羽毛。那很好。

再次考虑它,似乎解决像国际象棋这样的有限游戏没有理论上的问题。我认为国际象棋比跳棋更复杂,因为胜利不一定是数字耗尽,而是通过配偶。我最初的断言可能是错误的,但我认为我已经指出了一些尚未得到令人满意的证明(正式)。

我想我的思想实验是,无论何时树中的分支被采用,那么算法(或记忆路径)必须找到对手移动的任何可能分支的配偶路径(不进行交配)。在讨论之后,我会购买比我们可能想到的更多内存,所有这些路径都可以找到。

27 个答案:

答案 0 :(得分:103)

“我认为不存在确定性的图灵机总是在国际象棋中获胜或陷入僵局。”

你不太对劲。可以有这样的机器。问题是它必须搜索的国家空间的巨大。它是有限的,它只是真的大。<​​/ p>

这就是为什么国际象棋会回到启发式的原因 - 国家空间太大(但有限)。甚至可以列举 - 更不用说搜索每个可能游戏的每个过程中的每个完美移动 - 将是一个非常非常大的搜索问题。

开场是为了让你进入一个让你处于“强势”位置的中游。不是已知的结果。即使是最终游戏 - 当数量较少时 - 很难枚举以确定最佳的下一步行动。从技术上讲,它们是有限的。但是替代品的数量巨大。即使是2个车手+国王也有22个可能的下一步行动。如果需要6个动作来交配,你会看到12,855,002,631,049,216个动作。

对开场动作进行数学计算。虽然只有大约20个开场动作,但有大约30个左右的第二个动作,所以在第三个动作中我们正在寻找360,000个替代游戏状态。

但国际象棋比赛(技术上)是有限的。巨大但有限。有完美的信息。有定义的开始和结束状态,没有掷硬币或掷骰子。

答案 1 :(得分:72)

我几乎不知道国际象棋究竟发现了什么。但作为一名数学家,这是我的理由:

首先,我们必须记住怀特先走了,也许这给了他一个优势;也许它给了布莱克一个优势。

现在假设Black的没有完美的策略让他总能赢得/僵持。这意味着无论黑方做什么,白方都可以采取一种策略来赢得胜利。等一下 - 这意味着 是白方的完美策略!

这告诉我们的两个玩家中至少有一个有一个完美的策略,让玩家总是赢或抽。

只有三种可能性:

  • 如果他完美的话,怀特总能获胜
  • 如果他能打得很好,布莱克总能获胜
  • 如果一名球员能够完美地打球(如果两名球员都打得很完美,那么他们总会陷入僵局),一名球员可以赢或抽奖。

但其中哪一项实际上是正确的,我们可能永远不会知道。

问题的答案是:国际象棋必须有一个完美的算法,至少对于两个玩家中的一个。

答案 2 :(得分:30)

game of checkers已经证明,一个程序总能赢得或打败游戏。也就是说,没有选择一个玩家可以做出的动作迫使另一个玩家失败。

  

研究人员花了将近20年的时间经历了500亿亿可能的跳棋位置,顺便说一下,这仍然是国际象棋位置数量的极小部分。跳棋的努力包括顶级玩家,他们帮助研究团队将程序员的经验法则变成了软件,这些软件将移动分类为成功或不成功。然后研究人员让程序运行,平均每天运行50台计算机。有些日子,程序运行在200台机器上。研究人员监测进展情况并相应调整程序。事实上,奇诺克在1994年击败人类赢得了跳棋世界冠军。

是的,你可以解决国际象棋,不,你不会很快解决。

答案 3 :(得分:14)

这不是关于计算机的问题,而只是关于国际象棋的问题。

问题是,是否存在永不丢失游戏的故障安全策略?如果存在这样的策略,那么知道一切的计算机总是可以使用它并且它不再是启发式的。

例如,游戏井字游戏通常基于启发式进行游戏。但是,存在一种故障安全策略。无论对手如何移动,如果从一开始就做到这一点,你总能找到避免输掉比赛的方法。

所以你需要证明国际象棋是否存在这样的策略。它基本上是相同的,只是可能的移动空间要大得多。

答案 4 :(得分:13)

我很晚才到这个帖子,你已经意识到了一些问题。但作为一名前大师和前职业国际象棋程序员,我想我可以添加一些有用的事实和数据。有几种方法可以衡量complexity of chess

  • 国际象棋比赛总数约为10 ^(10 ^ 50)。这个数字难以想象。
  • 40次或以下的国际象棋比赛数量约为10 ^ 40。这仍然是一个非常大的数字。
  • 可能的国际象棋位置数约为10 ^ 46。
  • 完整的国际象棋搜索树(香农数字)约为10 ^ 123,平均分支因子为35,平均游戏长度为80.
  • 为了进行比较,可观察宇宙中的原子数通常估计为10 ^ 80左右。
  • 所有6件或以下的游戏都是collated and solved

我的结论:虽然国际象棋在理论上是可以解决的,但我们永远不会有金钱,动力,计算能力或存储空间。

答案 5 :(得分:9)

事实上,有些游戏已经解决了。 Tic-Tac-Toe是一个非常容易构建的AI,它将永远赢得或打成平局。最近,Connect 4也得到了解决(并且显示对第二个玩家不公平,因为完美的游戏会让他输掉)。

然而,国际象棋尚未解决,我认为没有任何证据证明这是一场公平的比赛(即完美比赛是否会导致平局)。严格地说,从理论的角度来看,国际象棋有可能的部分配置。因此,搜索空间是有限的(尽管非常大)。因此,确实存在可以完美发挥的图灵机。然而,是否可以建造一个是另一回事。

答案 6 :(得分:8)

到2040年(5x10 ^ 20计算),平均1000美元的桌面将能够在5秒内解决跳棋问题。

即使以这样的速度,它仍然需要100台这些计算机大约6.34 x 10 ^ 19 来解决国际象棋。仍然不可行。甚至没有关闭。

大约在2080年,我们的平均台式机每秒计算大约10 ^ 45次。一台计算机将具有在大约27.7小时内解决国际象棋的计算能力。只要计算能力在过去30年中持续增长,它肯定会在2080年完成。

到2090年,1000美元桌面上将有足够的计算能力在1秒内解决国际象棋......所以到那个日期它将完全无足轻重。

鉴于检查员在2007年得到解决,并且在1秒内解决它的计算能力将滞后约33-35岁,我们可能大致估计国际象棋将在2055-2057之间解决。可能更早,因为当有更多的计算能力时(将在45年内出现这种情况),可以将更多的计划用于此类项目。但是,我最早会说2050年,最迟会说2060年。

在2060年,解决国际象棋需要100个平均桌面3.17 x 10 ^ 10年。意识到我使用1000美元的计算机作为我的基准,而大型系统和超级计算机可能会因为它们的性价比也在提高而可用。而且,它们的计算能力的数量级以更快的速度增加。考虑一台超级计算机现在每秒可以执行2.33 x 10 ^ 15次计算,而一台1000美元的计算机可以执行大约2 x 10 ^ 9的计算。相比之下,10年前的差异是10 ^ 5而不是10 ^ 6。到2060年,数量级差异可能是10 ^ 12,甚至可能比预期增长更快。

这很大程度上取决于我们作为人类是否有解决国际象棋的动力,但计算能力将使其在此期间可行(只要我们的步伐继续)。

另一方面,Tic-Tac-Toe的游戏更简单,有2653,002个可能的计算(使用开放式棋盘)。在1990年实现了大约2.5(每秒100万次计算)秒内解决Tic-Tac-Toe的计算能力。

向后移动,在1955年,一台计算机有能力在大约1个月内解决Tic-Tac-Toe(每秒计算1次)。同样,这是基于如果你可以将它打包到计算机中的1000美元会得到你(1955年显然不存在1000美元的桌面),这台计算机将致力于解决Tic-Tac -Toe .... 1955年的情况并非如此。计算费用昂贵且不会用于此目的,虽然我不相信Tic-Tac-Toe被视为“解决”的日期一台电脑,但我确信它落后于实际的计算能力。

此外,考虑到45年内1000美元的价值将比现在减少约4倍,因此计算能力将继续变得更便宜,可以投入更多资金用于此类项目。

答案 7 :(得分:7)

实际上is possible对于两个玩家来说都是无限游戏中的获胜策略而没有良好的排序;国际象棋是有序的。事实上,由于50-move rule,游戏可以拥有的移动数量有一个上限,因此只有有限数量的国际象棋游戏(可以枚举以完全解决) ..理论上,至少:))

答案 8 :(得分:6)

现代国际象棋程序现在的工作方式支持你的论点结束。它们以这种方式工作,因为它的资源太强,无法将国际象棋程序编码为确定性操作。他们不一定总是以这种方式工作。国际象棋有可能有一天solved,如果发生这种情况,它很可能会被计算机解决。

答案 9 :(得分:5)

国际象棋是矩阵游戏的一个例子,根据定义,它具有最佳结果(想想纳什均衡)。如果玩家1和玩家2各自采取最佳动作,则总会达到某种结果(无论是胜利还是未知)。

答案 10 :(得分:5)

从这个问题的博弈论来看,答案是肯定国际象棋可以完美发挥。游戏空间是已知的/可预测的,是的,如果你有孙子的量子计算机,你可以消除所有的启发式。

你现在可以用任何脚本语言编写一个完美的井字游戏机,它可以实时完美地播放。

奥赛罗是另一款当前电脑可以轻松完美播放的游戏,但机器的内存和CPU需要一些帮助

国际象棋在理论上是可行的,但实际上不可能(2008年)

i-Go很棘手,它的可能性空间超出了宇宙中原子的数量,所以我们可能需要一些时间才能制作出完美的i-Go机器。

答案 11 :(得分:5)

作为二十世纪七十年代的国际象棋程序员,我对此肯定有一个看法。我大约10年前写的,今天基本上是正确的:

"Unfinished Work and Challenges to Chess Programmers"

那时候,我认为如果做得好,我们可以按常规解决国际象棋问题。

Checkers最近解决了(Yay,加拿大阿尔伯塔大学!!!)但是这实际上是Brute Force完成的。按惯例做国际象棋,你必须更聪明。

当然,除非Quantum Computing成为现实。如果是这样,国际象棋将像Tic-Tac-Toe一样轻松解决。

在1970年代早期的“科学美国人”杂志中,有一个引起我注意的短暂模仿。国际象棋游戏是由俄罗斯国际象棋电脑解决的。它已经确定白棋有一个完美的举动,可以确保双方完美发挥的胜利,这一举动是:1。a4!

答案 12 :(得分:5)

我认为你死了。像Deep Blue和Deep Thought这样的机器被编程有许多预定义的游戏,以及用于将树解析为这些游戏的末端的聪明算法。当然,这是一种戏剧性的过度简化。总是有机会在游戏过程中“击败”计算机。通过这个我的意思是做一个移动,迫使计算机做出一个不太理想的移动(无论是什么)。如果计算机在移动的时间限制之前找不到最佳路径,那么选择一个不太理想的路径可能会犯错误。

还有另一类国际象棋程序使用真正的机器学习,或遗传编程/进化算法。一些程序已经进化并使用神经网络等来做出决策。在这种情况下,我会想象计算机可能会犯“错误”,但最终还是会取得胜利。

有一本关于这类GP的迷人书籍,你可能会读到Blondie24。这是关于跳棋的,但它可以适用于国际象棋。

答案 13 :(得分:5)

为了记录,有些计算机可以在checkers获胜或打成平手。我不确定是否可以为国际象棋做同样的事情。移动次数要高得多。而且,事情会发生变化,因为碎片可以向任何方向移动,而不仅仅是向前和向后移动。我认为虽然我不确定,国际象棋是确定性的,但是计算机目前在合理的时间内确定所有动作的方式太多了。

答案 14 :(得分:3)

这里的许多答案都是重要的游戏理论要点:

  1. 国际象棋是一个有限的,确定性的游戏,有关游戏状态的完整信息
  2. 您可以解决有限游戏并确定完美策略
  3. 国际象棋足够大,你无法用蛮力方法完全解决它
  4. 然而,这些观察结果错过了一个重要的实际观点:没有必要完美地解决整个游戏以创建无与伦比的机器

    事实上,很有可能你可以创造一个无与伦比的国际象棋机器(即永远不会失败,并将永远强制胜利或平局),甚至不用搜索可能的状态空间的一小部分。

    例如,以下技术大大减少了所需的搜索空间:

    • 像Alpha / Beta或MTD-f这样的树修剪技术已经大大减少了搜索空间
    • 可胜利的位置。许多结局属于这一类:例如,你不需要搜索KR vs K,这是一个证明了胜利。通过一些工作,可以证明更多的保证胜利。
    • 几乎肯定胜利 - 为了“足够好”而没有任何愚蠢的错误(比如关于ELO 2200+?)很多象棋位置几乎都是肯定的胜利,例如一个体面的物质优势(例如额外的骑士),没有补偿的位置优势。如果你的程序可以强制执行这样的位置并且具有足够的启发式来检测位置优势,那么它可以安全地假设它将赢得或者至少以100%的概率绘制。
    • 树搜索启发式 - 具有足够好的模式识别功能,您可以快速关注“有趣”移动的相关子集。这就是人类大师们玩耍的方式,所以这显然不是一个糟糕的策略.....我们的模式识别算法不断变得更好
    • 风险评估 - 通过将计算能力集中在结果更不确定的情况下(这是Quiescence Search的自然延伸),可以更好地了解某个职位的“风险”概念。 LI>

    通过上述技术的正确组合,我很自然地断言可以创造一个“无与伦比”的国际象棋游戏机。使用现有技术我们可能并不太遥远。

    请注意,几乎可以肯定证明这台机器不能被打败。它可能就像Reimann假设 - 我们非常肯定它会完美地发挥并且会有实证结果表明它永远不会丢失(包括几十亿直接对抗自身),但我们实际上并没有能力证明这一点。

    关于“完美”的补充说明:

    我注意不要在游戏理论意义上将机器描述为“完美”,因为这意味着异常强大的附加条件,例如:

    • 无论胜利组合多么复杂,总能赢得任何可以取胜的局面。在胜利/平局之间的边界上会出现很难完美计算的情况。
    • 利用有关对手比赛中潜在不完美的所有可用信息,例如推断你的对手可能过于贪婪并故意打出比平时稍弱的线,理由是它有更大的诱惑你的对手制造一个错误。对于不完美的对手来说,如果你估计你的对手可能不会发现强制获胜并且你给自己赢得更高的概率,那么实际上最好是让输掉

    完美(特别是对于不完美和未知的对手)是一个很多更难的问题,而不仅仅是无与伦比。

答案 15 :(得分:2)

  

如果搜索player1 / 2移动的所有组合的整个空间,计算机在每一步决定的单个移动都是基于启发式的。

那里有两个相互竞争的想法。一个是你搜索每一个可能的移动,另一个是你根据启发式决定的。启发式算法是一个很好的猜测系统。如果你正在搜索每一个可能的动作,那么你就不再猜测了。

答案 16 :(得分:2)

  

“国际象棋是否有完美的算法?”

是的。也许白方总能获胜。也许是黑人总能获胜。也许两者总是至少打成平手。我们不知道哪个,我们永远不会知道,但它确实存在。

另见

答案 17 :(得分:2)

我发现这个article by John MacQuarrie引用了“游戏理论之父”Ernst Friedrich Ferdinand Zermelo的作品。它得出以下结论:

  

在国际象棋中,白色可以强制获胜,或者黑色可以强制获胜,或者双方都可以强制至少进行平局。

逻辑对我来说似乎很合理。

答案 18 :(得分:2)

它完全可以解决。

有10 ^ 50个奇数位置。根据我的计算,每个位置需要至少64个圆形字节来存储(每个方格具有:2个从属位,3个位)。一旦它们被整理,就可以识别作为核对的位置,并且可以比较位置以形成关系,显示哪些位置导致大结果树中的其他位置。

然后,如果存在这样的事情,程序只需要找到最低的唯一一方将死根。无论如何,国际象棋在第一段末尾相当简单地解决了。

答案 19 :(得分:1)

我只有99.9%的人认为国家空间的大小使人们无法希望找到解决方案。

当然,10 ^ 50是一个不可思议的大数字。我们称之为状态空间n的大小。

最长的游戏中移动次数的界限是什么?由于所有游戏都以有限数量的移动结束,因此存在这样的界限,称之为m。

从初始状态开始,你不能枚举O(m)空间中的所有n个移动吗?当然,它需要O(n)时间,但是来自宇宙大小的参数并没有直接解决这个问题。 O(m)空间甚至可能不是很大。对于O(m)空间,在此遍历期间,您是否也无法跟踪沿着您正在遍历的路径的任何状态的延续是否导致EitherMayWin,EitherMayForceDraw,WhiteMayWin,WhiteMayWinOrForceDraw,BlackMayWin或BlackMayWinOrForceDraw? (根据它的转向,有一个格子,在格子相遇的遍历历史中注释每个状态。)

除非我遗漏了某些内容,否则这是一个O(n)时间/ O(m)空间算法,用于确定国际象棋属于哪种类别。维基百科引用了大约10 ^ 60普朗克时代对宇宙年龄的估计。在没有进入宇宙学论证的情况下,我们猜测在热/冷/无论宇宙死亡之前还剩下那么多时间。这使得我们需要每10 ^ 10th Planck时间或每10 ^ -34秒评估一次移动。这是一个不可能的短时间(比有史以来观察的最短时间短约16个数量级)。让我们乐观地说,我们可以希望评估一种超级优秀的实施方案,这种实施方式可以运行在现有的 - 或 - 非 - 非 - 量子 - P - 是 - 适当的NP子集技术之上。单步前进,以100MHz的速率(每10 ^ -8秒一次)将结果状态分类为中间状态或三种结束状态之一。由于这个算法非常可并行化,因此我们需要10 ^ 26个这样的计算机,或者我的身体每个原子需要一个,以及收集结果的能力。

我认为蛮力解决方案总有一些希望。我们可能会很幸运,在探索白人可能的开场动作中,他们都选择一个低于平均水平的扇出,一个选择白色总是赢或赢或抽奖。

我们也可能希望在某种程度上缩小国际象棋的定义,并说服每个人,它仍然在道德上是相同的游戏。我们是否真的需要在抽签前要求重复三次?我们是否真的需要让失控派对展示50次逃跑的能力?有没有人甚至理解 en passant 规则到底是什么? ;)更严重的是,当他或她唯一的逃避检查或僵局是 en passant 捕获时,我们是否真的需要强迫玩家移动(而不是画画或丢失)?如果所谓的非女王晋升不会导致立即检查或将死,我们是否可以限制可以晋升典当的作品的选择?

我也不确定允许每个计算机基于散列访问大型后期游戏状态数据库及其可能的结果(在现有硬件和现有的游戏结束数据库上可能相对可行)有多少可以帮助修剪早点搜索。显然你不能在没有O(n)存储的情况下记忆整个函数,但是你可以选择一个大整数并记住许多结束从每个可能的(或者甚至不容易证明是不可能的,我认为)最终状态向后枚举的结束。

答案 20 :(得分:1)

我知道这有点大磕磕绊绊,但我必须在这里投入5美分。对于计算机或此类人来说,有可能以胜利或僵局结束他/她/参与的每一次国际象棋游戏。

然而,要实现这一目标,您必须准确了解每个可能的移动和反应等,一直到每个可能的游戏结果,并将其可视化,或者轻松地分析这些信息把它想象成一个不断分支的思维导图。

中心节点将是游戏的开始。每个节点中的每个分支都将象征一个移动,每个移动都与其移动的移动不同。在这个庄园中展示它会花费很多资源,特别是如果你在纸上做这件事。在计算机上,这可能需要数百TB的数据,因为除非你让分支回来,否则会有很多重复的动作。

然而,记住这些数据,即使不是不可能,也是难以置信的。为了使计算机能够识别最佳移动(最多)8个即时可能的移动,这是可能的,但不可能......因为计算机需要能够处理经过该移动的所有分支,一直到结论,计算导致胜利或僵局的所有结论,然后根据失去结论的那些结论作出决定,这将要求RAM能够处理Terrabytes中的数据,或更多!使用当今的技术,这样的计算机需要的不仅仅是世界上最富有的5个男人和/或女人的银行余额!

因此,经过所有这些考虑,可以做到,但是,没有人可以做到。这样的任务需要30个最聪明的头脑,不仅在国际象棋中,而且在科学和计算机技术中,这样的任务只能在一个完成(让我们把它完全放入基本视角)...极端最终超级超级计算机...至少在一个世纪内不可能存在。将会完成!只是不在这一生。

答案 21 :(得分:1)

你的思想实验中有两个错误:

  1. 如果你的图灵机没有“限制”(内存,速度......),你不需要使用启发式算法,但你可以计算出最终状态(胜利,失败,平局)。要找到完美的游戏,您只需要使用Minimax算法(参见http://en.wikipedia.org/wiki/Minimax)来计算每个玩家的最佳动作,这将导致一个或多个最佳游戏。

  2. 使用的启发式的复杂性也没有限制。如果你可以计算出完美的游戏,那么还有一种方法可以从中计算出完美的启发式算法。如果需要的话,它只是一个能够映射国际象棋位置的功能“如果我在这种情况下,我最好的动作就是M”。

  3. 正如其他人已经指出的那样,这将以3种可能的结果结束:白方可以取胜,黑方可以取胜,其中一方可以强制平局。

    完美的跳棋游戏的结果已经被“计算”了。如果人类之前不会自我毁灭,那么当有计算机进化到足以拥有足够的记忆和速度时,国际象棋也会计算出来。或者我们有一些量子计算机......或者直到有人(研究员,国际象棋专家,天才)找到一些能够显着降低游戏复杂性的算法。举个例子:1到1000之间所有数字的总和是多少?您可以计算1 + 2 + 3 + 4 + 5 ... + 999 + 1000,或者您可以简单地计算:N *(N + 1)/ 2,N = 1000;结果= 500500.现在想象不知道那个公式,你不知道数学归纳,你甚至不知道如何乘法或加数,...所以,有可能当前有一个未知算法最终会降低此游戏的复杂性,只需5分钟即可计算出当前计算机的最佳移动速度。也许甚至可以用笔和笔来估计它是一个人类。给予更多时间,或者甚至在你的脑海中。

    所以,快速回答是:如果人类存活的时间足够长,那只是时间问题!

答案 22 :(得分:0)

它可能是可以解决的,但有些事情困扰我: 即使可以遍历整棵树,仍然无法预测对手的下一步行动。我们必须始终将我们的下一步行动建立在对手的状态上,并做出“最佳”行动。然后,基于下一个状态,我们再次进行。 因此,如果对手以某种方式移动,我们的最佳移动可能是最佳的。对于对手的一些动作,我们的最后一步可能是次优的。

我只是没有看到每一步都会有一个“完美”的举动。

对于那种情况,必须为每个状态[在当前游戏中]成为树中的路径,导致胜利,无论对手的下一步行动(如在井字游戏中),我我很难搞清楚。

答案 23 :(得分:0)

数学上,国际象棋已由Minimax algorithm解决,可追溯到20世纪20年代(由波雷尔或冯诺伊曼发现)。因此,图灵机确实可以完美地下棋。

然而,国际象棋的计算复杂性使其几乎不可行。当前的引擎使用了几种改进和启发式方法。今天的顶级引擎在游戏强度方面已经超过了最优秀的人类,但是由于它们正在使用的启发式方法,它们在无限时间内可能无法完美发挥(例如,哈希冲突可能导致不正确的结果)。

我们目前在完美比赛方面最接近的是endgame tablebases。生成它们的典型技术称为retrograde analysis。目前,所有最多六件的位置都已解决。

答案 24 :(得分:-1)

,在数学方面,国际象棋被归类为一个确定的游戏,这意味着它对每个第一个玩家都有一个完美的算法,即使对于infinate棋盘也证明这是真的,所以有一天可能一个量子AI会找到完美的策略,游戏就不见了

此视频中有关此内容的更多信息:https://www.youtube.com/watch?v=PN-I6u-AxMg

还有quantom国际象棋,没有数学证据确定游戏http://store.steampowered.com/app/453870/Quantum_Chess/

在那里你有关于quantom chess https://chess24.com/en/read/news/quantum-chess

的详细视频

答案 25 :(得分:-2)

当然 板上五十种可能组合的力量只有十分之一。考虑到这一点,为了适应每一次的复合,你需要在10下进行50次移动的力量(包括重复次数乘以3)。因此,在国际象棋中,一百次动作的力量不到十分之一。只需挑选那些导致将死的人,你就可以了。

答案 26 :(得分:-3)

64位数学(=棋盘)和按位运算符(=下一个可能的移动)就是你需要的全部。这么简单。蛮力通常会找到最好的方法。当然,对于所有位置都没有通用算法。在现实生活中,计算也受到时间的限制,超时会阻止它。一个好的国际象棋程序意味着重型代码(传递,加倍的棋子等)。小代码不能很强大。打开和结束数据库只是节省处理时间,某种预处理数据。设备,我的意思是 - 操作系统,线程化,环境,硬件定义要求。编程语言很重要。无论如何,开发过程很有趣。