说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

《算法的乐趣》作者王晓华访谈:多看、多做、多想是秘诀

HTML文档下载 WORD文档下载 PDF文档下载
王晓华是一位热衷于算法研究的程序员,他是CSDN算法专栏的超人气博主,也是《算法的乐趣》一书的作者。近日,笔者采访了王晓华,请他分享算法的经验之道。

王晓华是一位热衷于算法研究的程序员,他是CSDN算法专栏的超人气博主( 博客),也是《算法的乐趣》一书的作者。2005年毕业于华中科技大学,目前在中兴通讯上海研发中心从事光纤接入网通讯设备开发,担任EPON(以太网无源光网络)业务软件开发经理,参与开发的PON设备在全球部署过亿线,为数亿家庭提供宽带接入服务。 

日前,笔者对王晓华进行了采访,请他分享专研算法的乐趣之道。


王晓华

CSDN:请先做个自我介绍、所在公司以及目前所负责的领域。

王晓华:我目前在ZTE上海研发中心从事软件开发相关工作。我们开发的产品是无源光网络(PON)设备,在网络设备领域中,我们开发的设备属于接入网设备,也就是常说的“网络的最后一公里”。光接入技术目前已经是接入网的主流技术,未来的家庭宽带建设,比如FTTH、FTTB,都依赖于光接入技术的不断发展和革新。当前,下一代PON技术(NG-PON2)的标准正在制定过程中,NG-PON2标准将提供单纤40G bps的下行带宽,千兆光纤入户将成为现实,到时候只有百兆接口家用路由器将被淘汰,无线传输的速率也将水涨船高。

CSDN:是什么原因促使你对算法感兴趣的?又是什么原因让你坚持把算法做下去的?

王晓华:刚开始我对算法和软件没有概念,觉得编程序就是为了应付作业。后来因为学习表形码输入法,就写了一个程序把Windows格式的表形码码表文件转换成UCDOS支持的码表文件格式,这个程序只用了几分钟就完成了十几万条记录的转换,给我很大的震撼,让我觉得这东西不只是交作业,还可以做一些有用的事情,从而开始对编程感兴趣,从简单的排序算法开始,逐渐接触了更多有用的算法,进而对设计算法产生兴趣。

研究算法其实是一个很枯燥的过程,常常一个人在计算机前面一坐就是一天,其他人都很难理解这种行为,没有兴趣是坚持不下来的。上学的时候也热衷于参加各种算法比赛,填鸭式的背很多东西,记算法的模式,搞得很辛苦,也没取得很好的结果。当时以为这就是算法的意义,搞得几乎对算法失去了兴趣。读研究生的时候想做一个MP3播放器,为了实现均衡器和频谱的功能,找了很多资料,最后发现了离散傅立叶变换算法,小小的算法蕴含了这么多的意义在里面,于是对算法又燃起了兴趣。后来有学习了一些很有意思,但是都很实用的算法,比如A*寻径算法、棋类游戏的博弈树算法等等,渐渐地开始把兴趣放在更有实用意义的实用类算法上,开始研究针对各种现实问题的算法设计和实现。解决的实际问题越多,分析问题、解决问题的能力就越强,“玩”算法的兴趣就越大。

CSDN: 《算法的乐趣》这本书的思路是怎样的?对读者而言如何学习这本书,你有什么建议?

王晓华:这本书从一开始就顺着培养兴趣的思路来策划的。市面上已经有很多算法设计的书了,或浅显易懂,或深不可测,如果沿用类似的讨论再写一本完全没有意义。而我的“算法系列”专栏中刚好已经介绍了很多有意思的算法,于是就以此专栏为基础,补充了一些有趣的专业类算法和实用类算法,构成了本书的主要结构。每一个有趣的算法都展示了从问题的提出,到设计模型,最后得到能解决问题的算法实现的完整过程,将算法设计的三个关键问题融入到整个过程中,使得读者在得到一个趣味算法的同时,也学习了算法设计的整个过程。

