我最近在与一位非编码人员讨论国际象棋计算机的可能性。我对理论并不精通,但我认为我知道的足够多。
我认为,不可能存在一个总是在国际象棋中获胜或陷入僵局的确定性图灵机。我认为,即使您搜索 player1/2 动作的所有组合的整个空间,计算机在每一步中决定的单个动作也是基于启发式的。基于启发式,它不一定能击败对手可以做的所有动作。
相反,我的朋友认为,如果计算机从不犯“错误”举动,那么它总是会赢或打平(但是您如何定义?)。但是,作为一个学过 CS 的程序员,我知道即使是你的好选择——给定一个聪明的对手——最终也会迫使你做出“错误”的举动。即使你什么都知道,你的下一步行动是贪婪地匹配一个启发式。
大多数国际象棋计算机试图将可能的最终游戏与正在进行的游戏相匹配,这本质上是一种动态编程回溯。再一次,有问题的残局是可以避免的。
编辑:嗯......看起来我在这里激怒了一些羽毛。那挺好的。
再想一想,解决像国际象棋这样的有限游戏似乎没有理论上的问题。我认为国际象棋比跳棋要复杂一点,因为获胜不一定是通过棋子的数字耗尽,而是通过队友。我最初的断言可能是错误的,但话又说回来,我想我已经指出了一些尚未得到令人满意的证明(正式)的东西。
我想我的思想实验是,每当树中的一个分支被取走时,算法(或记忆的路径)必须为对手移动的任何可能分支找到一条通向配偶的路径(而不是交配)。讨论后,我会购买,因为内存比我们想象的要多,所有这些路径都可以找到。