在一个围棋论坛上看到这么一贴,不胜唏嘘。
虽然这不是一片软件技术文章,然而其
--精确简明的描述,恰如其分的举例,鲜明的对比,完整的总结,以及这背后严谨的思考--,
值得业内作家们学习。

出处:
http://bbs2.tom.com/sports/read.php?forumid=56&postid=155700&page_back=1&mod=modify


以下转贴


主题:什么样的段位/积分系统是最合理的?
作者:mesh2003(mesh2003) [个人文集] [回复]  
 
先介绍一下背景:我是棋手(联众5d,tom目前3d),同时也是软件工程师.
从IGS开张就在下网络围棋,对于网络围棋的段位/积分系统比较熟悉。
我想讨论一下目前几种流行的体系。并建议tom使用最好的体系,以解决
目前的段位问题。

网络围棋段位系统上大致有三种体系:

1.以IGS/NNGS为代表的积分/段位系统。特征是对手分,时间相关和可信段位标识。
2.以联众为代表的纯对手分系统。特征是纯粹使用对手分制度。
3.以tom为代表的纯相对段位系统。特征是没有积分算法,纯粹使用胜率。

下面说明几种体系的基本计算方法和优劣。先从简单的说起。

A。联众的对手分系统,棋手自定段位(上限1d),同时赋予一个基准分。然后棋手
在与积分相差正负100分的对手比赛中,根据输赢最多可获得10分或失去10分,双方
比例和目前积分对应。相差在100分以上的,上手获胜基本不得分,失败失去10分。
下手获胜全取10分,失败基本不扣分。100分升一段.

优点:
1。简单易实现。
2。因为存在比例算法,积分部分反映了棋手的对手水平。

缺点:
1。完全没有基准控制。什么叫基准控制?就是围棋站点的管理者能设定自身段位
制度具有的实际水平。比如说,联众的管理员希望联众段位和实际业余段位大致相当。但是根据我们上面看到的计算方法,他绝对做不到这一点,只能顺其自然。根据实际使用者的统计意义上的水平,整个段位可能被哄抬得很高,也可能被压得很低。
2。完全不鼓励水平相差较大的对局。这样对局的对局上手有赔无赚,为什么要下?
3。低段位缺乏可信度。1d以下都可以自定,根本无法标识可信度。

B。tom的相对段位系统,最接近于现实世界的段位系统。没有积分计算(目前的积分计算只是用来排排序,和升降段基本无关),只根据最后20盘升降段赛的胜率决定升降段情况。

优点:
1。简单易实现。
2。部分考虑了时间情况。在同一段位内,排除了20盘以前的老比赛成绩的影响。只计算棋手最近成绩。
缺点:
1。完全没有基准控制。理由同上。
2。不鼓励“非棋份对局”。什么叫非棋份对局?比如说,系统认为9d该让7d二子。这叫作系统规定的棋份。那么如果他们下二子局,这盘棋将作为升降段比赛。如果他们要下让先局,系统就不计算它了。
3。低段位缺乏可信度。理由同上。目前tom这方面的严重情况大家都清楚。

C。以NNGS为代表的段位系统。因为这是我比较推崇的段位系统,所以说详细点。

NNGS的段位系统基本类似于IGS,但有一些不同。主要算法如下:
1。系统支持新的使用者宣称各种段位。30k-7d都可以。并给予基准分。仍然以100分为一段差距。
2。系统对各用户的段位都标志可信度。下的盘数越多,跟拥有“可信段位”的对手对局越多,你的段位可信度越高。一般下到20盘(这个标准可由管理员调整)左右,系统对你的段位可信度就会有一个认可,并给你的段位一个"*"。常去IGS的人可能都知道,1d*比3d都管用多了。
3。对局积分计算是这样进行的:系统有一个或几个“锚”(anchor).比如说网管000同志,大家公认他是1d,那么就给他一个不变的基准分3100。其他计算都以他为原点展开。这样,网站的管理者可以控制段位的基准。
系统每小时进行一次重新计算,要计算每个用户的当前最新积分。这个计算涉及你下过的每一盘有效对局。并且是时间相关的。也就是说,你的每一盘比赛,时间越老的,对当前成绩的影响越小。你的最后积分是你的每一盘比赛的权重累加。
在棋份对局中,你赢棋或输棋得失分大致相等。在非棋份对局中,根据与正常棋份的差距调整。但两种对局都列入计算。
下面来看几个典型实例:

