欧洲杯激战正酣,而中国足球假赌黑大审判也在沈阳盖棺定论。而我也不由的想到了2003年末代中国足球甲级A组联赛的排名规则,以及由此发散性的思维,在这里与大家分享。
首先我们来看下03年甲A联赛的排名规则,由于2004年中国足协决定效仿英超联赛启动全新的中国足球超级联赛,而入围的球队将以02年和03年甲A联赛的综合排名来决定,具体排名公式为:
2002年的排名×0.5+2003年的排名=中超资格积分
此公式得出的结果数字越小则排名越靠前。
这个看似很理想的计算方法,其实存在着一个惊天大漏洞。前2年的排名累加对本队丝毫没有影响,但是本队却可以合理利用规则来输球导致其他队排名降低从中获利。
我们再来看最后一轮对阵情况:
欧洲杯激战正酣,而中国足球假赌黑大审判也在沈阳盖棺定论。而我也不由的想到了2003年末代中国足球甲级A组联赛的排名规则,以及由此发散性的思维,在这里与大家分享。
首先我们来看下03年甲A联赛的排名规则,由于2004年中国足协决定效仿英超联赛启动全新的中国足球超级联赛,而入围的球队将以02年和03年甲A联赛的综合排名来决定,具体排名公式为:
2002年的排名×0.5+2003年的排名=中超资格积分
此公式得出的结果数字越小则排名越靠前。
这个看似很理想的计算方法,其实存在着一个惊天大漏洞。前2年的排名累加对本队丝毫没有影响,但是本队却可以合理利用规则来输球导致其他队排名降低从中获利。
我们再来看02年和03年的最终积分榜:
2002赛季甲A联赛积分榜
名次球队 上轮
排名走势 场次 胜 平 负 进球 失球 净胜球 积分
1 大连实德 1 - 28 17 6 5 48 27 21 57
2 深圳平安 2 - 28 14 10 4 42 21 21 52
3 北京国安 3 - 28 15 7 6 49 29 20 52
4 山东鲁能 4 - 28 14 3 11 42 42 0 45
5 辽宁波导战斗 6 ↑ 28 12 6 10 46 43 3 42
6 重庆力帆 7 ↑ 28 10 11 7 28 25 3 41
7 云南红塔 5 ↓ 28 10 10 8 30 28 2 40
8 青岛颐中 8 - 28 9 9 10 30 34 -4 36
9 上海中远 9 - 28 9 8 11 37 39 -2 35
10 天津泰达 11 ↑ 28 9 7 12 37 36 1 34
11 沈阳金德 12 ↑ 28 8 10 10 34 34 0 34
12 上海申花 10 ↓ 28 9 5 14 37 41 -4 32
13 八一振邦 13 - 28 6 12 10 27 41 -14 30
14 四川大河 14 - 28 7 7 14 38 56 -18 28
15 陕西国力 15 - 28 2 7 19 24 53 -29 13
2003赛季甲A联赛积分榜
名次球队 上轮
排名走势 场次 胜 平 负 进球 失球 净胜球 积分
1 上海申花 1 - 28 17 4 7 56 33 23 55
2 上海中远 2 - 28 16 6 6 39 26 13 54
3 大连实德 3 - 28 15 8 5 44 22 22 53
4 深圳健力宝 4 - 28 12 11 5 42 21 21 47
5 沈阳金德 6 ↑ 28 11 10 7 35 31 4 43
6 辽宁(北京三元) 7 ↑ 28 11 8 9 39 34 5 41
7 云南红塔 5 ↓ 28 11 7 10 29 25 4 40
8 四川冠城 8 - 28 9 10 9 41 42 -1 37
9 北京现代 9 - 28 9 9 10 34 26 8 36
10 天津康师傅 10 - 28 8 12 8 32 33 -1 36
11 青岛贝莱特 12 ↑ 28 10 5 13 40 47 -7 35
12 山东鲁能 11 ↓ 28 8 9 11 41 48 -7 33
13 重庆力帆 13 - 28 6 8 14 20 34 -14 26
14 八一湘潭 14 - 28 6 4 18 23 59 -36 22
15 陕西国力 15 - 28 3 5 20 28 62 -34 14
最后一轮对阵情况:
深圳VS申花 国际VS天津 重庆VS青岛 陕西VS沈阳 北京VS四川 山东VS辽宁 八一VS云南 实德VS轮空
在此之前重庆队不管输赢都是第13名,而02年则是第6名,根据规则算出积分为:6*0.5+13=16
而天津队此前是第11名,去年为第10名,根据规则,当前积分为10*0.5+11=16,积分和重庆队相同,重庆队虽然不能改变自己的积分,但是由于最后一轮对阵青岛队,青岛队和天津队排名刚好在11位和12位,只要输给青岛,而天津也输给国际,那么最终天津排名12名,则总积分为10*0.5+12=17,排在重庆队之后失去中超资格。
要说明的是,天津最后一轮的对手是上海国际队,只要踢赢国际队就是冠军。按照常理国际队是不可能踢假球的。
结果人算不如天算,最后一轮申花1:4输给深圳,而国际意外1:2输给天津,重庆虽然输给了青岛,但是由于天津已经取胜,本队的胜负已经没法决定别人的排名了。
最后历史证明,以上几场球其实都是惊天大假球,国际队的比赛据说牵扯资金达到1200W人民币。
这些都是后话,其实我想说的是当年足协会用如此低级别的计算公式,主要还是没有选对计算模型,因为本身起点的不公平(去年排名)就会导致今年互相的胜负关系微妙而影响最终排名。假如只按照本赛季排名来决定最后的结局的话,那么就没这个惊天大漏洞了。
阿姆达尔定律
由此我又联想并发三定律之一的阿姆达尔定律,公式如下:
S=1/(a+(1-a)/n)
其中,a为串行计算部分所占比例,n为并行处理结点个数。这样,当a=0时,最大加速比s=n;当a=1时,最小加速比s=1;当n→∞时,极限加速比s→ 1/a,这也就是加速比的上限。例如,若串行代码占整个代码的25%,则并行处理的总体性能不可能超过4。
阿姆达尔定律告诉我们:通过使用某种较快的执行方式所获得的性能提高与可使用这种较快执行方式的部分所占的比例的有关。
而我们在调优并发服务器例如jetty的时候,就经常会遇到阿姆达尔定律这样的场景,当你把后台线程池开到一定程度,由于竞争的CPU资源有限,反而起到副作用。
再来看看人月传说,布鲁克斯认为:
人月
人月(英语:man-month)指的是“一个人要花几个月”才能完成软件开发的单位,通常用来评估一件软件项目的大小。以成本会计(cost accounting)为基础的进度预估技术,使我们误把工作量和项目进度混为一谈,人月是个危险并很容易就遭到误解的迷思(myth),因为它假设人力和工时可以互换。
Brooks法则
在一个进度已经落后的软件项目中增加人手,只会让它更加落后。根据Brooks法则,增加人员到一个已经延误的项目里,等于是火上加油。除非你可以把工作区分,让新进人员可在不影响他人工作的状况下有所贡献。
把工作切分给更多人做将造成额外的沟通(communication)代价——训练和相互的交流(intercommunication)。欲增加软件项目的人手,总共必须付出的代价可分为三方面:工作重新切分本身所造成的混乱与额外工作量、新进人员的训练、新增加的相互交流。
而我们在项目管理的实践当中,往往会犯这样的错误,本身分工就有问题,却想通过加人的方式来解决进度问题,结果可想而知。
从技术角度来讲,合理的利用模型是多么重要,例如你想通过哈希表来解决K-V快速存取的问题,结果由于你之前的哈希算法有问题,导致哈希表成为了链表,这样的问题在实际工作中数不胜数。我只是联想到了这些,大家还可以继续发散思维。