国际象棋有一个完美的算法吗?[关闭]


109

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

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

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

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

编辑:嗯...看起来我在这里弄乱了羽毛。非常好。

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

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


1
+1:很棒的话题。但是,我认为应该以维基百科为形式,答案的种类和数量都可以证明这一点。
IAbstract

1
“认为我已经指出了尚未令人满意地证明的东西”吗?您指出了什么尚未正式证明?
S.Lott

2
ack!这样一个黑白问题怎么会有20个不同的答案!(无双关语)。
Peter Recore

5
我也对发布投机性答案而没有意识到答案实际上是由数学确定的人数感到惊讶-从已经证明国际象棋可以解决的意义上来说,答案是无法计算的。
DJClayworth

3
让我想起了有关“完美国际象棋计算机”的笑话。玩白了,它想,想,想,然后.....辞职!

Answers:


104

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

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

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

编排脚本可以使您进入中级游戏,从而为您提供“强硬”的位置。未知的结果。甚至最终游戏(当棋子更少时)也很难枚举来确定最佳下一步。从技术上讲,它们是有限的。但是替代方案的数量巨大。即使是2个新手+国王,也有22种可能的下一步动作。如果需要6个动作进行配对,那么您正在查看12,855,002,631,049,216个动作。

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

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


22
已枚举并解决了所有6件以下的残局。请参阅此处的表库和位库:en.wikipedia.org/wiki/Tablebase。例如,有一个KQNKRBN残局,需要517个举手才能迫使对方!但是国际象棋游戏的总数约为(10 ^(10 ^ 50))。
HTTP 410

2
脚本化取胜是一回事。详尽列举是另一回事。无论哪种方式,信息都是完美的-一切都已知-游戏从定义上讲是确定性的。
S.Lott

11
@RoadWarrior:不同意。随机适用于天气。上帝掷骰子。随机不适用于国际象棋-根据定义。国际象棋有完整的信息。天气具有量子效应-它不可能完成。
美国洛特

3
使天气难以预测的是混乱的非线性因素,而不是任何量子效应。只要有足够的计算能力和知识,我们就可以在理论上创建一个“正确的”天气预报。
HTTP 410

3
@monojohnny:规则禁止同一位置重复三次。国际象棋只是有限的。它很大但是很有限。
S.Lott

72

我几乎不了解国际象棋的实际发现。但是作为数学家,这是我的理由:

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

现在,假设布莱克没有完美的策略可以让他始终获胜/陷入僵局。这意味着,无论黑方做什么,白方都有一定的策略可以取胜。且慢-这意味着白完美咯!

这告诉我们,两个玩家至少有一个具有完美的策略,可以让该玩家始终获胜或平局。

那么,只有三种可能性:

  • 如果白方发挥出色,他总能赢
  • 如果布莱克表现出色,他总能赢
  • 如果一名球员表现出色,则可以获胜或平局(如果两名球员表现出色,那么他们总是会陷入僵局)

但是,我们可能永远都不知道其中哪些是正确的。

问题的答案是肯定的:至少对于两个棋手之一,必须有一个完美的国际象棋算法。


2
+1,这是一个很好的解释方式。我不敢相信我从未想到过!
Zifre

2
为什么没有完美策略的黑人意味着白人有完美策略?两位球员都没有完美的战略呢?如果您的含意是真的,那么不是每个2人游戏都真实,这意味着每个游戏都有完美的策略吗?
John M Naglick 2010年

8
@john:因为国际象棋具有完美的信息并且没有随机元素(与许多其他许多2人游戏不同),唯一不可能存在完美的黑棋策略的方法是白棋是否可以在没有任何尝试的情况下强行获胜。黑色-换句话说,如果有完美的白色策略。
戴夫·谢罗曼

2
实际上,这种逻辑并不总是成立,但在这种情况下是正确的。
BlueRaja-Danny Pflughoeft,2010年

4
@john“为什么要在这里进行如此多的讨论”-因为有些人不知道答案,但无论如何都要在这里发布。
DJClayworth

30

