李开复说算法

上传人:豆浆 文档编号:4974982 上传时间:2017-08-27 格式:DOC 页数:25 大小:81KB
返回 下载 相关 举报
李开复说算法_第1页
第1页 / 共25页
李开复说算法_第2页
第2页 / 共25页
李开复说算法_第3页
第3页 / 共25页
李开复说算法_第4页
第4页 / 共25页
李开复说算法_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《李开复说算法》由会员分享,可在线阅读,更多相关《李开复说算法(25页珍藏版)》请在金锄头文库上搜索。

1、算法李开复:算法的力量算法是计算机科学领域最重要的基石之一,但却受到了国内一些程序员的冷落。许多学生看到一些公司在招聘时要求的编程语言五花八门就产生了一种误解,认为学计算机就是学各种编程语言,或者认为,学习最新的语言、技术、标准就是最好的铺路方法。其实大家都被这些公司误导了。编程语言虽然该学,但是学习计算机算法和理论更重要,因为计算机算法和理论更重要,因为计算机语言和开发平台日新月异,但万变不离其宗的是那些算法和理论,例如数据结构、算法、编译原理、计算机体系结构、关系型数据库原理等等。在“开复学生网”上,有位同学生动地把这些基础课程比拟为 “内功”,把新的语言、技术、标准比拟为“ 外功” 。整

2、天赶时髦的人最后只懂得招式,没有功力,是不可能成为高手的。 算法与我当我在 1980 年转入计算机科学系时,还没有多少人的专业方向是计算机科学。有许多其他系的人嘲笑我们说:“知道为什么只有你们系要加一个科学,而没有物理科学系 或化学科学系 吗?因为人家是真的科学,不需要画蛇添足,而你们自己心虚,生怕不科学,才这样欲盖弥彰。”其实,这点他们彻底弄错了。真正学懂计算机的人(不只是“编程匠” )都对数学有相当的造诣,既能用科学家的严谨思维来求证,也能用工程师的务实手段来解决问题而这种思维和手段的最佳演绎就是“算法” 。 记得我读博时写的 Othello 对弈软件获得了世界冠军。当时,得第二名的人认为

3、我是靠侥幸才打赢他,不服气地问我的程序平均每秒能搜索多少步棋,当他发现我的软件在搜索效率上比他快 60 多倍时,才彻底服输。为什么在同样的机器上,我可以多做 60 倍的工作呢?这是因为我用了一个最新的算法,能够把一个指数函数转换成四个近似的表,只要用常数时间就可得到近似的答案。在这个例子中,是否用对算法才是能否赢得世界冠军的关键。还记得 1988 年贝尔实验室副总裁亲自来访问我的学校,目的就是为了想了解为什么他们的语音识别系统比我开发的慢几十倍,而且,在扩大至大词汇系统后,速度差异更有几百倍之多。他们虽然买了几台超级计算机,勉强让系统跑了起来,但这么贵的计算资源让他们的产品部门很反感,因为“昂

4、贵” 的技术是没有应用前景的。在与他们探讨的过程中,我惊讶地发现一个 O(n*m)的动态规划(dynamic programming)居然被他们做成了 O(n*n*m)。更惊讶的是,他们还为此发表了不少文章,甚至为自己的算法起了一个很特别的名字,并将算法提名到一个科学会议里,希望能得到大奖。当时,贝尔实验室的研究员当然绝顶聪明,但他们全都是学数学、物理或电机出身,从未学过计算机科学或算法,才犯了这么基本的错误。我想那些人以后再也不会嘲笑学计算机科学的人了吧!网络时代的算法有人也许会说:“ 今天计算机这么快,算法还重要吗?” 其实永远不会有太快的计算机,因为我们总会想出新的应用。虽然在摩尔定律的

5、作用下,计算机的计算能力每年都在飞快增长,价格也在不断下降。可我们不要忘记,需要处理的信息量更是呈指数级的增长。现在每人每天都会创造出大量数据(照片,视频,语音,文本等等)。日益先进的纪录和存储手段使我们每个人的信息量都在爆炸式的增长。互联网的信息流量和日志容量也在飞快增长。在科学研究方面,随着研究手段的进步,数据量更是达到了前所未有的程度。无论是三维图形、海量数据处理、机器学习、语音识别,都需要极大的计算量。在网络时代,越来越多的挑战需要靠卓越的算法来解决。 再举另一个网络时代的例子。在互联网和手机搜索,如果要找附近的咖啡店,那么搜索引擎该怎么处理这个请求呢?最简单的办法就是把整个城市的咖啡

