编程大赛

一个传奇:有个人不断赢得世界算法冠军

发表于 19小时前| 13150次阅读| 来源 MIT Technology Review| 107 条评论| 作者 Tom Simonite
摘要:楼天城在接受采访时称,Petr Mitrichev能力全面、处事稳重以及准确率很高,是TopCoder前几名选手中,唯一没有明显弱点的选手。是的,这位只有27岁的俄罗斯传奇人物,他赢得了很多编程大赛的冠军,通过这篇文章,我们一起来回顾下这个牛人的传奇故事吧。

Petr Mitrichev全神贯注地比赛

如果俄罗斯总统普京在适当的时候透过克里姆林宫的窗口往外望,或许他有机会看到世界上最好的电脑程序员在河对岸的谷歌莫斯科办公室里工作。

这位世界上最好的电脑程序员是谁?是的,他就是只有27岁的传奇人物Petr Mitrichev,Petr Mitrichev是一名俄罗斯人,虽然他只是工作于谷歌的搜索部门,但他还是赢得了编程冠军头衔。

算法是种另类的美

在众多编程比赛中,大部分电脑爱好者都只是为了追求奖金、旅行机会和到达一个新的高度。“当你在比赛中解决一个问题,你会发现有一种满足感。”,在加利福尼亚州山景城谷歌总部前的草坪上,和蔼可亲但有点苍白的Petr Mitrichev却如此说道。

自2005年Petr Mitrichev从莫斯科国立大学毕业后,他就一直在全球算法编程领域保持领先地位。在这种国际最高规格的编程比赛中,往往涉及无限棋盘游戏或N+1个奶牛哞哞声分贝等级,这通常需要参赛者强悍的数学分析能力和键盘操作速度,而Petr Mitrichev则以他的“短暂停顿”而出名,也就是说,Petr Mitrichev差不多就是在刚看完问题后就开始着手回答问题。

对Petr Mitrichev来说,这类编程比赛犹如在主观世界中提供了一个难得一见的小岛,他说:“这类比赛的美就在于它是完全无意识的,不会受到人类认知的干预”,他还补充到,这是他见过最公平的比赛。

不过并不只是有Petr Mitrichev才能看到算法的美。因此技术公司常利用这种比赛来寻找世界上最聪明和速度最快的程序员,像Facebook和谷歌等巨头就会赞助编程竞赛里的一些顶级赛事。

Petr Mitrichev崭露头角是在他十岁那一年,当时他拿起属于他哥哥的一本计算机编程书,尽管Petr Mitrichev莫斯科家中还没有计算机,但他依然在第二年百位全国高中生编程比赛中获得了第60名的成绩,由于他还只有11岁,评委特地奖励一台电脑给这位少年天才。15岁时,Petr Mitrichev赢得了这个比赛的冠军,不久之后,他开始参加国际大赛,他首次亮相是在北京举办的奥林匹克信息大赛。

编程语言从Pascal换成C#后登顶

Petr Mitrichev获得现在的世界排名则是在加入编程竞赛世界联赛之后,这一系列的每周和年度竞赛是由美国康涅狄格州TopCoder公司举办,它吸引了来自世界各地超过四十万名的程序员参加。而Petr Mitrichev自从把他的编程语言从Pascal换成C#后,他在世界的头名位置从2005保持至今。

这样的技术与风度造就了Petr Mitrichev极客式英雄的形象,每当他贴出一个在线视频时,论坛就会有帖子仔细分析他的每次表现。在规模宏大的年度竞赛中,几百个程序员都聚集在酒店的宴会厅,大厅的大屏幕都会实况直播参赛者的电脑屏幕。

“当观众看到Petr Mitrichev在比赛中出现一个Bug,后来再次看到他修复这个Bug时,围观人群总是出现一阵骚动”TopCoder CTO Mike Lydon如此说到,他继续称,对于外行这些没什么可看的,但对这些现场观众而言却是如此的迷人。

