无论是中国象棋,还是围棋和国际象棋,很多棋手经常会存在某个疑虑,例如:中国象棋、围棋、国际象棋存在必定不败的下法吗?
我们把常接触的棋类,比方说只讨论围棋,中国象棋和国际象棋。把它们的规则和行为都抽象出来,并且假设:他们的规则都是完善、正确的,没有漏洞,也没有冲突。
冲突既是存在重复定义的区间,一旦运算进行到这个区间就会矛盾,程序会崩溃。
注意!!这是非常理想化的情况,也是到现在都没有“能思考”的电脑AI的根本原因!!!
建立一个空间,在这个空间中存在一个定义域,一个值域以及从定义域到值域的对应规则。
这些棋类都受到棋盘和棋子在物理上的约束,这个空间一定是整型的,一定是有限的。
这些棋类都受到单次行为的约束,一次行为对应唯一的一个结果。所以空间中的定义域与值域的对应函数是一一对应的。
(如果有人提出:有可能10回合前白棋领先黑棋10目,10回合后白棋又领先黑棋10目了,就不是一一对应了,我在这里解释一下,
国际象棋、中国象棋和围棋都有两个玩家,虽然棋盘上的行为不断累加,空间中的总值是不断增加的,但是为了判定输赢,两个玩家的值域必须被分开,或者以一回合(2次行为)为单位计算值域。
这样会有一个问题,比方说围棋,黑棋先手在19X19的棋盘上落子了,白棋的选择就不再是19X19了,少了一个!这是非常明显的不公平。这个问题也存在于国际象棋和中国象棋中,先攻的一方先占据资源。
我们把围棋的棋盘极端化:两个人在一个1X1的棋盘上下围棋,其余规则不变,谁胜谁负显而易见:谁先谁胜。
1X1太极端了,我们改成1X19,答案如何呢?答案是:占据了最中间点的一方胜利。那先手只需要占据最中间的点就胜利了。
(当然19X19的围棋并没有那么简单,因为围棋是有“形状”的概念的,我举1X1和1X19的例子其实限制了围棋的规则,用点线游戏偷换了点面游戏的胜负概念,规避了这个问题)
我想说的是,先手玩家的确存在优势,所以围棋是要让子的,在一定程度上可以说解决了这个问题。
那国际象棋和中国象棋呢?目前在比赛中对先后手的公平问题只能用行棋时间来缓解。在规则本身上是没有作出让步的。
从某个角度上讲,对这两种棋来说棋子的多寡不如棋子的功能和位置对胜负关系的影响大。棋手们的单次行为要考虑:是否满足行棋条件F(棋子名,棋子功能,棋子初位置,条件布尔值),行为T(棋子名,棋子初位置,棋子末位置,棋子功能)造成的局面Y(棋子状态集合,将军布尔值),有经验的棋手要考虑对手下一回合的活棋数,可动棋的行棋可能性Y+的集合,再考虑自己应对各种Y+所造成的Y++,乃至于1、2...N回合之后的局面Yn。直至某一个回合,可动棋存在并满足行棋条件Fx的条件布尔值=1,经过Tx行为造成的Yx的将军布尔值=1。
把规则分解成函数,把动作和局面用特殊的数据结构存储起来。我们假设以上的设计都是成立的,我们已经成功地设计出了一个完整的算法来模拟行棋的思考。只要有一台计算能力足够强的计算机,通过把算法和数据结构整合起来,输入到计算机中。会出现什么状况呢?
围棋会百分之百存在“最优发展”,计算机能够通过计算分析每个未落子的点位根据已有的棋形所具有的价值,来判断哪个点位落子能够收益最大化。通过向计算机输入棋谱,计算机甚至能判断目前局面上的棋形是否是陷阱,点位上的收益值是可以不断通过修改公式来完善赋值的。
最后决定是否保持优势或者减少劣势的唯一标准是:先手让子的数目。(如果规定先手让100目,别说电脑了,神仙执先也得输)如果先手让多了,电脑执后手的“最优发展”一定会赢;如果先手让少了,电脑执先的“最优发展”一定赢。反之,则一定会以最少的目数输掉。
我们假设最后这一条可变的标准也确定下来了并且完美地解决了先手优势的问题:比如先手让子100目,“最优发展”就不一定能赢了,这里的理论极限是和棋。现代围棋大赛中存在着各种各样的避免和棋的规则,像贴目后目数一样,谁下最后一子谁胜这种单纯根据开始到最后奇偶数手来判断胜负的因素是与棋局分值无关的,电脑也能接受这种胜负。
特别提出,在完全对等的游戏中增加杜绝和棋的规则,是对游戏的一种破坏:比如贴目X又3/4目。必然对先手或者后手有至少1/4目的不公平。
之前说的规则当中不可以有矛盾,就是当你规定:贴目X又3/4时先手对后手优势为0。这条规则与本身数域是整形的游戏性质是冲突的,电脑公平地进行“最优运算”到最后却被判负了……它会接受不了崩溃死机的……
说完了围棋……象棋还有必要说吗?象棋连平衡先手优势的规则都没有……是存在漏洞的游戏规则。所以象棋的“最优行棋”程序一定会存在两种结果:
1,这个漏洞是稳定的,有限的,整型的,可以利用这个漏洞得到一个先手一定会赢的行棋法。这也就宣告了这个游戏本身是一个失败的游戏。
2,这个漏洞是不稳定的,算法在这个漏洞中会跑飞到莫名其妙不明意义的数据中去,程序就死在这里了。
从编程的角度上讲,其实象棋的规则比围棋复杂得多,因为参数比围棋多。人们普遍觉得围棋更精妙更复杂的原因1是围棋的棋盘比象棋大得多,形成的形状比象棋多;2是在象棋中是没有加法的,棋子的数目只减不增,越是残局行棋可能性越少计算量越少。如果把象棋改成19X19,棋子的数目应对棋盘,还能往上添子儿……那将是噩梦游戏。
围棋根据先手让子的规则是存在最优下法的,是否赢取决于让子的数目,总之能达到“输得最少”。
象棋(中国象棋/国际象棋)都“有可能”存在最优下法,并且一旦存在,就一定会导致先手获胜。
人类只证明了五子棋是存在先手必胜的下法的,这份证明同时否认了五子棋这个游戏本身,直到禁手规则出现才挽救了这个游戏。
人类还没有研发出能证明围棋极限的仪器,楼上的哥们说的:宇宙级内存,只是可能遇到的一个阻碍。最麻烦的地方还在于点阵价值的即时计算,会受到“未形成的形状”的影响。也就是说可想象的数学模型对点阵价值的计算公式是不正确的——很有可能正在形成一个陷阱。
目前的计算机的能力局限于:判断1/0—1,作出行动。遇到无法判断1/0的情况——硬盘中没有存储过这个形状,就只能依照已有的公式计算,一旦这是一个棋手新发明的陷阱,这次计算就是错误的,并将导致接下来的局势无法挽回。
但是19X19大小的棋盘能形成的黑白棋形状何止天文数字!还未出现过的棋形比起已经出现过的又何止天文数字的倍数!人类不仅需要宇宙级的内存,还需要宇宙级的硬盘和宇宙级的棋谱!
只是如今的计算机已经能接受“输棋”这件事了,这是一件非常可怕的事,这意味着计算机开始有自我记忆能力了,并很有可能在将来诞生反省的能力:这陷阱我中过,这办法我试过……人类啊……快醒醒……
人类正在研发解析象棋极限的仪器,难题在于彻底地分析象棋的参数,如果这些参数是有限的,稳定的,规则的漏洞只会成为证明游戏极限的利器(就像五子棋)。如果这些参数在漏洞区间内是无限的,有多义性或多值性的……也会被证明:象棋不存在必胜行棋,从而否定先手优势。用矛盾来解决漏洞……这是人类经常用来填补“无法解释的神秘现象”的办法。
你要相信进步的人类迟早有一天会证明:古人的游戏不过如此,这些游戏存在着他们的极限。
也要相信这些古人留下来的游戏的意义:游戏是给人玩的,不是给数学理论,也不是给计算机玩的,只有人类才能在输赢中找到快乐,找到朋友,找到荣耀与自信。