主页 > 服务员中山人才网

象棋和国际象棋的电脑程序是如何设计的?

134 2024-03-13 00:35

一、象棋和国际象棋的电脑程序是如何设计的?

从国际象棋来说吧,首先要知道的三个主角是:

1.加里·卡斯帕罗夫,俄罗斯人,国际象棋前世界冠军,代表人类败于深蓝;

2.许峰雄,台湾人,计算机专家,深蓝的主要开发者;

3.深蓝,美国计算机,除了下棋什么都不会。

http://en.wikipedia.org/wiki/Garry_Kasparov

http://zh.wikipedia.org/wiki/%E8%A8%B1%E5%B3%B0%E9%9B%84

http://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)

另外推荐一本书:

《“深蓝”揭秘》,许峰雄自己写的,科学性和可读性都相当值得推荐,答案的很多内容也是基于这本书的叙述,可惜现在不在手边,只能凭记忆写了。曾经在很长时间里卡斯帕罗夫都是我偶像,读了这本书以后感觉他的形象崩坏了好多,大概就和果粉读乔布斯传的效果差不多。

http://book.douban.com/subject/1491268/

关于三人当年的恩恩怨怨就不说了,直接正题。

当年的深蓝是一台有自闭症的超级计算机,因为它的芯片也是为下棋而DIY出来的,因为这样可以提高在这个特定领域的计算效率。现在由于硬件的飞速发展已近不需要软硬兼修的弈棋计算机了,只需设计软件就可以解决问题。

弈棋软件的基本原理是决策树和剪枝算法,不同程序的区别也主要在于这些算法的细节。之前看到一个答案说枚举法,这是绝对不行的。在一盘棋中,每一步可能的走法大概有几十上百种(当然大部分都是无厘头的走法,正常人想都不会想),深蓝的计算能力是每秒2亿步,卡斯帕罗夫在长考中能考虑到14步之后的情形,请问如果仅用枚举法深蓝要算多久?数字太夸张就不算了吧。因此必须给决策树剪枝,即合理地忽略掉一些不合理的可能性,有很多不同的剪枝算法,如α-β剪枝等(下面的链接是算法在黑白棋里的应用,更好理解一些),这些都是是计算机科学基础知识的应用,有很多资料可以查阅,叙述的都比我详细,就不多说了。总之不同的剪枝算法影响的是计算的速度和深度。

http://www.soongsky.com/computer/alpha_beta.php

剪枝算法都需要依据一个估值函数,估值函数就是从任意一个局面到一个有理数的映射,用于评价当前局面对双方的优劣。估值函数需要考虑到场面上的很多变量,比如现存子力以及搭配、控制的空间、兵型、强格弱格等等问题,每一个变量都要分配不同的权重,最终相加起来得到函数值。程序的一大难点就在于变量的设置和权重的分配,这个问题是许峰雄无法解决的,但他的团队里还有国际象棋高手,变量和权重就是由棋手凭经验来设定。程序猿大概都有这感觉,最痛苦的事情不是编程而是调试,国际象棋程序的调试更加痛苦,比找程序的语法错误和逻辑错误都要困难。需要幕后的棋手们和程序一盘盘的对弈,然后棋手们要复盘分析程序哪一步走得不好,为什么会选择这一步。程序不会告诉你他为什么这样走,你只能查看运行日志,了解计算机对决策树中的各个关键局面的评分,看它错误的评估了哪些局面,从中归纳出不合理的变量权重或者没有考虑到的变量或者需要细化的变量条件。更麻烦的是,不同棋手对于同一局面的评估还可能不一样,因为他们各有自己的风格,比如弃兵获得的局面优势,保守的和激进的棋手就会有不同的评价。在传统国际象棋的理论中,你只知道各个变量的优劣,但并没有具体的数值,个人觉得如果它的研究价值足够大的话弄一个所谓的“计算弈棋学”领域出来也不是不可能。总之估值函数影响的是计算的正确性。

综上可知,剪枝算法和估值函数就是弈棋程序的两个核心内容,弈棋程序与其说是AI还不如说是程序猿和棋手的爱情啊不智慧结晶。

除此之外还有很多简单粗暴的方法来增加性能,比如说开局库和残局库。开局是可能性最多又最难评估的阶段,好在我们几百年的对弈经验中已经总结出来了比较完善的开局库,有了这个就不用费脑子想头十几步棋怎么走了,除非对手首先非主流。残局库更加凶残,只要局面满足了一定条件,你就把它当成DFA(确定有限状态自动机)来看吧,就是说该死的一定会死。