实例1:新使用者宝宝猪开始对局。宣称段位为1d.积分3100。一个小时内下了4盘分先棋,分别是胜宝宝狗1d,胜宝宝牛1d*,胜宝宝熊2d*, 胜宝宝驴3d*.
1个小时后计算新的积分,宝宝猪获得了后三次对局的200多分!积分上涨到3312,段位上涨为3d.这里说明几个情况:因为宝宝狗也是无*段位,所以这盘暂时不计分。同时因为宝宝猪就只有3盘对局,每一盘的权重都很大,所以每一盘都得好几十分。和宝宝猪下棋的4位棋手,因为宝宝猪还是无*段位,都暂时不扣分。
宝宝猪在此后几天又下了16盘和带*的棋手分先对局。这时,宝宝狗已经取得了1k*。此时宝宝猪的积分已经上涨到3648,6d。因为宝宝狗已经有*, 宝宝猪的积分中就已经计算了和宝宝狗的1k对6d分先对局(棋份相差如此大,当然宝宝猪在这盘没得多少分,宝宝狗因为猪还没有*,就没丢分)。下完第20盘,宝宝猪变成6d*了!从现在开始,其他和宝宝猪下过的棋手都开始计算与宝宝猪对局的得分。
宝宝牛,宝宝熊和宝宝驴都没有丢多少分,因为宝宝猪的可信段位是6d*,太高了。第二十一盘宝宝猪6d*胜宝宝鼠6d*, 但是这盘只得9分。因为下的盘数多起来了,每盘绝对权重就开始降低。

实例2:宝宝猪现在已经下了30盘棋,8d*.和下了800盘棋的黑衣人8d*对局。第一盘分先,宝宝猪胜。宝宝猪得6分。黑衣人丢1分。第二盘分先,黑衣人胜。黑衣人得1分,宝宝猪丢6分。黑衣人说,我实在下得太多了,分已经跑不动了,我们玩让子棋吧!我让你3个。宝宝猪大怒,心浮气躁,让3子居然输了。黑衣人得5分,宝宝猪丢27分。第四盘让3子再下,宝宝猪以平常心把黑衣人杀得落花流水,宝宝猪得2分,黑衣人一分没丢。

情况已经比较清楚,总结NNGS系统的优缺点如下:

优点:
1。基准可控。
2。可信度有明确标示。并且算法保证了段位向实际水平逐渐靠近。
3。动态计算和重新计算使对手情况得到完全体现。
4。时间影响得到充分反映。
5。在积分计算上支持非棋份对局。(除让子外,还支持各种贴目和倒贴目的棋份计算)。

缺点:
1。系统复杂。需要较强开发能力和管理能力。
2。对于对局盘数很多的用户,新的对局增减分很少,新的水平变化和刺激难以体现。
3。无*新用户有时遭到冷遇。

综合来看,NNGS类的系统是最科学,最能克服问题的。强烈建议tom作为我们最喜欢
的围棋网站,向这方面改进。NNGS系统的缺点也是可以克服的。对于对局盘数多产生的“分数不动”缺陷,可以通过系统管理员调整“权重指数算式”逐步适应,即将对局数多的用户统计计算的权重大幅度向最新的对局倾斜,在程序设计上完全可行。对于无*用户的情况,基本上是一个心理问题,因为迟早这些无*用户会变成有*用户,与其对局其实也有相等的价值。只要网站用户够多,不会成为严重问题。

提供一种思路供广大棋友和网站管理者商榷。关于NNGS 积分段位系统的详细情况和
详细算法,有兴趣者可登陆http://nngs.sourceforge.net/(英文)参考。