对于跳棋游戏已经证明,程序总是可以赢得比赛或与比赛并列。就是说,没有任何选择可以使一个玩家做出迫使其他玩家输掉的动作。

研究人员花了将近二十年的时间来完成5,000亿个可能的跳棋员职位,顺便说一下,这仍然是国际象棋职位数量的很小一部分。跳棋员的工作包括顶尖球员,他们帮助研究团队将跳棋的经验法则编程到将动作成功或失败归类的软件中。然后,研究人员让该程序平均每天运行50台计算机。有时,该程序在200台计算机上运行。当研究人员监视进度并相应地调整程序时。实际上,Chinook在1994年击败人类赢得了跳棋世界冠军。

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


6
“ [您]很快就不会来了”有点轻描淡写。除了预期的宇宙持续时间的限制外,您还遇到了存储问题-国际象棋中的州数远远超过了5,000亿个棋子。实际上,它超过了宇宙中粒子的数量。
Michael Dorfman

30
“事实上,它超过了宇宙中粒子的数量。” 只要它不超过宇宙中粒子的状态数,仍然存在希望;-)
卡斯滕

1
当总是迫使对手失败的程序在与自己对战时,会发生什么?
John Demetriou 2012年

1
@BCS嗯,如果有一个预测,如果我作为第二个玩家在玩,而另一个人使用与我相同的试探法,然后遵循该试探法获胜,并且如果第一个玩家具有类似的试探法,该怎么办呢? ?
约翰·德米特里

1
我的意思是,如果有一个完美的算法并且两个参与者都拥有,那么可以无限期地改变算法以使其变得完美的概率
John Demetriou 2012年

15

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

问题是,是否存在一种永不失败的永不失败的策略?如果存在这样的策略,那么一无所知的计算机始终可以使用它,而不再是一种启发式方法。

例如,通常在基于启发式的情况下玩井字游戏。但是,存在故障安全策略。无论对手如何移动,只要一开始就正确地做下去,您总是会找到避免输掉比赛的方法。

因此,您需要证明象棋也存在或不存在这种策略。基本上是一样的,只是可能的动作空间要大得多。


那么,谁有动力拒绝我的回答?里面有什么问题吗?想让自己领先吗?
ypnos

@ypnos,我完全没有拒绝您的回答。我只是评论说不要让随机选民失望。您获得了30次报告,但只输了1次。此外,+ 1;)
mmcdole 2009年

1
下票的几个原因。1)已知存在一种解决游戏的算法,仅使用任何可能的技术来计算该算法都是不切实际的。2)解决游戏问题并不意味着它们存在故障安全策略。井字游戏已经解决,但是第二位玩家没有避免输球的策略。
DJClayworth 2010年

2
“这不是有关计算机的问题,而只是有关国际象棋的问题。” 好吧,计算机科学实际上与计算机无关。它们只是一个工具。计算机科学无需计算机即可工作。
Janus Troelsen '02

1
它实际上是关于计算机的问题,因为问题是是否存在图灵机(= Computer),可以解决国际象棋。
SDwarfs 2013年

14

我来得很晚,您已经意识到一些问题。但是作为一名前大师和一名前国际象棋程序员,我认为我可以添加一些有用的事实和数据。有几种测量国际象棋复杂性的方法

  • 下棋的总数约为10 ^(10 ^ 50)。这个数字非常大。
  • 40步或更少的棋类游戏数量约为10 ^ 40。这仍然是一个惊人的数字。
  • 可能的国际象棋位置数约为10 ^ 46。
  • 根据35的平均分支因子和80的平均游戏长度,完整的象棋搜索树(香农数)大约为10 ^ 123。
  • 为了进行比较,通常将可观测宇宙中的原子数估计为10 ^ 80。
  • 所有6件以下的残局已被整理和解决

我的结论是:尽管从理论上讲国际象棋是可以解决的,但我们将永远没有钱,动力,计算能力或存储来做到这一点。


