从计算机算法到做事效率的提升

从上周开始,《吴军的谷歌方法论》中的文章,和计算机知识相关性更强了。在阅读老师精彩文章之余,也需多做一些自己的反思和总结,希望能跟上老师的脚步,对计算机思维有较多的认识,让自己更好地适应智能时代。

一、计算机算法的比较

对于计算机的算法,吴军老师是这样定义的:

科学家们在翻译现实世界的需求和计算机虚拟过程时,就提炼出一些高效的、不断被验证过的标准流程,这些流程就是我们所说的计算机算法。

计算机算法构成了计算机科学的基础。在算法上一个很小的差别,会导致计算机执行效率上千万倍的差距。受此启发,吴军老师常说,人和人水平的差别是数量级的。因为不同的做事方法,产生的效果之间会存在非常巨大的差异。

这里老师提出了A、B两种算法的比较:

场景一:使用1万个数据进行测试,算法A的运行时间是1毫秒,算法B的运行时间是10毫秒。

场景二:使用100万个数据测试,算法A运行10000毫秒,算法B运行6000毫秒。

看似A在数据少时有优势,B在数据大时有优势,无法比较,但算法分析之父高德纳确定了算法比较的标准。

在比较算法快慢时,需要假定数据量会达到近乎无穷大。然后,将影响算法快慢的因素分为两类:一类不随数据变化,另一类是随着数据变化的。

在比较两种算法的时候,只关注第二类影响因素,也就是随着数据变化的影响因素。如果两种算法在量级上是相当,那么就认为两种算法是一样好的,不必计较三五倍的差别。

高德纳之所以能提出这样的理论,在于他能将问题理想化,提出次要因素,考虑最重要的因素。这样的思想对于我们很有启发意义。

记得在物理化学中,科学家为了简化问题,会将实际气体简化为理想气体。就是假定气体分子本身的体积,气体分子之间的受力和气体分子碰撞的能量损失,都可以忽略不计。基于理想气体的模型来研究问题,可以极大地简化计算,只考虑压强和温度对于空气系统的影响。这样简化的过程,是一个忽略次要因素,侧重研究重要因素的过程。当然,在一些特定的空气系统中,科学家会对理想气体方程进行修正,以便更好地模拟实际气体,以便降低误差,得到更准确的结果。

这样的思维对于我的启发是,面对生活中的问题,可以抽象出影响的因素,找到最主要的矛盾,用最主要的精力把主要矛盾解决了,再去逐个解决次要的矛盾。

二、从排序算法到提高效率的本质

在生活中,我们会面对很多具体的排序问题,比如一个年级的学生按照成绩排序,电商按照商品的交易量排序等。将这些现实世界的问题,变成计算机可运行的程序,中间的桥梁就是排序算法。

文中老师介绍了最基本的插入法和冒泡法,两种算法出于同一个量级,是一样好的。那么更好的算法是怎样的呢?

这就要提高计算机的效率,而提高计算机效率的方法,就是让计算机少做事情。这里老师介绍了一种叫作归并排序的方法。当处理的数据为1万时,冒泡法和插入法的复杂度是1亿,而归并算法的复杂度是13万,可见归并算法比前两者要好处很多。这也就是为什么,水平较差的程序员会无端浪费成千上万倍的计算资源了。

归并算法的效率之所以这么高,是因为它减去了很多不必要的比较。这里老师也再次说明了自己的做事方法,就是少做事情,把每一件经手的事情都做到很好。

效率=产出/所做的事情。人的产出是很难提高的,但是所做的事情是可以减少的。

三、快速排序:要想提高效率就要少做事情

在这里老师介绍了目前最好的排序算法:快速排序法。该方法的基本思路如下:

首先,对于一大堆无序的数字,从中随机挑选一个,比如是53,这个被随机选上的数字被称为枢值。这个枢值可以将所有数值分为两组,一组大于53,一组小于53。

然后,从上面得到的两堆数字,分别采用第一步的方法各自再找一个枢值。这样一层层找下去,很快就把所有的数字排好了。