比赛中的问题往往涉及描述物理的状况然后用数学方式表达出来,而这就需要参赛者现场写一个算法。比如Petr Mitrichev最近参赛的一个问题就是,在一个无限的国际跳棋中预测某个棋子的位置,参赛者写的程序只要能够正确处理试验数据就可以得分。而在有些比赛中还包括一个挑战阶段,提交数据让竞争对手的程序出错便可得分。

在这样的竞赛中当然也有奖金可拿,头等奖金达2.5万美元(Petr Mitrichev获得过好几次),除此之外,参赛的程序员还可以被硅谷的一些公司相中,因此许多顶尖的程序员都获得了高薪工作。

Petr Mitrichev不同寻常的地方在于,他会一直参加比赛然后获得冠军,即使他在2007年获得了一份在谷歌的工作。他称,他将一直去参赛,因为对于他而言写代码就是种享受,而TopCoder的每周比赛只要花费90分钟即可,而这点时间你可以看一个电视节目或选择参赛。

据悉Petr Mitrichev在谷歌从事改善搜索的工作,他称,这非常不容易,因为绝大多数简单的技术已经得到了应用,同时包括网页页面、标志性的算法都由谷歌创始人搞定了,而现在改进搜索结果,主要是涉及更细微的调整,如从用户的搜索条件中发现同义词或其他语言技巧来提取额外的意思等。

即便是如此,Petr Mitrichev也是一股不可忽视的力量,在2011年,他赢得了Facebook首届编程比赛(也就是现在的Facebook Hacker Cup)的冠军。

被超越,但依然是传奇

提到算法比赛和Petr Mitrichev,国内的人们或许会立马联想到楼天城“楼教主”,是的,作为ACM/ICPC全球总决赛第二名 、Google编程挑战第一名以及2011、2012年 Facebook Hacker Cup的季军,他在读大学时就被冠以中国公认的大学生计算机编程第一人,成为国内众多程序员所称赞的传奇。

楼天城在接受CSDN记者邮件采访时对Petr Mitrichev评论称,Petr在竞赛中能力表现的很全面,他处事稳重,有很高的准确率,对于各种类型的问题都有很好的洞察力和判断力,或者更精确地说,他是TopCoder前几名选手中,唯一没有明显弱点的选手。

另外楼教主还表示,Petr很重视也很愿意与其他选手交流和分享,Petr在赛后经常回答一些新人的问题,并分享自己比赛的视频供大家交流学习,甚至将自己竞赛的经历写下跟大家分享。就算在他没有参加的现场比赛过程中,Petr也会写blog及时报道比赛的进程。

需要指出的是,在TopcoderCodesforce等编程竞赛的网站上,Petr Mitrichev目前排名已不再是第一名,现在他已被白俄罗斯的18岁“小将”Gennady Korotkevich取代,他同样也在国际信息学奥林匹克竞赛中获得了许多金牌,而Gennady Korotkevich在IOI获得银牌时才11岁,尽管如此,Petr Mitrichev在这个领域仍然是一个传奇。


http://codeforces.com/ratings

http://community.topcoder.com/tc?module=AlgoRank


我的编程竞赛之路 ——中国大学生计算机编程第一人楼天城访谈

25岁的楼天城有“中国大学生计算机编程第一人”的称号,也被参加竞赛的学子们敬称为“楼教主”。他的传奇经历一直激励着众多年轻学子:从2001年开始参加计算机编程竞赛,并连获全国一等奖;2004年入选国家集训队,同年获得IOI金奖并被保送到清华大学;2008年开始在首位亚裔图灵奖获得者姚期智院士的理论计算机中心攻读博士;2007年和2009年两次带队参加ACM/ICPC全球总决赛并获得第二名。《程序员》近日专访了编程奇才楼天城,让他与我们分享一下他传奇的编程竞赛之路。

记者:请简单谈谈你的童年经历。童年哪些人、哪些事对你的影响最大?

楼天城:小时候,我比较爱玩,并不怎么喜欢学习。后来在8岁那年,我跟随父母一起到清华大学游玩。身处中国的最高学府,我不自觉地受到了感染,当时就给自己定下了童年的第一个目标——要在学习上投入更多的精力,严格要求自己,将来一定要到清华大学读书。这是童年中对我影响最大的一件事儿。经过十年的努力,现在这个愿望已经实现了。楼天城在赛场上