3
拜托 您必须以不同的方式考虑问题。不用考虑游戏的数量,因为换位和alpha-beta算法以及此类算法极大地减少了这种情况。想想一下棋盘位置(10 ^ 60)或棋子组合(亿)。借助Quantum Computing,它变得微不足道。
lkessler

2
在这种情况下(求解象棋),Alpha-beta需要完善的评估功能。板的位置和组合也是如此。我们没有完善的评估功能,因此量子计算无济于事。
HTTP 410

1
每当我认为某件事情是“琐碎的”,并且我确定没有人做过时,我也至少会错一次。
院长J,

2
@lkessler:董事会职位并不能说明全部情况。由于缺少捕捉或棋子移动,至少需要游戏的一些历史记录才能进行划定或无意义的捕捉或平局,以及重复进行绘制的整个历史。而且,由于最近将量子计算机分解为15因子是一个值得注意的研究结果,所以我现在对量子计算没有什么微不足道的。
David Thornley,2010年

2
为了进行比较,如果可以生成所有可能的象棋位置,则可以使用128位密钥对任何密码进行蛮力破解,因为10 ^ 46约为2 ^ 152或2 ^ 153。有充分的理由认为,在宇宙热死之前这是不可能的。
David Thornley,2010年

9

实际上,有些游戏已经解决。Tic-Tac-Toe是一种非常简单的方法,因此可以构建始终获胜或并列的AI。最近,Connect 4也已解决(并且显示出对第二位玩家不公平,因为完美的比赛将导致他输掉)。

但是,国际象棋还没有解决,我认为没有任何证据可以证明这是一场公平的比赛(即,完美的比赛是否会导致平局)。严格来说,从理论上讲,国际象棋具有有限数量的可能棋子配置。因此,搜索空间是有限的(尽管很大)。因此,确实存在可以完美发挥作用的确定性图灵机。但是,是否可以建造一个则不同。


8

到2040年,平均$ 1000的台式机将能够在5秒钟内解决跳棋(5x10 ^ 20的计算)。

即使以这种速度,解决象棋仍需要100台这样的计算机,大约需要6.34 x 10 ^ 19 。仍然不可行。差远了。

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

到2090年,一个价格为1000美元的台式机将具有足够的计算能力,可以在大约1秒钟内解决国际象棋问题……因此,到那时它将是微不足道的。

鉴于跳棋解决了在2007年,并解决它在1秒内的计算能力将增长约33-35落后多年,我们或许可以粗略估计象棋将2055至57年之间得到解决的地方。自从有了更多的计算能力(在45年后将是这种情况)之后,可能很快就会将更多的精力投入到此类项目中。但是,我最早要说2050年,最晚要说2060年。

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

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

另一个要点是,井字游戏非常简单,具有2,653,002种可能的计算方式(使用开放式开发板)。1990年实现了大约2.5秒(每秒100万次计算)中解决井字游戏的计算能力。

向后移动,在1955年,一台计算机可以在大约1个月内解决井字游戏(每秒计算1次)。再说一次,这是基于如果您可以将它包装到计算机中而获得的1000美元收益(1955年显然没有1000美元的台式机),这台计算机将专门用于解决井字游戏...。只是在1955年不是这种情况。计算是昂贵的并且不会被用于此目的,尽管我不认为有任何日期可以用计算机将井字游戏视为“已解决”,但是我确保它落后于实际的计算能力。

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


9
“您知道迪斯科唱片销量在截至1976年的那一年中增长了400%吗?如果这些趋势持续下去,那就……啊!”
-Disco

2
摩尔定律-计算能力每18个月增加一倍-可能会在2015年左右失效。否则计算机处理器设计将必须大不相同。因此2080年不是一个现实的目标。
菲利普·史密斯

3
@Philip:台式计算机的处理器时钟速度自2003年以来仅略有提高,此后的增强主要是增加了缓存和多核。由于3 GHz处理器的光移动4英寸/ 10厘米需要一个时钟周期,因此不能指望时钟速度会无限期地增加。此外,并行性通常很难。预测七十年前开始下降的五十年呈指数增长似乎不是一个安全的选择。
David Thornley,2010年