6、馆都找出来,然后计算出它们的所在位置与你之间的距离,再进行排序,然后返回最近的结果。但该如何计算距离呢?图论里有不少算法可以解决这个问题。这么做也许是最直观的,但绝对不是最迅速的。如果一个城市只有为数不多的咖啡馆,那么这么做应该没什么问题,反正计算量不大。但如果一个城市里有很多咖啡馆,又有很多用户都需要类似的搜索,那么服务器所承受的压力就大多了。在这种情况下,我们该怎样优化算法呢?首先,我们可以把整个城市的咖啡馆做一次“预处理” 。比如,把一个城市分成若干个“格子 (grid)”,然后根据用户所在的位置把他放到某一个格子里,只对格子里的咖啡馆进行距离排序。问题又来了,如果格子大小一样,那么绝大

7、多数结果都可能出现在市中心的一个格子里,而郊区的格子里只有极少的结果。在这种情况下,我们应该把市中心多分出几个格子。更进一步,格子应该是一个“树结构” ,最顶层是一个大格整个城市,然后逐层下降,格子越来越小,这样有利于用户进行精确搜索如果在最底层的格子里搜索结果不多,用户可以逐级上升,放大搜索范围。上述算法对咖啡馆的例子很实用,但是它具有通用性吗?答案是否定的。把咖啡馆抽象一下,它是一个“点” ,如果要搜索一个 “面”该怎么办呢?比如,用户想去一个水库玩,而一个水库有好几个入口,那么哪一个离用户最近呢?这个时候,上述“ 树结构” 就要改成 “r-tree”,因为树中间的每一个节点都是一个范围,

8、一个有边界的范围。通过这个小例子,我们看到,应用程序的要求千变万化,很多时候需要把一个复杂的问题分解成若干简单的小问题,然后再选用合适的算法和数据结构。并行算法:Google 的核心优势 上面的例子在 Google 里就要算是小 case 了!每天 Google 的网站要处理十亿个以上的搜索,GMail 要储存几千万用户的 2G 邮箱,Google Earth 要让数十万用户同时在整个地球上遨游,并将合适的图片经过互联网提交给每个用户。如果没有好的算法,这些应用都无法成为现实。在这些的应用中,哪怕是最基本的问题都会给传统的计算带来很大的挑战。例如,每天都有十亿以上的用户访问 Google 的网

9、站,使用 Google 的服务,也产生很多很多的日志(Log)。因为 Log 每份每秒都在飞速增加,我们必须有聪明的办法来进行处理。我曾经在面试中问过关于如何对 Log 进行一些分析处理的问题,有很多面试者的回答虽然在逻辑上正确,但是实际应用中是几乎不可行的。按照它们的算法,即便用上几万台机器,我们的处理速度都根不上数据产生的速度。那么 Google 是如何解决这些问题的?首先,在网络时代,就算有最好的算法,也要能在并行计算的环境下执行。在 Google 的数据中心,我们使用的是超大的并行计算机。但传统的并行算法运行时,效率会在增加机器数量后迅速降低,也就是说,十台机器如果有五倍的效果,增加到