最后再说说人类怎么面对这个怪物。当年华山论剑卡斯帕罗夫是6盘以2.5比3.5惜败深蓝,但假设总共下60盘棋(当然要有足够的休息了),那我敢打包票卡斯帕罗夫会赢。面对深蓝最好的办法就是个两个词:次优,反推。

次优就是说,在自己也不确定的情况下,选次优的走法。因为在程序的计算中,想得最深的是如何应对你最有可能的走法,其他可能性的计算深度会少一些,那么变数就会更大,当它想了那么多结果你不照它想的走,那它很多局面就白算了。开局也一样,选择实例更少的开局,可以让程序尽早脱离开局库,开始独立思考。

反推就只有卡斯帕罗夫这样的大师能做到了,即通过大量的对抗,猜测它的估值函数的各个权重(这当然是保密的内容),从中找到设计者没找到的不合理之处,借此诱使程序进入自己想要的局面。人类可以针对机器改变自己的策略,而机器不会适应对手,这也是很多科幻电影的必杀技之一吧。

但是现在,由于计算机的速度一直在增长,即使剪枝算法和估值函数完全不改变,它的水平也会变强,借用一句老话就是,人类已经挡不住深蓝们了,因此也不会再有蛋疼的人机对弈比赛了。不过好在计算机的能力(应该是)永远不可能枚举出棋盘上的所有可能性,否则计算出了必胜的策略,我们就只能把国际象棋像Tic-Tac-Toe一样扔进垃圾堆了。

二、象棋与象棋的区别?

只能说是双包胎关系,唯一区别就是一个先一个后

三、象棋为什么叫象棋?

你好,很高兴回答你的问题。

说起中国象棋,想必很多人都会,作为一种益智游戏,象棋已经有着几千年的历史,关于象棋的起源也有不同的说法,有一种说法是起源上古神农时氏,还有一种说法是起源春秋战国时期,也有传说是韩信发明了象棋,不管怎样,象棋都已经有了几千年的历史,在历史的不断发展中,象棋也在不断进行着完善,最后才有了我们今天所见到的象棋。

在象棋中,除了主帅外,还有“车”、“马”、“象”、“士”、“炮”、“兵”等棋子,然而象棋为什么以象棋命名?而不是叫车棋、马棋或者士棋呢?其实象棋中的“象”并不是指的大象本身,这里的“象”是象征的“象”,古代人起初发明象棋的时候,就是想用它来象征沙场上的战斗,在象棋上运子就代表着在战场上排兵布阵,因此象棋的命名和棋盘上包含的棋子并无多大关系。

为了尽可能真实的贴近真实战场,象棋上的每个棋子都有不同的含义,比如象棋中有五个卒,这是为什么呢?据说这是参照了秦始皇时期士兵的原型,秦始皇的士兵都是五个人一组,而且每个士兵都拿着不同的武器,一旦作战,五个人就成为一个战斗小组,相互之间互相配合,兵器也能取长补短,这样才能达到更好的战斗效果。

在象棋中有这样一条规定,马走日,象走田,这是因为古代的马只能在白天活动,而象走田,是因为远古时期人们曾用大象来耕田,有人说中国没有大象,其实远古时期中国是有大象的,只不过后来灭绝了,在河南新郑博物馆,就有保存的大象残骸,在很多商朝人的陪葬品中,也有不少象牙存在,这也足以说明大象在中国远古时期是存在的。

除此之外,象棋中每个棋子都有特定的含义,人们用象棋的运子来演绎战场上的排兵布阵,对于古人的智慧,真是令人十分佩服啊!

四、象棋旋风VS象棋巫师?

象棋旋风肯定比巫师难度高。免费版最好的是象棋名手3.26和象棋旋风四代比赛版,棋力可以和特级大师抗衡。还有更高的,就是最新商业版名手和旋风,但价格甚高,暂时不建议购买。

五、象棋大师怎么下象棋?

象棋大师下棋的过程一般如下:

1. 布局:先将自己的棋子摆放在中央,然后再将对手的棋子摆放在对应位置。

2. 开局:根据局面情况,选择合适的走法,如进攻、防守、控制中心等。

3. 中局:在棋盘上形成多个势力范围,通过各种手段争夺优势,并尝试将对手将军或困住。

