Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

去年关闭。



Improve this question




最近,我正在与一个非编码人员讨论国际象棋计算机的可能性。我并不精通理论,但认为我已经足够了解。

我认为不可能有一个总是在国际象棋上获胜或失败的确定性图灵机。我认为,即使您搜索player1 / 2 Action 的所有组合的整个空间,计算机在每个步骤中决定的单个 Action 也是基于启发式的。基于试探法,它不一定击败对手可以做的所有 Action 。

相反,我的 friend 认为,如果计算机从未采取过“错误”举动(无论您如何定义),它总是会赢或平。但是,作为一名使用CS的程序员,我知道即使是您的明智选择-明智的对手-也会迫使您最终做出“错误”举动。即使您什么都知道,您的下一个举动就是匹配启发式算法时的贪婪。

大多数国际象棋计算机都尝试将可能的最终游戏与进行中的游戏匹配,这本质上是动态编程回溯。同样,最终比赛是可以避免的。

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

再想一想,解决象棋这样的有限游戏似乎没有理论上的问题。我认为国际象棋比棋子要复杂一些,因为胜利不一定是棋子的精疲力尽,而是队友。我最初的断言可能是错误的,但是我想我再次指出了(正式)尚未令人满意地证明的内容。

我想我的思想实验是,每当在树上取一个分支时,算法(或记忆的路径)就必须为对手移动的任何可能分支找到一条通往伴侣的路径(不交配)。在讨论之后,我将购买所有给定的内存,这些内存超出了我们的梦想。

最佳答案

“我认为不可能有一个总是在国际象棋上获胜或失败的确定性图灵机。”

你不太对可能有这样的机器。问题是必须搜索的状态空间巨大。这是有限的,只是很大

这就是为什么国际象棋依赖于启发式技术的原因-状态空间太大(但是有限)。甚至要列举一下-在每个可能的游戏的每个过程中,对于每个完美 Action 的搜索要少得多,这将是一个非常非常大的搜索问题。

开孔的脚本可以使您进入一个中途的游戏,该游戏给予您“强”的位置。未知的结果。甚至最终游戏(当棋子较少时)也很难枚举,以决定最佳的下一步行动。从技术上讲,它们是有限的。但是替代方案的数量巨大。即使是2个新手+国王,也有22种可能的下一步 Action 。而且如果要花6步才能配对,您正在看12,855,002,631,049,216步。

对开局 Action 进行数学运算。虽然只有大约20个开局 Action ,但大约有30个左右的第二个 Action ,因此到了第三个 Action ,我们正在研究360,000种替代游戏状态。

但是象棋游戏在技术上是有限的。巨大,但有限。有完美的信息。有定义的开始状态和结束状态,没有掷硬币或掷骰子的情况。

10-08 04:42