中国象棋中亚洲棋规循环问题的解决
- 格式:pdf
- 大小:386.14 KB
- 文档页数:6
2024年新修订:中国象棋比赛规则
背景
中国象棋是中国传统的棋类游戏,在全球范围内广受欢迎。
为
了促进象棋比赛的公平性和规范性,我们在2024年对中国象棋比
赛规则进行了修订。
目标
我们的目标是制定简单明确的比赛规则,以确保比赛的公平性
和公正性,同时避免引入法律复杂性。
修订内容
1. 棋局开始时,双方棋手将棋子摆放在标准布局上。
2. 棋局进行时,每位棋手轮流走子,一次只能走一步。
3. 棋手可以选择移动自己的棋子,但不能移动对方的棋子。
4. 某一方棋手的走子时间不能超过规定的时间限制。
超过时间
限制的棋手将被判输。
5. 当某一方的将军时,对方棋手必须在下一步中解除将军威胁,否则将判负。
6. 若棋局进入僵局,即双方棋手连续走相同的棋步3次,或连
续50步没有吃子和移动兵卒,将判和棋。
结论
通过这些新的修订,我们相信中国象棋比赛将更加公平、公正,并能够吸引更多的参与者。
这些规则的简洁性将有助于提高比赛的
可理解性和操作性,同时避免引入不必要的法律复杂性。
我们期待
在2024年的比赛中见证这些新规则的实施。
2024年新规:中国象棋比赛规则
引言
本文档旨在介绍2024年中国象棋比赛的新规定。
这些规则旨在提高比赛的公平性和竞争性,同时简化规则结构以减少法律复杂性。
比赛规则变化
以下是2024年中国象棋比赛的新规定:
1. 时间限制:
- 单局比赛时间限制为45分钟,每人每局拥有3次延时申请机会。
- 延时申请的时间限制为每次10秒钟。
- 比赛中不再允许暂停时间。
2. 棋局输赢规则:
- 若一方棋手的将军状态持续10个回合,该方判负。
- 若双方连续50个回合没有吃子或移动兵卒,比赛宣告平局。
3. 棋子移动规则:
- 兵卒只能前进,不再允许后退。
- 兵卒达到对方底线后,可以晋升为除将帅外的任意一种棋子。
4. 禁止规则:
- 禁止将帅对面直线相对站立的情况。
- 禁止双方各自的卒弃位后,卒不能回退。
5. 罚则:
- 违反禁止规则的一方将被罚以失去一次延时申请机会。
- 违反禁止规则的一方将被罚以损失一次移动棋子的机会。
结论
2024年中国象棋比赛规则的变化旨在提高比赛的公平性和竞争性。
这些规定包括时间限制的调整、棋局输赢规则的修改、棋子移
动规则的变化、禁止规则的新增以及相应的罚则。
希望这些新规定
能够为中国象棋比赛带来更多的刺激和乐趣。
象棋比赛编排方法一、引言象棋作为中国古老而精妙的棋类游戏,在我国有着广泛的普及和深厚的文化底蕴。
在象棋比赛中,合理的编排方法对于比赛的公平性和顺利进行起着至关重要的作用。
本文将介绍一些常见的象棋比赛编排方法,以供参考。
二、循环赛编排方法循环赛是象棋比赛中常见的编排方式之一。
在循环赛中,每位选手都将与其他选手交替对阵,确保每位选手都能与其他选手比赛一次。
循环赛编排方法的优点是公平性高,每位选手都有机会与其他选手进行交锋,但缺点是比赛周期较长,时间成本较高。
三、瑞士移位编排方法瑞士移位编排方法是一种常用于大规模象棋比赛的编排方式。
该方法根据选手的胜负情况进行编排,将胜者与胜者、负者与负者进行匹配。
比如,第一轮比赛结束后,胜者与胜者进行匹配,负者与负者进行匹配。
通过这种方式,可以确保每位选手都能与实力相当的对手进行比赛,提高比赛的公平性。
四、淘汰赛编排方法淘汰赛是象棋比赛中最常见的编排方式之一。
在淘汰赛中,选手将按照预设的规则进行比赛,输者被淘汰,胜者继续晋级。
淘汰赛编排方法的优点是比赛周期短,紧张刺激,但缺点是公平性较低,较强的选手可能会在早期就被淘汰。
五、积分编排方法积分编排方法是一种常用于团体比赛的编排方式。
在积分编排中,每位选手在每轮比赛后获得相应的积分,积分高的选手排名靠前。
通过积分编排,可以直观地了解每位选手的实力并排名,但可能存在因为积分计算方式不公平而导致的争议。
六、随机编排方法随机编排方法是一种较为简单和公平的编排方式。
在随机编排中,选手的对手将根据随机抽签或抽签排序的方式确定。
这种编排方式可以避免一些不公平的情况发生,但也可能导致较强的选手在早期就遭遇到其他强劲对手。
七、总结在象棋比赛中,合理的编排方法对于比赛的公平性和顺利进行非常重要。
常见的编排方法包括循环赛、瑞士移位、淘汰赛、积分和随机编排等。
每种编排方法都有其优点和缺点,需要根据比赛的规模和要求来选择合适的编排方式。
希望本文介绍的象棋比赛编排方法能对广大象棋比赛组织者和爱好者有所帮助,提高比赛的质量和公平性。
象棋比赛单循环比赛编排方法象棋比赛的单循环编排方法听起来挺专业的,其实呢,也就是让每个棋手都能公平地和其他所有棋手都过一遭。
你想象一下,这就像你和班里的每个同学都打一局象棋,不放过任何一个对手。
这样大家都能在相同的起跑线上比拼,最终才能公平地决出谁是真正的棋艺高手。
1. 单循环赛的基本概念1.1 什么是单循环赛单循环赛的基本意思就是每位选手都要和其他所有选手打一遍,就像大家一起玩一场大游戏,每个人都有机会和别人较量一番。
这样安排的好处就是公平无争议,不会因为赛程安排的问题而有人觉得自己被忽视了。
就好比我们打麻将,大家轮流做庄,谁都不会觉得吃亏。
1.2 赛程安排要想把单循环赛搞得妥妥的,首先得安排好赛程。
比如,假设你有10个棋手,那每个人都要和另外9个棋手打一次,总共就要安排45场比赛。
这可不是随随便便就能搞定的,需要有个合理的安排表,把所有的对战顺序都规划好,不然比赛就像乱麻一团,谁都不晓得下一场对战的对手是谁。
2. 编排方法2.1 对战表的制定制定对战表是个技术活。
咱们可以利用一些编排工具或者程序来生成对战表,这样就能确保每个人都能按时参赛。
不过如果不喜欢搞那些复杂的工具,也可以自己动手,写个简单的对战表。
想象一下,你拿出一张大纸,把所有的棋手名字都写上,然后一项项安排好每一场对战,虽然看起来很原始,但也挺有乐趣的。
2.2 轮次的安排每轮比赛之后,大家都可以休息一下,调整心态。
单循环赛的一个好处就是,棋手们有时间从每一场比赛中吸取教训,不至于一场比赛后就感到极度疲惫。
这样,每轮比赛间隔时间的安排也得考虑到选手的身体和心理承受能力,别让他们都感到像打了场马拉松比赛一样累。
3. 比赛结果的统计与处理3.1 胜负的计算比赛结果的统计也是单循环赛中重要的一部分。
每场比赛结束后,得记录清楚谁赢谁输。
如果是积分制的比赛,那每赢一场就加一定的分数,输了就没分数或者扣分。
这个过程可能有点像填表格一样麻烦,但对最终的排名却至关重要。
2024年新规:中国象棋比赛规则1. 概述中国象棋,又称为“国际象棋”,是一种双人对弈的棋类游戏。
本规则适用于所有国内外的中国象棋比赛,旨在规范比赛流程,保障比赛的公平、公正、公开。
2. 棋盘与棋子中国象棋的棋盘由9列10行组成,共90个方格。
棋盘的两边各有一方的棋子,分别用红方和黑方表示。
棋子共有七种,分别是:将(帅)、士(仕)、象(相)、马、车(車)、炮(砲)和卒(兵)。
3. 棋子的走法与吃法每种棋子有其独特的走法与吃法,具体如下:- 将(帅)与士(仕):直走,不能横走,士(仕)不能出九宫。
- 象(相):只能走“田”字形,不能越子。
- 马:日字形,不能踩在对方的棋子上。
- 车(車):直走,不能转弯。
- 炮(砲):隔子走,不能踩在对方的棋子上。
- 卒(兵):只能直走,不能横走,且第一回合不能移动。
4. 比赛规则1. 比赛采用双方轮流走棋的方式进行,红方先走。
2. 双方选手在规定的时间内完成各自的走棋。
每方选手的用时为20分钟,超时判负。
3. 比赛中,棋子一旦放下,不得更改。
4. 比赛过程中,棋手如有违规行为,裁判可给予警告或判负。
5. 比赛结束:一方的将(帅)被对方的棋子吃掉,或一方主动认输,均为比赛结束。
5. 和棋规则1. 若双方在规定的用时内均无法获胜,判定为和棋。
2. 若双方在同一位置反复争夺,经裁判判定,可判定为和棋。
6. 比赛计分制度1. 胜方得2分,和棋各得1分。
2. 比赛分为淘汰赛和积分赛,具体赛制根据比赛等级和规模确定。
7. 比赛等级与规模1. 比赛分为业余组和专业组,业余组分为初级、中级和高级。
2. 比赛规模分为个人赛和团体赛,团体赛分为省市赛、全国赛和国际赛。
8. 比赛纪律1. 选手应遵守比赛规则,服从裁判判决。
2. 选手在比赛过程中,不得大声喧哗、干扰对手思考。
3. 选手应按时参加比赛,迟到视为弃权。
9. 比赛评委与裁判1. 比赛评委由国家级裁判担任,负责评审比赛成绩和规则。
二种中国象棋规则(亚规、中规)1,亚洲棋规象棋(软件通用世界通用)第一节:术语解释中国象棋常用术语,各具有特定涵义,兹简释如下:照着:凡走子直接攻击对方将帅者谓之“照着”,又称“照将”或“将军”。
(惯例走照着时告知对方)杀着:凡走子企图於下一着听将或连续叫将,令对方无法解救者, 谓之“杀着”。
捉着:凡走子攻击对方将帅以外之任何一子,企图於下一着吃去之者, 谓之“捉着”。
兑着:凡走子可互换吃去者,谓之“兑着”。
拦着:凡走子拦阻对方子力之左右进退移动者,谓之“拦着”。
献着:凡走子送吃者, 谓之“献着”。
闲着:凡走子不属於照,杀, 捉, 兑, 拦, 献者, 谓之“闲着”。
长照:凡走子连续不停照将, 演成归原状态者, 谓之“长照”。
此项诠释适用於“长拦”“长兑”及“长献”。
长杀:凡连走杀着者, 谓之“长杀”。
长捉:凡甲方连走捉着,而乙方被捉之子, 每着均走逃避着法, 或以他子每着直接消解之, 而甲方仍每着捉之者,谓之“长捉”。
解杀:凡走子直接化解对方之杀着者,谓之“解杀”。
此项诠释适用於“解照”与“避捉”。
反照:凡走子化解己方被照,同时又还照对方者, 谓之“反照”。
此项诠释适用於“反杀反捉”, “解杀反捉”, “解照反照”。
有根:凡被捉子如有另子保护,可以反吃者, 谓之“有根”否则谓之“无根”。
真根:凡有根子之“根”(即保护子) 于该子被对方吃去时, 确可反吃敌子者, 谓之“真根”。
假根:凡有根子之“根”於该子披吃去时, 不能移动反吃敌子者, 谓之“假根”。
一照一杀:凡走照着後续走杀着者,谓之“一照一杀”。
此项诠释适用於“一照一捉”, “一照一闲”, “一杀一捉”, “一杀一闲”, “数照一杀”, “数照一闲”。
二照一还照:一方步步叫将, 另一方在解照同时, 两步中有一步是还照, 谓之“二照一还照”。
二捉一还捉:一方步步捉子, 而另一方在解捉之时, 两步中有一步是还捉者, 谓之“二捉一还捉”。
二捉二还捉:一方连续两步循环捉子,另一方亦在解捉同时, 两步连续捉子, 谓之“二捉二还捉”。
在中国象棋、围棋比赛比较适用的赛制——积分编排制(亦称:积分循环制)。
为了适应比赛需要,在编排方式上对积分编排制进行了改造,推行了定位编排。
定位编排,使编排结果具有唯一性。
并制成电脑编排软件,取代了手工操作。
一、基本要求1 、运动员 ( 队 ) 人 ( 队 ) 数宜为双数。
2 、预先确定比赛进行若干轮次。
轮数应根据参赛人 ( 队 ) 数和录取名额确定 ,大致可为淘汰赛时所需进行轮数的一倍 , 适当有所增减 , 但最低不要少于七轮 ,以减少偶然性。
个人比赛的轮数宜取单数 , 使运动员之间先后走局数尽量趋于平衡 ,最多相差一先。
3 、每轮所有棋手 ( 队 ) 均重新编排一次 ,以确定对手和先后走。
相遇过的对手不再编对 , 同时尽量照顾到每个人 ( 队 )先后走局数的平衡。
4 、同一单位棋手 ( 队 ) 可在第一轮回避配对。
其他轮次不易回避。
二、第一轮编排办法编排公开化、程序化。
无论人工编排还是电脑编排,第一轮几乎都是由手工操作。
编排第一轮,要公布编排办法。
一般情况下,最好当众编排。
1 、确定棋手(队)序列号序列号是编排工作的必要环节。
排序方式一般有几种:⑴棋手无等级分的比赛。
尤其是业余比赛,在不清楚谁水平高低的情况下,可以混编序列号。
即用填好姓名的编排卡,采用洗牌的方式,然后一字排开,从头至尾, 1 、 2、 3 、 --- ,直至最后一名,每个人都确定了自己的序号。
⑵有等级分棋手或已知棋手水平高低的比赛。
按照参赛人(队)数,分成上下两个半区。
水平高的在上半区,反之,在下半区。
⑶采用队员总分制的方式,即在 录取个人名次的同时,也录取团体名次的比赛 。
把本队棋手适当分开,如两人参赛,应分成上下半区,先后手也平衡。
⑷序列号的区分方式可以选择。
①上半区: 1 、 3 、 5 、 7 、 9--- ,下半区: 2 、 4 、 6 、 8 、 10---。
即逢单号为上半区,双号下半区。
②上半区: 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9 、 10--- ,下半区 11 、 12、 13---,依次排序。
中国象棋玩法和技巧(3篇)(实用版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。
文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的实用范文,如工作总结、策划方案、演讲致辞、报告大全、合同协议、条据书信、党团资料、教学资料、作文大全、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!In addition, this shop provides various types of practical sample essays for everyone, such as work summary, planning plan, speeches, reports, contracts and agreements, articles and letters, party and group materials, teaching materials, essays, other sample essays, etc. Please pay attention to the different formats and writing methods of the model essay!中国象棋玩法和技巧(3篇)中国象棋[1]在中国有着悠久的历史,属于二人对抗性游戏的一种。
中国象棋比赛规则比赛办法中国象棋文化博大精深,至今已有千年历史,其中也有许多关于象棋的比赛;下面是有中国象棋比赛规则比赛办法,欢迎参阅。
中国象棋比赛规则1、淘汰制参加比赛的人(队)数较多,时间较紧,可酌情采用单淘汰制.双淘汰制或其他淘汰方式,并适当安排预选赛.附加赛。
2、大循环制在人(队)数不多而时间许可的条件下,可采用这一制度(见附录二).通常采用一局制,人(队)数较少时也可采用两局制。
3、分组循环制在人(队)数较多,不便采用大循环制的情况下,可以根据棋手(队)的等级分或比赛成绩排定"种子",分成若干组循环初赛,从各组选出一定人(队)数进行决赛。
4、积分编排制在人(队)数较多,赛程较短,而"种子"又不易安排的情况下,可以考虑采用积分编排制. 国内竞赛经常采用的编排原则和具体方法。
象棋扭转略势的方法1、兑换子力.当对方把你挤到墙根的时候,你得通过兑子来缓解压力,从而让对方的攻势削减一些.2、设法夺势.当你丢子的情况下,不要急着吃回对方的子,因为那样是不容易吃回来的,毕竟比对方少子了嘛,那么,你应该想法如何去夺势,夺势一般是用马炮去换取对方的士象,不要去换别的子,就换士象,把对方变成少士少象,只要留2个车就可以把对方玩死了,对方的子再多也是枉然.如果你是少车的话,那么你留住一车一马,其他的都去换对方的士象,也可将对方玩死,如果你只剩车炮的话,那么你得想法留住一个兵或卒,来配合车炮进攻,如果你只剩马炮的话,那么是不容易将死对方的了,所以,在中局换子的时候,一定要考虑换哪个留哪个,换对了,可做杀,换错了,将会没有任何效果.3、送子求胜.当你在下风的时候,你可以想法送子给对方,送子可不是送大子,而是送兵卒象士之类的,这样可诱敌上当,从而打破突破口来进行还杀,当然,在关键的时候也不是不可以送大子的,但送了以后,一定要有效果,否则得不偿失。
中国象棋中的武器之多情环离别钩士与象——两者皆守子,专司保卫将帅之责。
中国象棋棋规一、象棋普及系列之棋规01行棋和吃子一、对局时,由执红棋的一方先走,双方轮流各走一着,直至分出胜、负、和,对局即终了。
双方各走一着,称为一个回合。
二、棋子的走法:帅(将)每着只许走一格,只能在“九宫”内前、后、左、右移动。
任何一方走之后,都不准造成帅、将在同一条线上直接对面。
仕(士)每着只许沿“九宫”斜线走一格,可进可退。
相(象)不能越过“河界”,每着斜走两格,可进可退,即俗称“相(象)走田字”。
当“田”字中心有棋子(无论何方)占据,俗称“塞相(象)眼”,则不许进或退。
马每着走一直(或一横)一斜,可进可退,即俗称“马走日字”。
如果在先直(横)的那个交叉点有棋子(无论何方)占据,俗称“蹩马腿”,则不许进或退。
车每着可以直进、直退、横走,不限格数,但不可隔子而行。
炮的走法同车一样;吃子时必须隔一个棋子(无论何方)跳吃,即俗称“炮打隔子”。
兵(卒)在过“河界”前,每着只许向前直走一格;过“河界”后,每着可向前直走或横走一格,但不能后退。
三、行棋方将某个棋子从一个点走到另一个点,即为一着。
走一着棋时,如果己方棋子能够走到的点有对方棋子存在,就可以把对方棋子吃掉而占领该点,但不可以吃己方的棋子。
#02将军、应将、将死、困毙、自杀一、一方棋子攻击对方的帅(将),并在下一着能将其吃掉,称为“将军”,或简称“将”。
二、被“将军”方必须立即“应将”,如果无法“应将”或不“应将”,即被“将死”。
三、轮到行棋的一方无子可走,即被“困毙”。
四、一方行棋后形成帅、将直接对面,或主动送吃帅(将),或在被“将军”时误走他子而没有“应将”,这些听任对方吃帅(将)的行为均属“自杀”。
#03胜、负、和一、对局时一方出现下列情况之一,为输棋(负),对方取胜:(1)被“将死”。
(2)被“困毙”。
(3)走棋后(已离手)形成“自杀”。
(4)形成待判局面,为单方“长将”;(5)形成待判局面,为一方违反禁例,应变着而不变;(6)在规定时限内未完成对局;(7)超过了比赛规定的迟到判负时限;(8)全国比赛一次,省级(含以下)和全国少年赛(含以下)比赛两次违反行棋规定;(9)两次未走棋先按钟;(10)三次犯规;(11)在同一“自然限着”阶段内,第二次提出“自然限着”和棋,经审核不属实;(12)宣布认输;(13)对局中拒绝遵守本规则或严重违反纪律。
收稿日期:2011-05-01基金项目:国家自然科学基金资助项目(60970157);教育部博士点新教师基金资助项目(20090042120031)·作者简介:王 骄(1978-),男,辽宁沈阳人,东北大学副教授,博士·第33卷第4期2012年4月东北大学学报(自然科学版)Journal of Northeastern University (Natural Science )Vol .33,No .4Apr .2012中国象棋中亚洲棋规循环问题的解决王 骄,孙英龙,吕辉展,杨 辉(东北大学信息科学与工程学院,辽宁沈阳 110819)摘 要:在中国象棋中,由于其特殊的循环判定规则,使得循环问题成为了一个大挑战,为此,提出了一个较为理想的模型·在解决循环的方向上,对亚洲规则进行了一些归类及合并,从而大幅简化了规则·该模型首先根据亚洲规则循环对棋中出现的循环进行发现探测,然后对发现的循环进行判断,得到对弈双方的胜负结果·实验结果表明了所提模型的有效性和实用性·关 键 词:计算机博弈;中国象棋;循环;亚洲规则;建模中图分类号:T P 18 文献标志码:A 文章编号:1005-3026(2012)04-0476-06Solving Repetition of Asian -Rule in Chinese ChessW ANG J iao ,SUN Ying -long ,L H ui -zhan ,Y ANG Hui(School of Information Science &Engineering ,Nor theastern U niv ersity ,Shenyang 110819,China .Corresponding author :WAN G Jiao ,E -mail :w angjiao @ise .neu .edu .cn )A bstract :The repetition judgment is a big challenge due to the unique restrictions in Chinese Chess .To solve the problem ,an ideal model w as proposed .For solving the repetitio n direction ,the Asian -rule was classified and incorpo rated to greatly simplify the rule .The proposed model detects firstly repetition according to Asian -rule ,and then judges the detected repetition to obtain w hich side in the repetition will win .The ex perimental results indicated the validity and practicability of the presented model .Key words :computer games ;Chinese chess ;repetition ;Asian -rule ;modeling 循环问题是计算机博弈领域中的常见问题,尤其在中国象棋中,由于其特殊的判定规则及非常高的出现频率,令其检测与判定成为一个非常具有挑战性的课题·在计算机博弈领域中,对比于其他棋类,中国象棋棋规判断的复杂度更高[1]·例如,在围棋中,由于其棋子逐渐增加,而且其循环问题仅仅出现在“劫材”中,所以其循环判定非常容易;国际象棋中循环出现的几率略低于中国象棋,其循环判定规则较为简单,全部被判定为和局[2]·对于中国象棋而言,循环的性质就没有那么容易判定了·即使准确地判别出循环中每一步的目的和性质,仍需对照复杂的棋规表方可做出决策·同时,由于中国象棋中存在远程攻击和蹩腿等特殊规则,也导致了其循环的出现频率远远高于其他的常见棋种·目前,几乎所有较高水平的中国象棋程序都全部或部分实现了基于亚洲棋规的循环判定,然而其结果并不令人满意·在计算机博弈的比赛中,违反循环规则从而导致输掉整盘棋的情况经常出现·从另一个角度上看,对循环判定的偏差还会导致好的分支被错误的剪掉,从而影响了程序内部搜索的质量,降低了程序的水平·缺乏一个高效且易于实现的模型是导致该现象的主要原因,当前还没有可见文献完整地提出亚洲棋规的判定模型·1 循环探测为了有效地解决循环问题,首要的问题是在博弈树的搜索中准确地检测出现的循环·本节介绍了一种高效的循环探测算法,在进行具体阐述之前,首先给出三个定义·定义1 棋局的对弈过程可以用图G =(V ,E )表示·其中,V 为顶点的集合,E 为边的集合·每个顶点V i 包含了两类信息,即棋盘所有棋子的位置及其走棋方颜色,而每个边E i 包含了着法的信息·G 是一个二分图,因为如果将V 按照走棋方颜色分成两个集合,每条边E i 能够联接两者中的顶点·定义2 V m =V n ,即两个顶点相同,它的含义是所有的棋子位置一致,并且其走棋方颜色相同·定义3 如果对于一个顶点序列V 1,…,V m ,存在一个正整数n ,对所有满足m >i >n 的正整数i ,都有V i =V i -n ,称这个序列为n 步循环序列[3]·1.1 循环的表示图1是一个典型的n 步循环序列,其中每个顶点V i 和每条边E i 都各不相同·当局面从V n 变回V 1的时候,可认为出现了一个循环·n 是一个正偶数,因为奇数步的移动无法满足定义2中走棋方颜色相同的条件·n 等于2无法构成循环,所以n 必然大于等于4,可表示为2m (m =2,3,…)·图1 n 步循环图Fig .1 n -step -repetition graph1.2 循环探测算法在中国象棋机器博弈领域,几乎所有的程序都在使用深度优先的搜索模型[4]·而对于深度优先搜索而言,记录从根节点到当前节点“路径”上的所有节点,是非常容易做到的·所以循环探测就可简化为在此节点序列中寻找两个含有信息完全相同的节点·在展开一个新节点时,循环探测应位于所有其他操作和计算的前面,以确保搜索不会受到循环的影响·在机器博弈领域,利用Zobrist 哈希方法,将棋子位置信息和走棋方信息编码成哈希值并作为局面的唯一标识,已经被广泛采用并公认为有效的方法[5]·为了在循环探测中标识每个盘面,并不需要额外构建哈希数组,因为绝大多数的程序已经完成了这步工作·即使没有,也可根据文献[5]去完成相关工作·循环探测中需要维持一个哈希序列表,记录从根节点到当前节点这一序列中的所有节点信息,即G 中所有的V i 称之为Rep -list ·在进行具体的检测步骤之前,即在展开一个新节点时,首先应生成此局面的哈希值(通常为增量计算方式),然后将其加入Rep -list 中,其所在索引为PLY (PLY 表示从根节点到当前节点经过分支的个数)·在这里并不需要进行额外的删除操作,只做覆盖即可[6]·Rep -list 所对应的G 中所有的V i ,也将会存储在特殊的数据结构中,并称之为Path ·它存储了从根节点到当前节点的所有的着法,这个结构相对简单,绝大多数中国象棋程序中都已实现·循环探测是与E 无关的,其依据Rep -list 进行计算·假设当前局面为V n ,即PLY 等于n ,则从根节点到当前局面的局面信息都保存在Rep -list [1,…,n ]中·针对这个序列,具体的循环探测伪代码如下所示·算法1 循环探测Boolean Repetitio n -Detect (){ ∥节点对比 For each element in Rep -List { ∥探测相同的节点 If (this element =Rep -List [PLY ]){ Iterate each move in path from this to PLY { ∥发现有nullmove ,则退出 If (move ==nullmove ) Return False ; } ∥发现循环 Return True ; } } ∥没有循环Return False ;}算法1中主函数的功能是在Rep -list 中寻找在与当前局面哈希值相等的子项·如果该子项存在,则以两者为首末顶点的序列必可确定一个循环·由于循环步数是大于等于4的偶数,所以查找从4开始,每次递增2·算法1还考虑了特定的搜索算法对循环探测的干扰,如其中的Nullmove 判断语句,目的是为了消除Nullmove 算法对循环探测的负面影响·Nullmove 是一种高效的剪枝算法[7],其允许不做任何走动而单纯交换走棋方,被绝大多数的中国象棋程序所采用·最近几年,连续的Nullmove 逐渐成为主流,此算法会导致循环477第4期 王 骄等:中国象棋中亚洲棋规循环问题的解决探测产生错误·通过对Path集合中着法的识别,可消除连续Nullmove的负面影响·2 循环的判定一旦循环被成功检测出来,则需要依据亚洲棋规对其进行分析并做出判定·如果模拟人的做法,即遍历几十条棋规进行匹配,这对机器博弈无疑是不现实的·为此,提出了一个良好的规则判定模型·2.1 循环的表示为了更为有效地表述判定过程的循环判定,首先给出一些相关的定义·定义4 循环序列的首顶点走棋方定义为M,对手则为O;·判定结果集合C={和棋,M犯规,O犯规};·规则属性集合F={将,捉,正常},“任意”代表捉或正常;·规则属性序列集合S={S1,S2,…,S n};·P positi v e表示M为主动捉子方时O受到攻击的棋子集合;P passive则正好相反,表示O为主动捉子方时M受到攻击的棋子集合·循环判定的前期工作是对图G中的每个顶点V i都确定其规则属性,从而得到S集合·规则属性的取值集合为F,其中“将”表示走棋方正在攻击对方的帅(将),“捉”表示对方的棋子正受到攻击,“正常”则表示所有其他情况·S集合无法提供循环判定所需的所有信息,比如一子分捉多子、多子分别捉多子的情况,所以还需额外引入两个被捉子集合P positive和P passive,它们表示在M方的角度上主动捉子的集合和被动捉子的集合·假设S,P positive和P passive集合都已经确定,则通过查询表1,得到循环最终的判定结果·表1 亚洲规则查询表Table1 Look-up table for Asian-rule序号S的偶数项元素S的奇数项元素P positive P pass ive判决结果0将将任意任意和棋1将任意任意任意M犯规(长将) 2任意将任意任意O犯规(长将) 3捉捉非空非空和棋4捉捉非空空集M犯规(长捉) 5捉捉空集非空O犯规(长捉) 6捉任意非空非空M犯规(长捉) 7任意捉非空非空O犯规(长捉)表1是用来查询循环的判定结果,具有严格的优先级规定,查询必须由上到下进行·查表之前还必须满足一个重要条件:S集合中所有的偶数项元素都相等,所有的奇数项元素也相等,否则不必查询表便可得到和棋的判定结果·有了这个查询表的存在,循环判定的任务即变为确定S, P positi v e和P passive·2.2 循环判定的返回值在对循环的性质进行判定之后,需要为主搜索返回恰当的返回值·这个过程看似简单,但是却包含着很多潜在的技巧·众所周知,典型的中国象棋博弈程序中的主搜索都是基于极大极小策略,所以循环的返回值要与走棋方相关·如果是M 方犯规,则需返回一个绝对值很大的负数,O方犯规返回一个很大的正数,和棋则返回一个接近于0的数值·犯规返回值的绝对值应大于“胜利”的分值,这样可以避免程序在即将被杀死的情况下去长捉或长将对方·同时,为了找到最快的取得胜利的途径,这个值也必须反映到根节点距离的信息,所以正的返回值应减去PLY,负的返回值则加上PLY·合理循环返回值即和棋的分值还涉及另一个特殊的概念———藐视因子,这个分值附加在返回值上面并反映了本方对胜利的渴望程度·在正常情况下,藐视因子可设为0,当对手比较差的时候,这个值通常设为较大的正数,反之则为较小的负数·当藐视因子为一个较大的正数时,程序通常会更具有攻击性·3 循环属性的确定在循环被检测到之后,n步循环序列可以表示为G={V1E1,V2E2,…,V n E n},为了更有利于计算,将G中每两个相邻的顶点和边可合并到一起,从而得到新的集合L:L={V1E1V2E2,V3E3V4E4,…,V n-1E n-1V n E n}·478东北大学学报(自然科学版) 第33卷L中元素的个数n/2为一个整数·首顶点V1的走棋方仍设为M,对手则为O·由于犯规方尚未确定,对于L中的每个元素,需要分别从M为犯规方和O为犯规方的两个角度进行计算,从而每个元素都会产生两个不同的结果,这些结果将会存储在S集合中·每个元素对应于M为犯规方的属性将存储在S集合的奇数项中,O为犯规方的属性则存储在偶数项中·所以,S集合可拆分成两个集合,其中奇数项元素的集合为S odd,偶数项集合为S even·该推理过程可以表示为L(n)※S odd(n)和L(n)※S even(n)·一旦完成了L中所有元素的计算,则整个S集合也会随之确定·算法2 规则属性的决定Int Determine(){∥对L集合中每一个元素进行搜索For each element in L{ ∥判断在序列L(n)中O方是否对M方将军 check(L(n),&S odd(n)) ∥O方主动的捉子判断 IF(S odd(n)!=CHECK){ ∥获得PositivePiece的集合 PositivePieces(n)+=collect-direct-attack (L(n),positive,&S odd(n)) PositivePieces(n)+=collect-indirect-attack (L(n),positive,&S odd(n)) ∥删除每个在S odd集合中的非法招法 LegalDecision(PositivePieces(n),&S odd(n)) } ENDIF ∥判断M方是否对O方将军 check(L(n),&S even(n)) ∥O方被动的捉子判断 IF(S even(n)!=CHECK){ ∥获得PassivePiece的集合 PassivePieces(n)+=collect-direct-attack (L(n),passive,&S even(n)) PassivePieces(n)+=collect-indirect-attack (L(n),passive,&S even(n)) ∥删除每个在Seven集合中的非法招法 Leg alDecision(PassivePieces(n), &S even(n)) } ENDIF ∥最终通过交运算获得P postive和P passi v e集合 For each element in PositivePiece set P postive&&=PositivePieces(n) For each element in PassivePiece set P passive&&=PassivePieces(n)}∥查找循环规则表(表1),返回函数正确值return LookupTable(S odd,S even,P po stive,P passive) }在算法2中,L中的每个元素L(n),都经过了两个独立的处理过程,从而得到S odd(n)和S even(n)·“将”的判断拥有最高的优先级,只有确定不是“将”的时候才会进行“捉”的计算·在分析“捉”的同时,还会得到额外的两个集合,即P positive 和P passive·对于每一个L(n)进行主动和被动“捉”的分析,会得到O被攻击棋子的集合PositivePieces(n),及M被攻击子的集合PassivePieces(n)·P positive是所有PositivePieces(n)的交集,同理P passive是所有PassivePieces(n)的交集·实际的计算过程非常复杂,包含了大量的细节问题,如下就一些函数进行解释··collect-direct-attack(element L(n),int strategy,&element S(n))此函数是收集所有的主动和被动情况下受到直接攻击棋子的集合,参数strategy控制主动或被动角度·对于整个局面的分析显然没有意义,需要关注的仅仅是和L(n)中两个边相关的信息·L(n)={V n E n V n+1E n+1},在主动角度上看,如果E n的终点正在攻击E n+1的起点,则可证明这是一种主动捉的情况,E n+1对应的棋子将会加入PositivePieces集合·被动的情况则正好相反·需要注意的是,这类攻击存在很多非法的情况,将在Leg alDecision函数中进行排除··collect-indirect-attack(element L(n), int strategy,&element S(n))此函数是收集所有的主动和被动情况下受到非直接攻击的棋子集合·其大部分处理过程与前一函数类似,但分析的是车、炮、马、象进行间接攻击的情况,这主要是由于攻击火力的遮挡或蹩腿(马脚、象眼)位置棋子的移动·很显然,此函数具有更高的复杂度··Leg alDecision(pieceset Set,&S(n))此函数的主要功能是排除掉不合理的攻击情况,它是算法2中最为复杂的处理过程·处理过程分成两步,首先,攻击实际上可能并不存在,如果攻击子正好阻挡了对方对本方帅(将)的攻击,吃479第4期 王 骄等:中国象棋中亚洲棋规循环问题的解决掉对方棋子意味着本方的帅(将)被吃掉,则这类攻击并不成立;其次,如果受到攻击的棋子正好处于本方其他棋子的合理保护下,则攻击也可能并不成立·详细的分析过程如下所示·1)非法捉·最简单的情况是一旦吃掉对方棋子,则攻击方的帅(将)将被吃掉,这显然是非法捉·但是,如果这样的攻击导致本方其他棋子被吃掉,则需要判断攻击是否可以带来利益,这种情况显然过于复杂,在实际应用中并不给予考虑·这也符合人类对亚洲棋规下循环判定的理解·2)棋子价值·棋子价值判定仅局限于攻击棋子和被攻击棋子上,并不涉及额外的棋子和计算收益问题·无论被攻击的棋子是否被保护,小子吃掉大子显然是获得收益的,所以给出棋子价值的排序:帅>车>马=炮>象=士>兵·其中,认为马和炮,士和象具有相同的价值·如果低分值的棋子去攻击高分值的棋子,则不必再去进行下一步的计算·等价值的攻击或大子对小子的攻击,需要进一步进行真根假根的判定·3)真根假根·这主要是解决保护的合法性,因为这里同样存在帅(将)可能受到攻击的情况,术语叫做真根和假根[7]·在真根的情况下,等价值攻击和大子对小子的攻击,都可认为并不构成捉,被攻击子也不会写入PositivePieces (n )和PassivePieces (n )中·通过本节的上述工作,S odd 和S even 已经可以获得,两者唯一构成了S 集合,所以S 也随之得到·与此同时,判定所需的P posi ti ve 和P passive 集合也在计算过程中得到·4 实验和结果4.1 准确性实验基于本文所提出的循环探测和循环规则判定的模型,设计了两类实验·第一类是实战测试,让实现了本文模型的程序在“弈天”进行了上千盘的测试,并对出现的循环进行分析·第二类是分析官方提供的棋例·大量的实验结果证明,在实战测试中,所有的循环问题在亚洲棋规下都得到了完美的解决,然而在官方提供的棋例中发现一些无法解决的特例,如图2所示·由图2知,红车正在捉黑马,黑马存在b4,c3,e3,f4等4种逃跑线路,棋谱中黑马随机的进行逃跑,而红车一直依据黑马逃跑路线进行长捉·这种循环无法被本文提出的循环探测模型所发现·实际上,对于机器博弈而言,在同样的局面下和近乎相等的时限下,程序的计算结果在绝大多数情况下都不会有区别,尤其是程序为单线程或在搜索中使用置换表的时候·所以图2的这类特例仅会出现在人与人的对弈中,并不会影响本文提出的循环模型在机器博弈领域中的应用·图2 特殊棋规样例Fig .2 Exam ple of special chess rule4.2 出现几率循环在搜索过程中出现的比例也是另一个值得关注的问题·实验数据表明,循环出现的几率与局面的具体情况密切相关·就总体而言,开局时循环出现的几率要低于中局和残局·其主要原因是在开局时,大部分大子仍处于边角,尚未出动,而在犬牙交错的局面中,循环发生的可能性就大大提高了·另外,4步循环出现的几率要远远大于其他步长的循环·如果把程序限定为每步16层搜索(不限时),则每个局面下4步循环出现的次数大约为2000,6步循环为500,8步循环为100,更多步长的循环可以忽略掉·其中,在出现的循环中,90%以上的都是非法的,这也在另一个角度上证明了本文工作的重要性·5 结 语本文分两步阐述了循环问题的解决方法,即循环探测和棋规判定·尤其在棋规判定中提出了一个良好的模型,即使一些初学者和没有太多经验的程序员,也可以轻易地依据此模型进行实现·对于机器博弈而言,这个模型是近乎完美的·将来的工作将会致力于将模型应用到更为复杂的其他计算机博弈领域中·参考文献:[1]Yen S J ,Chen ,J C ,Yang T N ,et al .Computer Chinese ches s [J ].ICGA Journa l ,2004,27(1):3-18[2]Vidanovic D ,Vuckovic V .An algorithm for the detection of480东北大学学报(自然科学版) 第33卷move repetition without the use of hash-keys[J].Y ugoslavJour nal of Operations Research,2007,17(2):257-274. [3]Fang H R,Hsu T S,Hsu S C.Construction of Chinese chessendgame databas es by retrograde analys is[J].Lecture Notes inComputer S cience,2001,2063:96-114.[4]Cam pbell M.Know ledge discovery in deep blue comm[J].Com muncation of ACM,1999,42(11):65-67.[5]Zob rist A.New has hing method w ith applications for gameplaying[J].ICCA Jour nal,1990,13(2):69-73.[6]Breuker D M,Uiterw ijk J W H M,Herik H rmation intransposition tables[J].Ad vances in C om puter Chess,1997,27:199-211.[7]Winands M H M,Werf E C D,Herik H J.Adaptive null-move pruning[J].ICCA Jour nal,2006,22(3):123-132.(上接第475页)[4]Nekoukar V.Adaptive fuzzy terminal sliding mode control fora clas s of M IM O uncertain nonlinear systems[J].Fuz zy S etsand Systems,2011,179(1):34-49.[5]Choi I S,Rossiter J A,Fleming P J.Looper and tensioncontrol in hot rolling mills:a survey[J].Jou rnal of Proces sContr ol,2007,17(6):509-521.[6]李伯群,傅建,李卫东,等·基于FPGA的活套高度和张力系统解耦控制器设计[J]·北京科技大学学报,2006,28(1):71-74·(Li Bo-qun,Fu Jian,Li Wei-dong,et al.Decouplingcontroller design of a looper height and tension s ystem basedon FPGA[J].Jour nal of Un iversity of S cience a ndTechnology Beijing,2006,28(1):71-74.)[7]张殿华,郑芳,王国栋·板带热连轧活套高度和张力系统的解耦控制[J]·控制与决策,2000,15(2):158-160·(Zhang Dian-hua,Zheng Fang,Wang Guo-dong.Striptandem hot rolling mill loopers'height and tension decouplingcontrol[J].C ontrol and Decision,2000,15(2):158-160.)[8]Imanari H,M orimatsy Y,Sekiguchi K,et al.Looper H-infinity control for hot-strip mills[J].IEEE Tr ans actions onIndustry Application,1997,33(3):790-796.[9]Tong C N,W u Y K,Liu L M,et al,M odelling and integralvariabl e structure control of hyd raulic looper multivariablesystem[J].Acta Automatica S inica,2008,34(10):1305-1311.)[10]Riccardo F,Francesco A C,Thomas P.Frictioncompensation in the interstand looper of hot strip mills:asliding-mode control approach[J].C ontrol EngineeringPr actice,2008,16:214-224.481第4期 王 骄等:中国象棋中亚洲棋规循环问题的解决。