4. 残局:在棋子数量较少的情况下,进行精确的计算和布局,争取取得胜利。

5. 结束:当一方将军无法避免被吃掉时,游戏结束,另一方成为胜者。

象棋大师在下棋时需要考虑很多因素,包括棋子的位置、走法的优劣、对手的反应等等。同时,他们也会根据自己和对手的特点和风格,采取不同的策略和战术。

六、为什么象棋比赛选手用的棋盘,象棋子都那么廉价,随便一张皮革棋盘就搞象棋比赛?

小时候学棋,有学生家长问老师,要不要买那种精制礼盒装的玻璃象棋(01年左右,商店应该是卖300块,那时候普通一副象棋也就5-10块,折叠棋盘的不到30)。

老师说:用普通的棋就行,特级大师来了随便剪几张纸片,用粉笔在地上画个棋盘,就能一直赢你,没意义。

如果说在电子竞技里,鼠标、键盘这些外设对操作有一定帮助,那么棋盘棋子这些对棋手水平的影响几乎可以忽略不计,干净能用即可。

七、爸爸喜欢下象棋,有什么好的下象棋的APP吗?

第一,“天天象棋”

这是目前国内最大的手机象棋下棋平台,很多职业棋手、业余高手都在天天象棋下棋,还有可以看企鹅电竞的象棋大师直播。

第二,“中国象棋”

就是竹子界面的,人气仅次于“天天象棋”,“中国象棋”最大的特点就是有很多棋谱可以学棋,包括象棋布局、象棋中局、象棋残局、象棋全局等等,“中国象棋”不但可以在手机上联网下棋,也可以学习各种棋谱。

第三,“JJ象棋”、“博雅象棋”、“多乐象棋”

这3款手机象棋app也是可以在手机上联网下棋,但人气活跃度和用户数量就不如“天天象棋”和“中国象棋”了,我也玩过这3款手机象棋app,象棋界面精美,下棋体验综合起来还算不错,值得推荐。

第四,“象棋巫师”手机版

这是单机象棋app,有不同难度的电脑挑战,在手机没有网络的情况下、在搭车旅途的无网休闲时间,和电脑下下棋也是不错的。

象棋app目前还是比较多的,但是大多数app都做的不太尽人意,这里推荐几款自认为比较优秀的象棋app:

1,腾讯天天象棋,这款软件无疑是当今手机象棋app的霸主,每天光评测在线人数大概就有几十万人,总在线人数想必更惊人。各大象棋主播也都在这个平台上聚集,可以说高手云集。软件的优点是界面简洁,功能丰富,操作方便,缺点就是软件作弊也不在少数,不过这也是各大象棋app难以避免的问题;

2,中国象棋,这款软件是我本人接触最早的一款象棋app,丰富的杀法大全,经典的排局以及残局,是学习象棋的不二选择,属于比较良心的象棋app,缺点就是在线玩家较少,在线匹配经常要等很久,凌晨过后基本就没人玩了。其实这款app最初的玩家也不少,可能是天天象棋的出现,才让这款app渐渐衰落。这款app应该更适合学棋使用。里面内置的杀法大全和经典残局,通过不断的钻研和练习,想必对提高象棋水平有巨大的帮助;

3,JJ象棋,JJ象棋不是一款独立的app,而是JJ游戏大厅里的一款游戏,而且目前只有iPad版本,这款象棋app制作也很精良,画面精美,在线玩家也有不少。缺点就是功能比较单一,而且高手好像比较少,原因可能也是软件比较少。

手机端主要的象棋app基本上就这些,其他像多乐象棋、博雅象棋这些app,基本都属于苟延残喘。本人手机里有两款app,一个是天天象棋,平时下棋的时候用,另一个就是中国象棋,用来学习或者打谱拆棋。朋友们觉得不错也可以借鉴一下!愿与棋友们共同进步。

图文来自网络,侵权联系删除!

八、中国象棋如何打谱?

谢邀~打谱嘛,是一个循序渐进,步步提升的过程,关键还有看你目前现在的水平,段位。