本书各个章节之间没有前后关系,可以从任意一个感兴趣的章节开始看这本书。对读者而言,我建议先系统看完前三章,然后再挑选感兴趣的章节开始。在图灵社区可以下载本书的全部源代码,任何问题都可以在源代码中找到答案。

CSDN:什么是算法?最常见的算法有哪些?可否就其中一个给大家举个示例。

王晓华:我理解的算法的意义就是解决问题,从这个角度看,我将算法分为专业类算法、通用类算法和实用类算法三类。专业类算法通常都有一些坚实的数学理论、物理理论或其他理论作为理论支撑,比如离散傅立叶变换算法、RSA算法、AES加密算法、各种曲线拟合算法、插值算法、牛顿迭代法以及计算机图形学中的各种图形生成算法、消隐算法等等。专业类算法通常在一些专业领域内广泛应用,经过多年的研究和技术积累,普遍形成了各种固定的高效算法实现,很多情况下都可以像函数库一样直接拿过来用。

通用类算法也有相应的理论支撑,算法的套路是固定的,但是算法的实现要视具体的问题而定。此类算法的例子也比较多,比如退火算法、蚁群算法、遗传算法、BP神经网络模型学习算法(误差反向传播算法)等等。此类算法虽然套路固定,但是不同的问题有不同的实现方式。以遗传算法为例,针对不同的问题要设计不同的遗传编码格式,遗传编码格式不一样,对应的基因交叉和变异算法的具体实现自然也不一样,但总的来说,还是按照遗传算法的套路进行。通用类算法应用领域更广泛,上面提到的几种算法都是常用的最优化求解算法(随机搜索算法),在机器学习、人工智能和虚拟现实等领域都可以看到这些算法的身影。

实用类算法往往是针对特定的问题设计的算法,用于解决某个或某种类型的问题。有时候解决问题的算法很多,但是受重视的往往是公认的效率最高的算法。比如稳定匹配问题,Gale-Shapley 算法就是公认的最好算法。二分匹配问题,大家会首选匈牙利算法。Pierre Dellacherie 算法是俄罗斯方块游戏中最好的One-piece评估算法。除了这些著名的算法之外,任何人为解决某个问题而设计的算法也可以归为实用类算法,比如本书提供的求解“三个水桶等分8升水问题”的算法和“爱因斯坦的思考题”的算法。设计针对具体问题的实用类算法是衡量一个程序员水平高低的重要因素,也是程序员需要重点关注的问题。

CSDN:目前中兴通讯用到了哪些算法?能不能向读者详细介绍下该算法?

王晓华:中兴通讯的产品线很长,甚至包括太阳能发电和无线充电,我还真不知道这些产品中到底都用到了哪些算法。就我所涉及的产品来说,很多基本的算法都会用到,既有各种专业算法,也有为解决特定问题而设计的通用算法。比如线性表的排序和查找就用到了快速排序算法和二分查找算法,数据一致性校验用到了CRC算法,还有本书中提到的环形队列算法。PON网络的特点是下行数据是广播到所有终端设备上的,为了数据安全,标准定义了一套密钥交换算法,同时规定了实际加密数据采用了三重扰动算法和AES加密算法。

CSDN:从一名资深程序员到《算法的乐趣》的作者,你的学习秘诀是什么?会通过哪些方式来提升自己的专业技能?

王晓华:其实没有什么秘诀,就是多看、多做和多想。多看就是多看书,多看各种优秀算法的实现代码。多做就是多写代码,看懂算法的实现原理和写出正确的算法实现之间还是有一道很宽的槛儿,研究一个算法,要到能正确写出算法实现为止,而不是看懂就算了。多想就是多思考,为什么这个算法比那个算法高效?这个启发函数为什么要这样设计?多思考可以培养举一反三的能力。

CSDN:未来的下一步计划是什么?有哪些难点需要去克服?

王晓华:这个还真一时不知道从何说起,先不回答了,抱歉。

CSDN: 目前,你常用的编程语言有哪些?在你看来还有哪些语言比较热门?