1
@David-没错。但没有指出重点。如果将芯片上的组件尺寸减小一半,则在相同的时钟速度下,电子的完成速度将是原来的两倍。这就是推动摩尔定律的原因。
菲利普·史密斯

3
@Philip:减半当然不可能永远持续下去。硅原子的宽度约为四分之一纳米,而芯片制造已降至数十纳米。而且,在量子水平上,粒子服从统计规则,而不是绝对规则,因此有必要一次在足够多的电子周围移动以调用大数定律。到目前为止,摩尔定律一直处在定律与自我实现的预言之间,但这很快就会结束。
David Thornley,2010年

7

实际上,这两个玩家都有可能在无序的无限游戏中拥有获胜策略;但是,国际象棋秩序井然。实际上,由于有50规则,因此游戏可以进行的下注次数是有上限的,因此,只有有限的许多国际象棋游戏(可以列举为精确求解)。理论上,至少 :)


4
从技术上讲,五十步法则,就像三步法重复(这也限制了事情-可能的位置数量有限,因此将该数字乘以3便得出上限)不会引起平局。相反,它使任何一个玩家都有机会要求平局。通常,失败的玩家会这样做,但这不是必需的。因此,以下是完全合法的游戏:1. Nc3 Nc6 2. Nb1 Nb8 3. Nc3 Nc6 4. Nb1 Nb8,永远重复。而且,如果我没记错的话,也没有被证明这不是两个完美算法演绎出白色和黑色的结果。
Lenoxus 2014年

6

现代国际象棋程序现在的工作方式支持了您的论点。它们之所以这样工作,是因为它过于资源紧张而无法编写象棋程序来确定性地运行。他们不一定总是那样工作。象棋有可能会在某天得到解决,如果发生这种情况,很可能会由计算机来解决。


5

为了记录在案,有些计算机可以赢得或击败跳棋。我不确定是否可以对国际象棋做同样的事情。移动的次数要多得多。而且,事物会发生变化,因为碎片可以沿任何方向移动,而不仅仅是向前和向后移动。我认为,尽管我不确定,国际象棋是确定性的,但是对于计算机而言,目前有太多可能的动作无法在合理的时间内确定所有动作。


1
可以完成,但是可以在我们可能会看到的计算机上完成吗?
BCS

1
可能不在我们的一生中。该领域中所有真正有趣的研究都在Go游戏中进行。:)
比尔蜥蜴

IIRC大多数6岁的孩子可以在Go上使用任何计算机。
BCS

2
@BCS:不再。最好的围棋程序现在击败了Dan(专业)级别的玩家。
比尔蜥蜴

1
@BlueRaja:那是在2008年。我不知道目前的记录是什么,但是MoGo在19x19上以6和7的石头击败了职业选手。ireport.cnn.com/docs/DOC-214010
比尔蜥蜴2010年

5

我想你死定了。诸如Deep Blue和Deep Thought之类的机器已通过许多预定义的游戏进行了编程,并且采用了巧妙的算法将这些树解析为这些游戏的结尾。当然,这是极大的简化。在游戏过程中总是有机会“击败”计算机。我的意思是说,此举迫使计算机做出的举动不尽人意(无论如何)。如果计算机在移动时间限制之前找不到最佳路径,则很可能会通过选择一种不太理想的路径来犯错。

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

您可能会读到一本有关GP的有趣书,名为Blondie24。它与跳棋有关,但也可以应用于国际象棋。


这就是您在国际象棋上击败当今计算机的方式。明天会更好。不过,我确实同意您的意见,即Blondie24令人着迷。
比尔蜥蜴

投票回去。这个帖子不应该得到负面的分数。
Cybis

不幸的是,象棋游戏问题太大,机器学习无法正常工作。他们永远都不可能获得一个学习象棋程序,甚至连新手都不会犯错误。启发式方法更好。但是蛮力甚至更好。机器学习领域仅从国际象棋的失败中学到了东西。
勒克斯勒

