用c语言写井字棋 c语言源代码游戏 求教一个问题

井字棋的最优策略竟是先占角! | 科学人 | 果壳网 科技有意思
井字棋的最优策略竟是先占角!
本文作者:matrix67
井字棋可能是最简单的棋类游戏了,它简单到了成年人之间玩几乎总是平局的地步。因此,这个游戏貌似最多只能哄哄小孩子。不过,对井字棋游戏中所有可能的情况进行一番细致的分析,你会发现一个你或许不会料到的惊人结论——先手的最优策略不是稳坐正中央,而是先占一个角!
几年前,果壳网小编曾经自己动手写过一个和人下井字棋的电脑程序,运行之后却发现电脑先走时总爱把第一步棋下在角上;检查程序代码许久后才意识到,电脑程序可能并没有问题。人们往往有一个定势思维,认为由于从正中央出发能够得到的连线最多,因此最优策略必然是先占住正中央这块宝地。然而,经验是一回事,实际上就是另一回事了——这个电脑程序看似很没头脑地往角里下棋,但几乎总是在赢。
无独有偶,国外著名的 Geek 漫画 xkcd 最近画了一幅井字棋最优策略完全图,同样给出了这个违反直觉的结论:第一步走在角上才是最佳的策略。
图片来源:/832/
这究竟是为什么呢?不妨让我们看一看,如果第一步真的走角,会发生哪些情况。
先手先占角!
游戏开始后,二话不说先占上一个角(比如左下角吧),那么对方总共有五种本质不同的应对策略:占据靠近你的那条边,占据靠近你的那个角,占据远离你的那条边,占据远离你的那个角(即对角),以及占据正中央的位置。不可思议的是,在这五种策略中,前面四种都是陷阱——如果对方不慎选择了前面四种策略中的任意一种,他就必然输掉。
上图显示了在这四种情况下你可以如何把对方一步步逼上绝路。假设对方走正下方,占据了一个靠近你的边(最左边的那个图),你就可以占据正中央来应对,逼迫对方不得不走右上角。这时,只需要在左上角放下一子,你就赢定了——图中出现了两条只差一子的连线,对方不可能兼顾得了。
右边几个图显示了对方第一步棋的其它几种走法。选择合适的位置应对他,都可以在下一步迫使对方只剩一种走法,接下来你便可以下出“一箭双雕”的棋,让对方无法彻底封杀你。
也就是说,当你占据棋盘一角后,在对方下一步棋的八个可选位置中,其中七个位置都是必输的,陷阱摆满了几乎整个棋盘。在面对“先走一角”的诡异开局时,你的朋友说不准就会慌了手脚,没能冷静地占住中间,决定了必败的命运。
对方要是真的走了正中间,你仍然有赢的机会。你可以占住右上角的位置(如上图)。如果对方不幸走了剩下的两个角中的一个(上图左),你便能故技重施,再次取得胜利。只有对方选择了边上的位置(上图右),才能躲过这一系列的陷阱,最终变成平局。
难怪计算机会把角上的位置当作宝地呢。
后手还是先占角!
作为后行者,你遇到的往往是“先走中间”的经典开局。此时,千万别忘了,先占角仍然是一条金科玉律。如果你不慎走了某条边的位置,对方可就赢定了!对方可以向上面的第一幅图那样,在正右方下子应对,逼迫你把下一步棋落在正左方。此时,对方便可占据右上方的位置,同时产生出两条仅差一子的连线。右边三幅图则显示,如果你在角上应对,最终总会是一盘和棋。
反过来,先手第一步走中间,棋盘上剩下的八个位置中有四个位置都是会导致对方必败的陷阱,因此先手第一步走中间后,获胜的机会也并不小。井字棋可以算是决策树最简单的游戏之一了。在历史上,对井字棋的类似分析很大程度上启发了人们对组合游戏的认识,在博弈论中起着举足轻重的作用。
你可能感兴趣
护士,实验党
佩服佩服!以后下棋先下角,擒贼先擒王……
显示所有评论
全部评论(93)
护士,实验党
佩服佩服!以后下棋先下角,擒贼先擒王……
我小时候都是占中间的啊-.-
楼主,我看到你的博客上的那个N体的图了,很有意思
哎~找个人来试试~
果壳网心事鉴定组编辑,科学松鼠会成员
小编曾经。。。要写“果壳网小编曾经“。。。
那个图好牛逼。。
嗯,很复杂。。。。
引用 半夏 的回应:佩服佩服!以后下棋先下角,擒贼先擒王……nice
感觉先手没下中间,根据定式,后手的一般也会下中间,然后我赢的机会依然只有二分之一...井字棋这种东东,毕竟还是大家玩烂了的东西啊...
录音爱好者,万有青年养成计划入围选手
算法,都是算法……
如果双方都是无限聪明的话,最终一定和棋,也就没有最优策略之说了。
金角银边,下围棋的同学应该对这个结论不太惊讶吧~
类似的一些棋都是这个理儿
在“学习”,就件样试了一遍~最差的结果是和棋
引用 苏颜 的回应:金角银边,下围棋的同学应该对这个结论不太惊讶吧~还有草肚皮呢
另外,咱是业余四段,就差那么一点小分就升5了
最优策略本来就是基于对方和我同样聪明的情况下做出的决策引用 daobahan 的回应:如果双方都是无限聪明的话,最终一定和棋,也就没有最优策略之说了。
m67大牛的文真是大赞,最近刚比完五子棋AI,对于博弈树还算是入了门
还是很颠覆原来的惯性思维
没怎么玩过这个,原来和五子棋这么像~
博弈树搜索
引用 Cielo 的回应:没怎么玩过这个,原来和五子棋这么像~看到这个留言,突然想这道理可以延伸到五子棋吗
井字棋以前没考虑过这么多呢~~matrix67是科学松鼠会的?
【话说,小编这个坑爹的称呼,到底是谁发明的啊】【不知道哎,大概是笔者吧……】【哼 笔者小编统统去死……】引用 0.618 的回应:小编曾经。。。要写“果壳网小编曾经“。。。
这种游戏也有技巧啊
这个搜索规模相当小了...
哈哈,十几年前就会了,好多人都奇怪我为什么从来不占中间,虽然说不出什么道道,但实战经验告诉我占角赢面大,得胜率基本在90%
错误的经验代代相传啊。
显示所有评论
(C)2017果壳网&&&&京ICP证100430号&&&&京网文[-239号&&&&新出发京零字东150005号&&&&
违法和不良信息举报邮箱:&&&&举报电话:后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
主题帖子荣誉
新鱼友, 积分 97, 距离下一级还需 3 积分
新鱼友, 积分 97, 距离下一级还需 3 积分
查看: 1359|回复: 5
& 累计签到:52 天连续签到:0 天
马上注册加入鱼C,享用更多服务吧^_^
才可以下载或查看,没有帐号?
本帖最后由 MC_e_e 于
15:04 编辑
本程序在c-free5运行通过
不加注释,因为本人语文不好,如果程序有问题或各位大哥优化了程序源代码,请给小弟发个邮件
15:04 上传
点击文件名下载附件
1.5 KB, 下载次数: 85
& 累计签到:54 天连续签到:0 天
连编译都没编译&&就发上来了& & 这么多代码看的我头都大了&&我用WIN-TC编译还出错&&晕死
& 累计签到:12 天连续签到:0 天
谢谢哈,拿走咯
& 累计签到:467 天连续签到:1 天
本帖最后由 颓废的青春 于
22:22 编辑
玩过了,感觉还不错
& 累计签到:44 天连续签到:0 天
我不是VIP,我不骄傲!
& 累计签到:46 天连续签到:1 天
强烈支持楼主ing……
小甲鱼强烈推荐
不二大神用图文并茂的方式为你揭开Chrome浏览器的神秘面纱,大量WEB技巧,不容错过哦!
编写一个小爬虫,统计淘宝上某一件商品的月销量。
特效不会给你基本工资,但却能让你升职加薪
- - - - - - - - - - - -
有备无患,念念不忘
移动客户端下载(未启用)
微信公众号
Powered by
Copyright &
&&& All Rights Reserved.当前位置 & & tag:游戏
&&&教程标题&&&&&& &&& &&& &&&&
&& && && & &&&
&&&&发布日期 &&阅读
视频教程列表
文章教程搜索
输入您的搜索字词
提交搜索表单
tel:<font color="#FF30058声明:本站内容部分源于网络转载,出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,请咨询相关专业人士。
如果无意之中侵犯了您的版权,或有意见、反馈或投诉等情况, 请联系本站,
Copyright (C)2017
| 欢迎来到杭州厨师培训(window.slotbydup = window.slotbydup || []).push({
id: '4540180',
container: s,
size: '250,200',
display: 'inlay-fix'
热门资料排行
添加成功至
资料评价:
所需积分:0}

我要回帖

更多关于 python小游戏井字棋 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信