父母是童年时代对我影响最大的人,他们特别注重对我心理、性格等素质的培养,而不是局限于学业。他们认为高素质对人的影响远远超过学习能力的影响。在高中我能如愿参加各项编程竞赛,也离不开父母的支持,但前提是数学等智力科目不会受到影响。这类竞赛并不属于高考科目,而且势必会对学业产生一定影响,如果没有父母的支持,参加竞赛这条路是走不通的。父母的支持支撑着我一直在竞赛这条路上走下去。另外,我比较喜欢各种棋类,还喜欢踢足球。棋类可以锻炼人的思维,而运动也会培养人的思考能力。小时候我就考虑,向对方球门底线带球(如果是向球门带球,一定是越向前越好),球门与球的角度是越变越大还是越变越小;往前带球,这个角度是越大越好,还是越小越好。经过计算后,我发现把球带到某个地方时,角度是最大的,再往前带就会变小,而这个地方就是射门的最佳位置。结论是:这个最大的角度与距球门的距离有关。

记者:你是什么时间开始接触编程的?在学习编程过程中,都开发过哪些应用?

楼天城:我从高一开始学习编程相关知识。编程对于高中生来说,确实是一门特别的科目。我所开发的应用中印象比较深刻的是黑白棋。当时在联众的游戏平台上,它有90%的胜率。最初设计的黑白棋只能搜索到六层,它的“棋艺”并不理想,当时很多此类的黑白旗游戏也能做到这一步。为了突破这一局限,我研究了各种优化技术、博弈算法及搜索技术,对算法进行了优化,使原来的搜索增加了四层,它的计算能力、博弈水平也随之提高了很多,一时很多人都难以胜过它。虽然这个游戏并没有像李开复当年写的黑白棋那么优秀,但对我来说,还是蛮有成就感的。另外,我还做过很多其他的应用,但大多是实现一些涉及核心的关键问题,并没有作为产品公布出来。

记者:你第一次参加编程竞赛是什么时间?在之后的竞赛经历中,遇到了哪些挑战?团队协作

楼天城:2006年,我第一次参加编程竞赛,是Google编程挑战赛。由于一个失误,我与冠军擦肩而过。大赛结束后,我非常沮丧。后来在父母和老师的鼓励下,我下定决心要再等机会,赢取冠军。

两年后,直到2008年,我才有机会再次参加Google编程挑战赛,并在最后8分钟赶超了当时领先于我2小时52分的南非选手,获得了冠军。这次大赛对我来说可以算作一次真正的挑战。

记者:2010年举办的topcoder公开赛,你取得了一个不错的成绩,对此有什么感受?

楼天城:topcoder公开赛是世界范围内一年一度的编程大赛,2010年在赌城拉斯维加斯举行。我参加的其中两项不同的比赛都进入了决赛,一项是24小时的类似马拉松的Coding比赛,另一项是算法编程。这次比赛比较可惜的是,在最后决赛阶段犯了一个小小的错误,而滑到了亚军的位置。以后再有同样的机会,争取能够获得更好的成绩。

记者:请谈一下现在读博的感受。

楼天城:我从2008年开始在姚期智院士领导的清华大学理论计算机中心攻读博士学位,现在还处于学习和提高阶段,研究方向主要是以组合算法为主。总之,很幸运能够得到姚院士的指导,这段时光注定将成为我人生中最重要的阶段之一,我会用心努力做好每一天。

记者:除了编程竞赛,你之前还参加过很多数学方面的竞赛。有些人认为编程与数学没有太大的关系,你怎么看?

楼天城:可能是我们所遇到的问题不太一样吧。我遇到的问题多侧重于核心部分,往往比较抽象,对效率要求也很高,要解决它们,必须有深厚的数学基础,从这个方面来说对数学要求还是非常高的。

记者:你怎样看待编程竞赛?对有志于投身编程竞赛的人有何建议?