象棋程序不会犯短期错误,最好的程序比世界冠军的表现更好。我认为Rybka 64位的最新版本的评分为3200 ELO
Alex

5

从博弈论出发,这就是这个问题的答案,是的,国际象棋可以完美发挥。游戏空间是已知/可预测的,是的,如果您拥有孙子的量子计算机,则可能会消除所有启发式方法。

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

奥赛罗(Othello)是当前计算机可以轻松完美播放的另一种游戏,但是该计算机的内存和CPU需要一些帮助

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

i-Go非常棘手,它的可能性空间超出了宇宙中原子的数量,因此可能需要一些时间才能制造出完美的i-Go机器。



4
从技术上讲,它是组合博弈论。
照应

5

国际象棋是矩阵博弈的一个例子,根据定义,它具有最佳结果(认为纳什均衡)。如果玩家1和2各自采取最佳行动,那么一定会达到一定的结果(是否仍然是输赢)。


5

作为1970年代的国际象棋程序员,我对此绝对有意见。我大约十年前写的东西,今天基本上仍然是正确的:

“未完成的工作和对象棋程序员的挑战”

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

跳棋最近得到了解决(是的,加拿大阿尔伯塔大学!!!),但实际上是蛮力完成的。按照常规方式下棋,您必须变得更加聪明。

当然,除非量子计算成为现实。如果是这样,国际象棋将像井字游戏一样容易解决。

在1970年代早期的《科学美国人》中,有一个简短的模仿使我引起了注意。宣布国际象棋游戏已由俄罗斯国际象棋计算机解决。它已经确定白方有一个完美的举动,可以确保双方的完美比赛获胜,而这一举动是:1. a4!


3

这里有很多答案提出了重要的博弈论观点:

  1. 国际象棋是一种有限的确定性游戏,具有有关游戏状态的完整信息
  2. 您可以解决有限的游戏并确定完美的策略
  3. 国际象棋足够大,以至于您无法使用强力方法完全解决它

但是,这些观察结果遗漏了一个重要的实用点:不必为了制造出无与伦比的机器而完美解决整个游戏

实际上,很可能您可以创建一个无与伦比的国际象棋机器(即永远不会输,并且总是会强制赢或平局)而无需搜索可能状态空间的一小部分。

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

  • 诸如Alpha / Beta或MTD-f之类的树修剪技术已经大大减少了搜索空间
  • 可证明的获胜位置。许多结尾都属于此类:例如,您无需搜索KR vs K,这是一个公认的胜利。通过一些工作,有可能证明更多的保证胜利。
  • 几乎可以肯定的胜利-对于“足够好”的游戏而没有任何愚蠢的错误(例如关于ELO 2200+?),许多棋位置几乎都是可以肯定的胜利,例如体面的物质优势(例如额外的骑士)而没有补偿性的位置优势。如果您的程序可以强制执行这样的位置,并且具有足够的启发式方法来检测位置优势,则可以安全地假定它会获胜或至少有100%的概率被抽中。
  • 树搜索试探法-具有足够好的模式识别能力,您可以快速关注“有趣”动作的相关子集。这就是人类大师的演奏方式,所以这显然不是一个坏策略……..而且我们的模式识别算法也在不断完善
  • 风险评估-更好地了解职位的“风险”,可以通过将计算能力集中在结果更加不确定的情况下来实现更有效的搜索(这是“ 静态搜索”的自然扩展)

结合以上技术的正确组合,我可以断言可以创建“无与伦比的”国际象棋游戏机。我们与目前的技术距离可能不太远。

请注意,几乎肯定很难证明这台机器不能被击败。这可能类似于Reimann假设-我们非常确定它可以完美发挥作用,并且将有经验性结果表明它从未丢失(包括对自己的数十亿次平局),但实际上我们没有能力证明给我看。

关于“完美”的附加说明:

我谨慎地将游戏机描述为“完美”,因为这暗示了异常强大的附加条件,例如:

  • 无论有多复杂的获胜组合,总是在有可能强迫获胜的所有情况下获胜。在赢/平局之间的边界上会存在一些很难完美计算的情况。
  • 利用所有有关对手游戏中潜在缺陷的可用信息,例如推断您的对手可能过于贪婪,并故意打出比平时稍弱的路线,理由是它更有可能诱使对手犯错误。对于不完美的对手,如果您估计您的对手可能不会发现强制胜利,并且输给自己的可能性更高,那么实际上最好是输掉

完美(特别是考虑不完善的和未知的对手)是多少不是简单地无与伦比困难的问题。


拥有不完美的对手不是一个真正的问题。这只会使完美的玩家以更少的动作赢/平(无论完美结果是什么)。每个位置上的最佳移动始终优于或等于其他可能的移动(根据定义)。因此,次佳的动作会让您的对手更早达到最佳的最终状态(赢/平),甚至可以迫使对手取得更好的结果。例如,如果白色将完美打造成黑色将永远放松,那么如果白色仅打出一个次佳的举动,则黑色可能会获胜。但是,可以,这会稍微增加分析的复杂性。
SDwarfs

@Stefan-如果您关心最佳比赛,那么不完美的对手将是一个巨大的问题。尤其是,如果您知道对手犯错的机率足够高,那么您可以设想实际上最好是输掉一局(例如,完美的对手肯定会击败您的一局)的情况。
mikera 2013年

