Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm 国际象棋有完美的算法吗?_Algorithm_Chess_Game Theory - Fatal编程技术网

Algorithm 国际象棋有完美的算法吗?

Algorithm 国际象棋有完美的算法吗?,algorithm,chess,game-theory,Algorithm,Chess,Game Theory,我最近和一个不懂编码的人讨论了国际象棋计算机的可能性。我不太精通理论,但我想我知道的足够多了 我认为不可能存在一个在国际象棋中总是获胜或陷入僵局的确定性图灵机。我认为,即使你搜索所有玩家1/2动作组合的整个空间,计算机在每一步决定的单个动作都是基于启发式的。基于启发式,它不一定能击败对手所能做的所有动作 我的朋友认为,恰恰相反,如果一台计算机从未犯过“错误”的动作,它总是会赢或打成平局(你怎么定义它?)。然而,作为一名学习过CS的程序员,我知道即使你做出了好的选择——给了一个明智的对手——最终也

我最近和一个不懂编码的人讨论了国际象棋计算机的可能性。我不太精通理论,但我想我知道的足够多了


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

我的朋友认为,恰恰相反,如果一台计算机从未犯过“错误”的动作,它总是会赢或打成平局(你怎么定义它?)。然而,作为一名学习过CS的程序员,我知道即使你做出了好的选择——给了一个明智的对手——最终也会迫使你做出“错误”的举动。即使你什么都知道,你的下一步行动是贪婪地匹配启发式

大多数国际象棋计算机试图将可能的结束游戏与正在进行的游戏相匹配,这本质上是一种动态规划回溯。不过,问题的结局也是可以避免的

编辑:嗯。。。看来我弄乱了一些羽毛。那很好


再想一想,解决国际象棋这样的有限博弈似乎没有理论问题。我认为国际象棋比西洋跳棋复杂一点,因为赢不一定是棋子数用尽的结果,而是由一个伙伴决定的。我最初的断言可能是错误的,但我想我再次指出了一些尚未得到令人满意的证明(正式证明)的东西


我想我的思想实验是,每当树上的一个分支被取下时,算法(或记忆的路径)必须为对手移动中的任何可能分支找到一条通向配偶的路径(而不是交配)。讨论结束后,我会购买,如果内存比我们想象的要多,那么所有这些路径都可以找到。

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

问题是,是否存在一个永远不会输掉比赛的故障安全策略?如果存在这样的策略,那么一台无所不知的计算机总是可以使用它,它不再是一种启发式

例如,tic tac toe游戏通常基于启发式进行。但是,存在一种故障安全策略。无论对手采取什么行动,只要你从一开始就正确行事,你总能找到避免输掉比赛的方法


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

现代国际象棋程序现在的工作方式支持了你的论点。它们是这样工作的,因为编写一个国际象棋程序来进行决定性的操作需要大量的资源。他们不一定总是这样工作的。国际象棋有可能在某一天成为现实,如果真是这样的话,它很可能会被计算机解决。

记录在案的是,有一些计算机可以在比赛中获胜或打成平局。我不确定国际象棋是否也能做到这一点。移动的次数要多得多。而且,事情会发生变化,因为碎片可以朝任何方向移动,而不仅仅是向前和向后。我想,虽然我不确定,国际象棋是确定性的,但计算机目前有太多的可能动作,无法在合理的时间内确定所有的动作。

我想你已经死定了。像《深蓝》和《深邃思考》这样的机器是用一系列预定义的游戏和聪明的算法编程的,这些算法将树解析成游戏的结尾。当然,这是一种戏剧性的过分简化。在游戏过程中,总有机会“击败”电脑。我的意思是做一个动作,迫使计算机做一个不太理想的动作(不管是什么)。如果计算机在移动的时间限制之前找不到最佳路径,它很可能会选择一条不太理想的路径,从而犯错误

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


有一本关于这种全科医生的书,你可能会读到。它是关于跳棋的,但它可以应用于国际象棋。

事实上,有些游戏已经解决了。Tic-Tac-Toe是一个非常简单的方法,可以用来构建一个AI,它将永远获胜或平局。最近,连接4也被解决了(并且证明对第二个玩家不公平,因为一场完美的比赛会让他输)

然而,国际象棋还没有解决,我不认为有任何证据表明这是一场公平的游戏(即,完美的游戏是否会导致平局)。严格地说,从理论的角度来说,国际象棋有有限数量的棋子配置。因此,搜索空间是有限的(尽管非常大)。因此,确实存在一台能够完美发挥作用的确定性图灵机。然而,能否建造一台图灵是另一回事。

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

你说得不太对。可能有这样一台机器。问题是它必须搜索的状态空间的巨大性。它是有限的,只是非常大

这就是为什么国际象棋依赖于启发式——状态空间太大(但有限)。甚至列举——更不用说在每一场可能的比赛中寻找每一个完美的动作了——将是一个非常非常大的搜索问题

开场白是为了让你在比赛中处于一个“强势”的位置。结果不得而知。即使游戏结束了,当棋子更少的时候--