楼天城:编程竞赛是一个“公平、刺激、酷”的脑力游戏,除了能获得乐趣之外,还能很好地锻炼自己的思维,磨炼坚韧随和的性格。参加了多次竞赛,我真实地体会到它的残酷性。编程竞赛是顶尖高手之间全方位素质的较量,即使一时的状态不佳,也会让你与冠军失之交臂,最终换来的将是几年的漫长等待。但也相当刺激、公平。这也是我喜欢它的主要原因。我感觉自己很幸运,能够接触到这些编程竞赛。这种比赛形式,完全符合我的思维方式。在这十多年来,无论在思维的培养还是对性格的磨炼上,它对我都起了很大的作用。

至于建议,像我们这些靠理性思维来解决问题的人,平时过于依赖自己的计算能力,不相信定式、经验之类的东西。而实际情况却是,有一些凭借经验才能做到的事情,我们做得不够好,只是想当然地以为计算等于一切,结果却与目标相差很远。所以有很多非智力因素也需要去掌握。否则,你可能会因此而落后于他人。这算是我的一个建议。

另一个建议就是不要把参加竞赛当作上大学的一个途径。竞赛可以帮助你提高自学能力和综合素质,锻炼思维能力,也可以帮助你提高其他科目,但平时一定要注意协调好竞赛与其他科目之间的关系,不要把其他科目落下,不要让竞赛成为影响正业的事情。

(本文来自《程序员》杂志11年04期,更多精彩内容敬请关注04期杂志)

《程序员》11年04期精彩内容:HTML5来临!

《程序员》杂志订阅

http://www.programmer.com.cn/6437/
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
********************************************* 作品名称 作者 文件大小 3ddemo sanction 3.99 KB (4,095 字节) 看起来有点像古墓丽影?这是一段纯 3D 的 DOS 动画,据说是获一等奖的作品。虽然它不是 最精美的, 但是当你得知它只有 4K 时,会不会立刻疯死掉呢? ********************************************* 作品名称 作者 文件大小 爱之记忆 ? 38.5 KB (39,424 字节) 也是一段 DOS 动画。但是效果不如楼上的作品。大小也要比楼上的大得多,甚至还是经过打 包的。我认 为不是很好。 ********************************************* 作品名称 作者 文件大小 第七天堂 Exceed 64.0 KB (65,536 字节) 由于参赛的要求是在 64K 之内即可,不少参赛者未免会有不到 65536 字节就有吃亏的感觉。 :) 这是个 恰好 64K 的作品,可能利用了 DirectX 引擎,效果很好。 ********************************************* 作品名称 作者 文件大小 火域幻境 ? 73.0 KB (74,752 字节) 虽然大小超过了 64K 的限制,也经过了打包,但是它的效果可称为程序中的艺术品了!(也 可能这不是 参赛作品?) ********************************************* 作品名称 作者 文件大小 死亡阴影 ? 64.0 KB (65,536 字节) 恰好 65536 字节,显然是参赛作品。 ********************************************* 作品名称 作者 文件大小 金属迷城 ? 6.00 KB (6,144 字节) 这个效果也并不是很好。但是考虑到它的大小时,你会不会体会到奇迹的含义 ********************************************* 作品名称 作者 文件大小 幽灵古堡 farb-rausche 64.0 KB (65,536 字节) 恰好 65536 字节,显然是参赛作品。这是我最喜欢的作品,它非常漂亮(利用了 Direct3D) ,更让人 惊奇的是只有 64K!而更让人震惊的是,如果不压缩的话它的数据大小是 1.6G(1 ,677,722K)!再体会一次“奇迹”! ********************************************* 作品名称 作者 文件大小 fr-016 farb-rausche 16 字节 (16 字节) Let's rock hard!一个 DOS 里的小动画。 看上去似乎没有什么特别,但是如果看到它的大小(16 字节) 你会不会再次疯死掉呢? ******* 3D演示特别版:water1.exe ************ 开始时,效果并不起眼,可越到后面,越感到制作者是一个野人,一个文件大小不足4K,可效 果和时间上,令人难以想象,的确是KU到极点!!!!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值