我认为最佳发挥是指以零风险获得最佳结果。您的对手可能是“弱者”,但不幸的是,当您打出失败的举动时,他/她可能会做出良好的举动。关心次优的对手只有在输球之间做出选择的情况下才有意义,在输球之间,其中一个人((次优打法)对手实际上导致平局或获胜的机会较大,有机会犯错。
SDwarfs 2013年

1
这不是博弈论中最优的通常定义。最佳通常意味着最大化预期结果。在这种情况下,理想的参与者只要平均获得更好的结果就可以承担一些风险。
mikera

在这种情况下,您完全正确!
SDwarfs

2

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

那里有两个相互竞争的想法。一种是您搜索所有可能的移动,另一种是您基于启发式决定。启发式系统是一个很好的猜测系统。如果您正在寻找所有可能的动作,那么您将不再猜测。


实际上,报价是正确的。程序会查看当前位置双方的所有可能动作,并使用试探法找到合适的动作,以朝着计算机有利位置的方向驱动游戏。
比尔蜥蜴

1
不,他们不会考虑所有可能的动作。他们使用零移动启发式修剪树。
亚历克斯

2

“国际象棋有一个完美的算法吗?”

就在这里。也许是怀特永远赢。也许是布莱克永远赢。也许两个人至少要始终保持联系。我们不知道哪个,我们永远也不知道,但是它确实存在。

也可以看看


1
作为一名相当不错的国际象棋棋手,并且多年来对这一问题进行了广泛的研究,我确信99.9%的国际象棋棋手对两名棋手的完美策略都会导致平局(与棋手证明的一样)。也有证据表明,随着球员实力的提高,平局的百分比也会增加。
mikera'2


2

完全可以解决。

有10 ^ 50个奇数位。据我估计,每个位置至少需要存储64个舍入字节(每个正方形具有:2个从属位,3个位)。整理后,就可以识别出将军身份的位置,并可以将位置进行比较以形成关系,从而显示出哪些位置导致大型结果树中的其他位置。

然后,如果存在这种情况,该程序仅需要找到最低的一侧将死根。无论如何,在第一段末尾都相当简单地解决了国际象棋。


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 ^ 10个Planck时间或每10 ^ -34秒评估一次移动。那是不可能的短时间(比观察到的最短时间短约16个数量级)。让我们乐观地说,在当前或预见的非量子P是NP技术的适当子集的基础上运行超杜比良好的实现,我们希望可以评估(采用向前迈出的一步,以100 MHz的速率(每10 ^ -8秒一次)将结果状态分类为中间状态或三个终端状态之一。由于该算法可高度并行化,因此我们需要10台第26台这样的计算机,或者我体内每个原子大约需要一台这样的计算机,以及收集其结果的能力。

我想对于暴力解决方案总会有一点希望。我们可能会很幸运,并且在只探索白人可能的开局步伐之一时,都选择了一个扇出的平均水平低得多的人,以及白人总是赢或赢或平局的人。

我们还希望缩小国际象棋的定义,并说服所有人在道德上仍然是同一游戏。我们真的需要在平局前要求头寸重复3次吗?我们真的需要让离家出走的派对展示出逃避50步的能力吗?有人甚至不知道pass规则到底有什么用吗?;)更严重的是,当他或她的唯一举动是逃脱支票或僵局是无处可逃时,我们真的需要强迫玩家移动(而不是抽签或输球)吗?如果所需的非皇后晋升不能导致立即兑现或将死,我们可以限制对典当晋升的棋子的选择吗?

我也不确定每台计算机基于散列的方式访问大型游戏后期状态数据库及其可能的结果(在现有硬件和现有残局数据库上相对可行)在多大程度上有助于缩短搜索范围。显然,没有O(n)存储就无法记住整个函数,但是您可以选择一个大整数并记住许多最终游戏从每种可能的(或者我认为不容易证明是不可能的)最终状态中向后枚举。


1
您的m =5898。FIDE棋规则定义您必须至少移动50个棋子(称为50个棋子规则)来移动棋子或棋子(不可逆地改变游戏规则),或者其中一位玩家可以要求平局。已经计算出,如果两个玩家合作并尽快要求平局,则最长可能的游戏为5898步。如果两个玩家都可以要求平局,那么继续玩就没有意义了。如果玩家注意到自己输了,他/她可以要求平局,得出相同的结果。请参阅:chess.com/blog/kurtgodden/the-longest-possible-chess-game
SDwarfs

1
注意:m = 5898是“移动”数。最大半步数为(118-3)* 100 + 3 * 99 =11797。您可以在此处找到证明(德语!):de.wikipedia.org/wiki/50-Z%C3%BCge-Regel# Schachmathematik
SDwarfs 2013年

1

我知道这有点困难,但我必须在这里投入5美分的价值。计算机或与此相关的人可能以胜利或僵局结束他/她/它参与的每一个国际象棋游戏。

但是,要实现这一点,您必须精确地知道每一个可能的动作和反应等,一直到每个可能的游戏结果,并对其进行可视化,或者使之成为分析这些信息的简便方法,并思考它是不断扩展的思维导图。

中心节点将是游戏的开始。每个节点的每个分支都象征着一个动作,每个动作都与其兄弟动作不同。在此庄园中展示它会占用很多资源,尤其是如果您在纸上进行此操作。在计算机上,这可能会占用数百个Terrabytes的数据,因为您将进行很多次修剪操作,除非您使分支返回。

但是,记住这种数据是不切实际的,即使不是不可能的。要使计算机识别出最多(最多)8个即时可能的动作中的最佳动作,这是可能的,但并非合理的……因为该计算机需要能够处理该动作之后的所有分支,一直到得出结论,计算导致胜利或陷入僵局的所有结论,然后对一定数量的获胜结论采取行动,以防止失去结论,这将需要RAM能够处理Terrabytes中的数据,甚至更多!使用当今的技术,像这样的计算机所需要的不仅仅是世界上5位最富有的男人和/或女人的银行存款!

因此,经过所有考虑之后,就可以做到这一点,但是没有人可以做到。这样的任务将需要当今30个最聪明的人,不仅在国际象棋上,而且在科学和计算机技术上,而且只能在一个任务上完成(让它完全进入基本观点)...最终最终超超级计算机...可能至少存在一个世纪。将会完成!只是这辈子没有。


1

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

  1. 如果您的图灵机不受限制(在内存,速度等方面),则无需使用试探法,但可以计算评估最终状态(胜利,失败,平局)。为了找到理想的游戏,您只需要使用Minimax算法(请参阅http://en.wikipedia.org/wiki/Minimax)来计算每个玩家的最佳移动,这将导致一个或多个最佳游戏。

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

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

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

因此,快速的答案是:如果人类能够生存足够长的时间,那只是时间问题!


0

它也许可以解决,但令我感到困扰:即使可以遍历整棵树,也仍然无法预测对手的下一步行动。我们必须始终根据对手的状态采取下一步行动,并提供“最佳”行动。然后,根据下一个状态,我们再次进行操作。因此,当对手以某种方式移动时,我们的最佳移动可能是最佳的。对于对手的某些举动,我们的最后举动可能不是最佳的。

我只是看不到在每个步骤中怎么可能有一个“完美”的举动。

要做到这一点,(在当前游戏中)每个状态都必须在树上有一条通往胜利的道路,而不论对手的下一步行动如何(如井字游戏),我都很难时间弄清楚了。


5
完美的举动取决于“最小最大化”策略:这是使您的最低可能得分最大化的举动(考虑到对手可以做出的所有可能举动)。换句话说,它假设对手也玩得很完美。
尼克·约翰逊,

不过,这是一个有趣的观点。如果对手不采取最佳行动,是否会出现这样的情况:对最佳行动的反应会使您处于劣势?这意味着什么?
诺娜·乌尔比斯

我不是数学家,也不是一个很好的棋手。我还假设理论上(应该知道整个游戏树)答案是“是”。但是,既然您提到了这个问题(另一个玩家的选择),这是否意味着系统可能会不可预测?游戏中是否存在其他玩家可能会处于劣势的中点?这是否有点像Perceptron(神经网络)可以学习“ OR”和“ AND”但却永远无法掌握“ XOR”的事实?国际象棋是“混沌”系统的一个例子吗?FWIW,恕我直言,我认为目前的答案似乎是“不知道”。
monojohnny 2010年

@Nona根据定义,此举将是最好的举动。没有假设。
piccolbo 2010年

@piccolbo:更好-最好的举动之一。在国际象棋中,有一些位置,多次移动会导致相同的结果(在相同数量的移动中赢,输或输)。
SDwarfs 2013年

0

在数学上,国际象棋已通过Minimax算法求解,该算法可以追溯到1920年代(由Borel或von Neumann发现)。因此,图灵机确实可以下完美的象棋。

但是,国际象棋的计算复杂性使其实际上不可行。当前的引擎使用了一些改进和启发式方法。当今,顶级引擎在演奏强度方面已经超过了最优秀的人,但是由于他们使用的启发式算法,在给定的无限时间内它们可能无法发挥完美(例如,哈希冲突可能导致错误的结果)。

就完美玩法而言,我们目前最接近的是残局表库。生成它们的典型技术称为逆行分析。目前,最多可以解决六个位置的所有位置。


-1

是的,在数学上,国际象棋被归类为确定型游戏,这意味着它对每个第一位玩家都有完美的算法,即使对于无限制的国际象棋棋盘,事实也是如此,因此,也许有一天,量子AI会找到完美的策略,游戏不见了

观看此视频的更多信息:https : //www.youtube.com/watch?v=PN-I6u-AxMg

还有量子棋,没有数学证明可以确定它是游戏http://store.steampowered.com/app/453870/Quantum_Chess/

那里有关于量子国际象棋的详细视频https://chess24.com/en/read/news/quantum-chess


-2

当然,板上五十种可能组合的力量只有10。考虑到这一点,要进行各种演奏,您需要在10步之内达到50步的力量(包括重复次数乘以3)。因此,国际象棋一百步棋的力量不足十。只要选择那些导致将死的人,你就可以走了


-3

您只需要64位数学运算(= chessboard)和按位运算符(=下一步可能的动作)。很简单。蛮力通常会找到最好的方法。当然,没有适用于所有职位的通用算法。在现实生活中,计算也受时间限制,超时将停止计算。一个好的国际象棋程序意味着繁重的代码(通过,双重典当等)。小代码不能太强大。开放式数据库和残局数据库只是节省了处理时间和某种预处理的数据。我的意思是设备-操作系统,线程位置,环境,硬件定义要求。编程语言很重要。无论如何,开发过程很有趣。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.