快速排序在归并排序的基础上,进一步少做了事情。

那么是否有比快速排序更优的排序方法呢?答案是否定的,关于这一点已经在数学上证明过了。这就是我们做事情的边界。如果一个人不去认证读数学证明,而是一心要去研究更好的排序算法,就是浪费自己的时间。我们一定要在边界内做事。

关于快速排序,古小千同学的留言非常精彩。我们经常在做计划排优先顺序上花了大量的时间,小千同学给出了一个不错的方法:

首先找到一个显而易见的待办事项(枢值),接着综合考虑急迫性和重要性,分成两拨;再将两拨事情找到枢纽,就把所有的工作,依照平分分成四份了。

再接下来,我会快速检查后两部分的事情,将不必要的事情减法删除、将重要但不急迫的事先预定计划。然后专注完成前两部分的事,透过排序和减法,一天要完成的事就只剩约一半。枢纽这个节点,帮我们梳理参考点,而事情一件件单看,很难取舍;但有了参考,一比较就能掂量差别,勇敢做减法了!

对于快速排序的实际应用,我是这样理解的。我们要做的事情大体可以分为工作方面和生活方面。由于我们一段时间只能做一件事情,那就要从工作中找到最重要的事情,生活中找到最重要的事情,比较两件事情的优先级。

就工作方面而言,我们又有很多不同的选项,可以深入当前的工作,可以准备换工作,也可以思考创业。因为我现在的公司就是老师说的底层员工和总经理差不多的单位,所以最近在考虑换工作(其实考虑很久了…)。过年时候有朋友联系我,希望我和他一起做B2B平台方面的创业项目。如果平台发展顺利,那么后期的回报是非常大的。但我综合考虑了一下,目前自己的能力还不足以胜任。自己本身的基线还不够把这件事情做好。那么我现在的优先顺序就是:换工作>本职工作>创业。

然后在每个小的方面,再进行排序,优选出最重要的事情。老师说想要提高效率就要少做事,对于最终要选择哪些事情来做,快速排序法是一个不错的方法,帮助我们确定优先顺序。

四、计算机科学和计算机工程的差别

这里老师分析了计算机科学和计算机工程的三个差别:

1.方向和道路之分别

前者指明方向,后者铺就道路。

2.关注的事情不同

前者关注的是算法在量级上跨越式的提升,不会过分考虑处理器时间、计算机内存等限制;而后者则要考虑很多具体的问题,即便能节省20%的时间也是有意义的。

3.和钱的距离不同

前者离钱较远,更多纯粹研究,后者离钱较近,更加务实。

通过分析两者的区别和联系,我认识到,纯粹的研究有助于技术产生量级上的提升,如果喜欢做研究,就不要羡慕做工程的人离钱更近,专心做出一些让世界有所不同的东西。如果喜欢做工程,首先要仔细查阅资料,找到现有研究成果中最先进的方法,在此基础上做微调

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 一. 写在前面 要学习算法,“排序”是一个回避不了的重要话题,在分析完并查集算法和常用数据结构之后,今天我们终于可...
    Leesper阅读 2,520评论 0 40
  • 不动声色,好高大上的一个词!有一种奢华的低调。 在这个把“马爸爸”和“乔不死”供上神坛,励志与...
    等风来别急阅读 1,520评论 1 2
  • 基础入门 React Native For Android环境配置以及第一个实例 React Native开发ID...
    编程之上阅读 1,385评论 0 42
  • 1 雪,漫天的雪飞扬了下来,混着一丝丝的鲜血落在沈烛的身上。沈烛手里握着一节和她衣服一样艳红的鞭子,鞭子上还滴着鲜...
    沈琳琅R阅读 475评论 1 1
  • 一、因劳动者原因致劳动合同无效的赔偿责任 法律依据: 《劳动合同法》:第八十六条:劳动合同依照本法第二十六条规定被...
    小好阅读 615评论 0 1