10、一千台时也许就只有几十倍的效果。这种事半功倍的代价是没有哪家公司可以负担得起的。而且,在许多并行算法中,只要一个结点犯错误,所有计算都会前功尽弃。那么 Google 是如何开发出既有效率又能容错的并行计算的呢?Google 最资深的计算机科学家 Jeff Dean 认识到, Google 所需的绝大部分数据处理都可以归结为一个简单的并行算法:Map and Reduce(http:/ and Reduce 的另外一大特色是它可以利用大批廉价的机器组成功能强大的server farm。最后,它的容错性能异常出色,就算一个 server farm 宕掉一半,整个 fram 依然能够运行。正是因为这

11、个天才的认识,才有了 Map and Reduce算法。借助该算法,Google 几乎能无限地增加计算量,与日新月异的互联网应用一同成长。算法并不局限于计算机和网络举一个计算机领域外的例子:在高能物理研究方面,很多实验每秒钟都能几个 TB 的数据量。但因为处理能力和存储能力的不足,科学家不得不把绝大部分未经处理的数据丢弃掉。可大家要知道,新元素的信息很有可能就藏在我们来不及处理的数据里面。同样的,在其他任何领域里,算法可以改变人类的生活。例如人类基因的研究,就可能因为算法而发明新的医疗方式。在国家安全领域,有效的算法可能避免下一个 911 的发生。在气象方面,算法可以更好地预测未来天灾的发生,

12、以拯救生命。所以,如果你把计算机的发展放到应用和数据飞速增长的大环境下,你一定会发现;算法的重要性不是在日益减小,而是在日益加强。-转自计算机科学论坛注: 算法是计算机科学的核心,是程序的灵魂,它的基础性地位遍布计算机科学的各个分支领域.原文作者介绍:李开复博士现 google 中国总裁1998 年 7 月加盟微软,当年 11 月出任微软中国研究院(现微软亚洲研究院)院长。李开复在语音识别、人工智能、三维图形及网络多媒体等领域享有很高的声誉。在他的带领下,微软中国研究院以新一代多媒体、新一代用户界面和新一代信息处理技术为主要方向开展基础研究。 后升任微软副总裁。 加盟微软公司前,李博士曾担任

13、SGI 公司的多媒体软件子公司Cosmo Software 的总裁,负责多平台、互联网三维图形和多媒体软件方面的研发工作。此前他还曾在苹果公司工作了六年,主管该公司的多媒体部门。 李博士在苹果公司任职六年中的最后一个职务是其交互式多媒体部门的副总裁,他们后来开发出 QuickTime,QuickDraw 3D,QuickTimeVR 等产品。 在加入苹果公司之前,李博士曾就读于美国卡内基梅隆大学,获计算机科学博士学位。后担任副教授。在他的博士课题研究工作中,首次创造性的提出基于统计学的语音识别方法,并在此基础上开发出了世界上第一个“非特定人连续语音识别”系统,使识别率由原来的百分之三十提高到百

14、分之九十六,该方法今天已成为计算机语音识别的技术主流,也奠定了李博士在该领域的权威地位。1988 年,商业周刊授予该系统“最重要科学创新奖” 。在校期间,李博士还开发了“奥赛罗”人机对弈系统,因为在 1988 年击败了国际象棋世界冠军而名噪一时。李开复同时还是美国电气电子工程协会的院士。常用 算法&数据结构浙江大学微软技术俱乐部 彭鹏ACM 竞赛1,竞赛中常见的 16 种题型 3,竞赛中基本的数据结构与算法 2,时空复杂度的分析0,如何建立一支强队 如何建立一支强队个人的能力理论(几何 , 数论, 动态规划, 图论等)技术(编程 )队员能力上的互补某论坛,一无聊男 yy 的中国梦之队钱文杰(

15、) 反应奇快 ,擅长随机化,贪心,NOI 贪心王刘汝佳 or 吴嘉之 见多识广,做过的题必别人见过的题多赵爽 上海交大的割题手 一支强队需要的角色Leader/Coordinato(协调比赛进程)Reader(发现题目隐讳的涵义)Thinker(逻辑能力强 , 收集其他队员意见)Programmer/Debugger(反应快/稳,细心)Helper(协助比赛 , 查错, 验证数据等 )参考书籍主要参考书籍C+ Primer C+ 标准程序库算法导论算法艺术与信息学竞赛组合数学计算几何 历届国家集训队论文 时空复杂度的分析时间复杂度的分析空间复杂度的分析函数增长和运行时间引用刘汝佳序列和字符串常见题型Dynamic Programming(动态规划)Greedy(贪心) Complete Search(穷举) Flood Fill (种子填充)常见题型Shortest Path (最短路径)Recursive Search Techniques (回溯)Minimum Spanning Tree (最小生成树)Knapsack(背包 ) 常见题型Computational Geometry(计算几何) Network Flow(网络流) Eulerian Path (欧拉回路)Two-Dimensional Convex Hull (二维凸包)常见题型Big

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号