太简单的棋, 一眼就能看见答案,虽然轻松,但对自己棋力的提升帮助不太。 太难的,玄乎的棋,一来学习坡度大,容易对牛弹琴,听不懂所以然,学习效果有限,二来打击自己的自信心,挫败感太强,不利于长期学习。 看不懂的棋,无论数量打再多。对自己的提升也是相当有限。 打谱的方法 有很多,每个人都有自己的一套方法,依鄙人之挫见,要打谱的话,最好打些自己能理解的,俗称可理解性输入。 我们可以拆分性学习,分开局,中局,拆。 1,开局看一些著名的大师名作,如黄少龙, 闫文清,张强大师的书等等。可以适当背一些 布局,吸收前人的布局观,优秀理念。2, 中局可以看,基本战术,入局手段,等等。 如万春林以前出的有,运子,弃子,夺子,技巧丛书等等。例子比较丰富,典型,思维坡度也恰到好处。 每看一局,都有不一样的收获。 初看绞尽脑汁,百思不得其解。 在一番苦苦思考后,恍然大悟,茅塞顿开。颇有一番成就感 。 正如古诗所说,山重水复疑无路,柳暗花明又一村。 说的就是这种感觉 。

这是鄙人之经验分享,略有班门弄斧之嫌,见笑见笑。 若有不足之处,望各位棋友多多包涵,与指教。 也祝题主在学棋之路,收获不一样的风景, 经历更多的精彩~

九、如何快速提高象棋水平?

本人北漂在北京,

只要有路边摊,就是当地冠军。天天象棋最高7-3

目前象棋拼开局,年轻人都用快速攻杀。

推荐一个开局进攻棋,叫牛头滚。

对于一般选手,可以扩大先手。

上网搜这个变化视频,学会了就自己去天天象棋练习,就练习这个开局。

把四个套路练习明白,至少中盘就结束战斗。

特级大师不爱用,是因为容易和棋。

而普通人根本就是差步数,咬不住就是输。

后手主要练习屏风马。

挺三卒,

而且下棋主要是亮车,通马路,炮瞄着不要轻易发射,

其实成为当地高手很容易。

如果有人希望找陪练,我可以陪您,加我微信。本人熟悉各种开局速攻。

你把你赢的视频用手机录下来,截屏发到自己的抖音,

你就会感觉下棋迅速杀死对方的快感,而不是磨来磨去的无聊。

十、天天象棋的象棋游戏

象棋作为中国传统的国粹之一,自古以来就深受人们喜爱。无论是老年人还是年轻人,象棋游戏都是一项富有挑战性和趣味性的智力运动。而在当今网络时代,天天象棋的象棋游戏成为了许多人下棋学习、娱乐放松的首选。

天天象棋网站介绍

天天象棋是一个专注于提供在线象棋对局服务的网站,拥有庞大的用户群体,涵盖了各个年龄层的象棋爱好者。在天天象棋网站上,用户可以轻松地与全球的棋手进行实时对弈,提高自己的棋艺水平。

同时,天天象棋网站还提供了丰富的象棋教学内容,包括开局技巧、残局练习等,帮助玩家提升下棋的技巧和策略意识。

天天象棋的象棋游戏特点

天天象棋的象棋游戏具有以下特点:

  • 界面简洁清晰,操作便捷流畅。
  • 在线对弈,随时随地与他人对战。
  • 棋力分级,匹配合适的对手,保证对局的公平性。
  • 丰富的棋谱库,满足不同用户的需求。
  • 社区互动,与其他棋手交流学习。

如何利用天天象棋提升棋艺

想要在象棋领域有所进步,除了不断练习外,利用天天象棋的服务也是一个非常好的选择。以下是一些建议:

  1. 每天坚持在天天象棋网站上进行对局,积累实战经验。
  2. 参加网站举办的象棋比赛,锻炼自己的比赛心态和棋艺。
  3. 定期学习棋谱,总结对局中的失误并加以改正。
  4. 结交更多棋友,互相切磋学习,共同进步。

天天象棋的象棋教学内容

天天象棋网站提供了丰富的象棋教学内容,帮助用户提升棋艺。其中包括:

  • 象棋基础知识的介绍,适合新手快速入门。
  • 象棋战术技巧的讲解,帮助玩家提高下棋的策略性。
  • 名家棋谱的解析,学习大师们的下棋思路。
  • 常见残局练习,提升解局能力。

结语

天天象棋的象棋游戏为广大象棋爱好者提供了一个交流学习的平台,无论是想要提升棋艺还是纯粹享受下棋乐趣,都能在这里找到满足。希望大家能够利用好这一资源,不断挑战自我,提升棋艺水平,享受下棋的乐趣。一起来天天象棋,开启你的象棋之旅!