王晓华:我目前用的编程语言是C/C++和Lua,偶尔用用Java。2008年听Ivar Jacoson的演讲,他讲了个笑话,形容软件行业就像是时尚业,一天一个潮流:十五年前我们都讨论OO,十年前我们追的是组件、UML和UP,五年前变成了RUP和CMMI,两年前流行XP,现在是Scrum。但是他的一句话我很认同,那就是这些都是好东西,但是没有任何一种是可以解决你的全部问题的银弹。我对当今比较流行的编程语言的看法也是这样,存在就是有道理,这些编程语言没有好坏之分,但是有各自擅长的领域,要合理的使用它们。

CSDN:你是从什么时候开始接触CSDN的?对CSDN有什么建议吗?

王晓华:我从2001年开始就是CSDN的注册用户了,刚开始是泡论坛,后来写博客。建议的话我觉得CSDN要让博主们能够通过博客获得收益,无私的奉献是一种热情,但是热情过后就什么都没有了。之前CSDN的博客是可以嵌入广告的,我就从嵌入广告中获得了十几美元的收益,后来都取消了,我看到很多人就把博客迁走了,或者申请了独立的域名。CSDN的博客和技术文章要繁荣,就要有一个共赢的模式。

选择PHP的理由 -PHP初学入门教程2 从一个简单的程序来了解PHP -PHP初学入门教程3 PHP语法基础 -PHP初学入门教程4 建设一个简单的交互网站(一) -PHP初学入门教程5 建设一个简单交互的网站(二) -PHP初学入门教程6 建设一个简单交互的网站(三)密码验证 -PHP初学入门教程7 PHP文件上传 -PHP初学入门教程8 为站点添加投票功能 -PHP初学入门教程9 广告条轮播-PHP初学入门教程10 操作MySQL数据库实现简单的留言板-PHP初学入门教程11 使用PHP来操作Oracle数据库 -PHP初学入门教程12 技术杂项PHP教程结束篇 -PHP初学入门教程13 .NET中DataSet和DataReader的区别与转换 CGI技术及其开发(二)-Delphi资料 CGI技术及其开发(一)-Delphi资料 COM/DCOM中如何传递数组-Delphi资料 COM与DCOM的区别与联系-Delphi资料 Cookie的建立使用-Delphi资料 Delphi 3中Cookie的建立使用 Delphi 中 串 行 通 信 的 实 现 Delphi4.0 开发WEBMAIL程序 Delphi4的Winsocket编程 Delphi4开发WEBMAIL程序 Delphi编写网络程序的安全措施 DELPHI 和 THE INTERNET Delphi开发Web Server程序如何返回图像 Delphi开发Web Server程序响应用户的输入 DELPHI与INTERNET(二) DELPHI与INTERNET(一) Delphi中串行通信的实现 Email 服务器的简单实现-Delphi资料 索求中英译文,毕业论文急用! 哪里有samba下载,要可以在RedHat7.2上安装的 请教 ? 关于ado连接的问题。。。急啊~~~ Datalist里的Lebel怎样动态改变Text的值? Windows98底下的UNIX仿真软件 紧急求助(调用winrar的dll或ocx的问题?)!!!!!!!] 再回首 象jbuilder那样的集成开发环境中,对可视话控件的托拽式(所见即所得)的操作是如何做的 关于WSAD开发工具(up有分) 我是flash超级菜鸟 一个api的问题,急急急,在线等待。完成后即给分。关于api继承宏的问题。 求你们了,给非处一条活路吧…… 郁闷! 语句性能分析的问题,请教高手! 有没有人装过微软的petstore?我安装的时候遇到安全性错误 *****伊茗的问题:如何让程序运行时先显示的是Form2而不是Form1 如何保存控件里的内容? 怎样生成随机数 谁有<<数据库系统开发实例导航—vb6>>电子版 有没有替代DATAGRID控件的表格控件? 动态改变iframe的src值和大小,如何做? 显示器图像抖晃,请各位大侠帮忙! 请用实例说明this怎么用。。。。谢谢。。。 vb开发的程序怎样用 Setup Factory 6.0 打包(给出具体的步骤)20分 fragroute之浅显研究(1) 紧急求助!(文本文档在网页中的对齐) 求救:请问网上发传真可以省掉恐怖的传真费吗? 急急急急急急急急急急急急急!!!!!! 关于VC中使用ADO进行事务处理BeginTrans()的问题,很奇怪。(内有代码,非常疑惑!求助) 电影快下呀 请问如何将文件删除到回收站? 傻傻猫是男的女的?长得怎样啊? fragroute之浅显研究(2) 如何做成下面图示的样子呢? 请问如何让UDP的SOCKET监听? win2000 Teminal 注册表里面的内容怎么更改之后重新启动又恢复原样了???? 请问我该怎么办? DBMS_JOB.SUBMIT调用带参数的过程时用变量怎么传参数?高手帮忙啊! 网络编程,发送对话 求助:oracle连接错误ora_01034:oracle not available,如何解决!急!!!!! 请问谁可以提供Crystal.Reports 9的keycode??????? 使用Linux怎樣登入NT網域 关于生成sql server 2000无值守安装文件的问题。生成后怎也找不着有.iss文件。很奇怪已经试过无数次了。 怎样将字符串内容写在内框架iframe里面?(不是文件内容) 我们公司用notes做个项目,让我用java连接domino,我不知道哪里可以找到相应的驱动。 在制作CHM文件时怎样让标题指向HTM文件中的某个书签而不是开头? 初学者问题,求书!!!!!1 考研?考认证?工作?迷茫!!! 发布几个WebForm(C#)服务器控件,比如增强DataGrid,Button等等 人工受精为什么容易产生双胞胎 秦将王翦破赵的破 怎样将桌子旋转将桌子旋转的具体方法 天外有多少星系谢谢了,大神帮忙啊 秦将王翦破赵 中 破 的词类活用 题目:“中国走上中国共产党领导的社会主义道路是历史的必然”要求不少于800字啊 在星空中有几大星系大神们帮帮忙 追击项羽的王翦和秦将王翦是一个人吗?!追击项羽的怎么也叫王翦?!是同名同姓还是怎么?!有他的历史简介吗?! dfa是什么意思 星系和星座哪个大?拜托各位大神 “它感到太幸福了,但它一点也不骄傲,因为一颗好的心是永远不会骄傲的”“一颗好的心指什么 为什么会出现高分低能这种现象? 人工受精双胞胎的过程复杂吗 “他感到太幸福了,但他一点也不骄傲,因为一颗好的心是永远不会骄傲的”,一颗好的心是指什么样的心?《丑小鸭》 “作词”也就是写歌词,怎么翻译?“作曲”呢? 新年怎样过一个讨神喜悦的生活? 理解他感到太幸福了,但他一点也不感到骄傲,因为一颗好的心是永远不会骄傲的一句 哑然失笑里面的哑字是什么意思啊? 求古文翻译“君之病在肌肤,不治将益深” “年轻的白天鹅感到太幸福了,但他一点也不骄傲,因为一颗好的心是永远不会骄傲的”出现安徒生哪篇童话快 冰冷发青和发哑的意思是什么? 你才是你自己的“上帝”请结合生活实际谈谈你的理解 R是三角形ABC外接圆半径若ab小于4R2cosAcosB则三角形的外心在 孔子训子 译文陈亢问于伯鱼曰:“子亦有异闻乎?”……这篇 人工受精可以选择男女性别吗 齐景公问政于孔子什么句式 英语翻译陈坑问于伯鱼:“自亦有异闻乎?”……问一得三,闻诗,闻礼,又闻君子之远其子也.(翻译) 人工受精能选择性别吗 NPI是什么 孔子训子 翻译 人工受精能选择性别吗 Commercial Airplanes 翻译成正规中文是什么呀 孔子训子 设π commercial conditions怎么翻译 沙哑是什么意思 该函数的值属于区间? 题目在图上 在线等...有点不清楚下面是log1/2 和 log1/11该函数的值属于区间? A-3,-2 B(-2,-1) C -1,0 D 2,3 看大树辩方向,枝叶茂盛的是什么方向 六棱柱是由几个面围成的 若一个含a的二次函数在某个区间上的最大值为2 ,求a的值. 很多公司有NPI职位是什么意思 为什么说心理是人脑的技能 阐述并举例 科学家们观测到的来自星系的光有没有不可见光 什么是NPI?急~~~~~~~~~~~~~~~~~~ 用关联词语把下面两句话连起来.我们愿意自己多吃苦.我们不能给别人增添麻烦. 光从我们目前观察到最远星系传播到地球的时间 npi是什么意思 在荷马史诗中,古希腊人如何看待战争与和平、生命与死亡、人与神、人与命运、人与自然的关系?要原创的 勤奋的名言名句 做一些练习 英文翻译 中国传统文化中表现人与自然和谐相处思想的是() A、人定胜天 B、天定胜人 C、天人合一 D、天命主宰 目前能探测到的最远的星系的什么猜 如何确定星系本身发出的光的频率红移现象不是说星系远离所以看到的光线频率变低吗?那么怎么确定原先星系发出的光的频率? 英语翻译这里可以下到关于Commercial Horticulture的英文解释,这个词翻译成中文应该是怎样的呢?www.horticulture.org.uk/PDF/Hort%20pdf%20files/08-09%20what%20is%20com%20hort.pdf 有没有这条定理 关于点到直线距离MAX例如A点为 (a,b) 而问在所有通过B(m,n)的直线中 到A点距离最远的直线是哪条我的解答是是与AB直线垂直的那条 原因是其他直线A点所作垂线一律与垂直时A到 线性代数可应用到哪些方面 梦到两棵枝叶茂盛的大树突然倒下是什么意思拜托各位了 3Q 神如何在生活中引导我们? 秦将王翦破赵解释 心理学 一边打电话一边敲桌子说明什么 综述:东南亚能源市场潜力备受关注南航空客380首航悉尼成功外交部就安倍涉华挑衅言论、美监听他国外交部:中方对叙提交化武初始宣布和销张平会见欧洲客人新闻分析:格鲁吉亚大选后内政外交如何新闻人物:格鲁吉亚当选总统马尔格韦拉研究:飞机座椅加宽1英寸 乘客睡眠质IPCC中国宣讲会:21世纪末全球气欧洲一航空公司推“慈善空姐日历” 泳德媒曝美国10年前已监听默克尔通讯 美国国安局:奥巴马并未参与讨论监听默印度反对派竞选集会遭袭 死亡人数上升美研究称因感到受尊敬50岁以上人群更澳大利亚一墓园将举行”恐怖”派对 迎俄罗斯兴起“护花行动”保护夜行年轻女快讯:浙江黄岩一企业起火 2人跳窗逃嘉兴国际名品城工地脚手架坍塌 工人1当代女画家王玮百幅弥勒造像回乡展在浙日本一老妇睡梦中手脚被绑 300万日俄罗斯兴起“护花行动”保护夜行年轻女周迅高圣远领证啦福日电子并购数据夸张 中诺通讯净利一茂业物流复牌五涨停 马化腾三度抽血上简欧浪漫 时尚大气广州名品世界巡展8月再启航谁能接班王晓明? 兴全基金难解之谜聚美优品由聚美到聚“伪” 陈欧对造陶喆被曝先搞海岛婚礼防溺水志愿队野泳守护人建议多单继续持有俄批欧盟新一轮制裁:违反世贸规定金羚电器将举行助学义卖足球赛少年为何也会患前列腺炎?南海农商银行捐资 15万奖励优秀学子将联手打造珠江西岸先进装备制造产业带非本市户籍有8渠道可入户孤岛婚礼,让爱永驻海疆阿森纳官方宣布詹金森离队 租借加盟西“72小时免费开”吸眼球 启腾M70美众院授权起诉总统奥巴马 或为国会中英国女士爱“美臀”
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