最近,我正在与一个非编码人员讨论国际象棋计算机的可能性。我在理论上并不精通,但我认为我已经足够了。
我认为不可能有一个总是在国际象棋上获胜或失败的确定性图灵机。我认为,即使您搜索player1 / 2动作的所有组合的整个空间,计算机在每个步骤中决定的单个动作都是基于启发式的。基于试探法,它不一定击败对手可以做的所有动作。
相反,我的朋友认为,如果计算机从未采取过“错误”举动(无论您如何定义),它总是会赢或平。但是,作为一名使用CS的程序员,我知道即使是明智的对手,即使您的明智选择也会迫使您最终做出“错误”举动。即使您什么都知道,您的下一个举动就是匹配启发式算法。
大多数象棋计算机都尝试将可能的最终游戏与进行中的游戏进行匹配,这本质上是一种动态编程回溯。同样,最终的比赛是可以避免的。
编辑:嗯...看起来我在这里弄乱了羽毛。非常好。
再想一想,解决象棋这样的有限游戏似乎没有理论上的问题。我认为国际象棋比棋子要复杂一些,因为胜利不一定是棋子的精疲力尽,而是队友。我最初的断言可能是错误的,但是我想我再次指出了(正式)尚未令人满意地证明的内容。
我想我的思想实验是,每当在树上取一个分支时,算法(或记忆的路径)就必须为对手移动的任何可能分支找到一条通往配偶的路径(不交配)。讨论之后,我将购买所有给定的内存,这些内存超出了我们的梦想。