每天写500字每天写1000字忘忧社

如何提升认识格局:认识计算机排序算法,建立量级思维

2019-05-02  本文已影响5人  望月从良

这个年头,文盲不是不识字而是不识计算机。2016年相对于信息时代而言,类似于耶稣诞生,在此之前叫前人工智能时代,在此之后人类正式进入人工智能时代。当是时,谷歌的AlphaGo与围棋世界冠军李世石决战,围棋国手事前嘲笑它为阿尔法狗,当AlphaGo把李世石碾压得几乎无还手之力后,国手们收起了笑容,毕恭毕敬的称它为”阿老师“,从狗到老师的变化仅仅隔了几个月,但人类从此进入智能时代,既然计算机已经变成了”老师“,我们就应当”尊师重道“,虚心向老师学习。

随着人工智能在各个领域的迅猛发展,人们开始恐慌。就连霍金这样的大科学家也惊呼计算机将奴役人类。此类恐慌在历史上屡见不鲜,当麦哲伦带领几百位船员拿着洋枪洋炮征服菲律宾土著时,后者心中怀的正是此种恐慌。在智能时代来临之际,在我们的认知不断被计算机颠覆之际,我们如今面对的局面就如当年被征服的菲律宾土著,我们除了恐慌外,更重要的是要实现思维方式的升级,倘若我们不能掌握计算机思维,让人工智能为我所用,那相当于你拿着”大刀长矛“对阵”洋枪洋炮“,最终只能遭受菲律宾土著那样被碾压得结局。

什么叫计算机的思维方式?我们用围棋来举例说明。在人看来,围棋是一种“道”,它蕴含着人能掌握的规则,但经过规则而导致的变化万千的棋盘则是人根本无法把握的“道”,因此“道”是人可以感知,但却完全无法认知或掌控的玄妙时空。但在计算机看来,围棋没有什么神奇的地方,它就是一道数学题而已,哪种看法对呢,李世石的遭遇表明后者才是正确的。

alphaGo.jpeg

人喜欢把自己掌握不了的客观现象称之为“道”,本质上是人太“笨”。人根本想不到围棋本质上是一道数学题,当然更没有解题的能力。虽然计算机本身没有主动思维的能力,但是有人在它背后帮助它思维。如果我们把自己与这帮人对比一下,你是否觉得不寒而栗。那些掌握AlphGo,开发AlphaGo,运用AlphaGo的人,相对于我们可不是仅仅掌握了“洋枪洋炮”而已,他们甚至是掌握了核武器,而我们能对抗他们的却只能赤手空拳,试想我们怎么可能是那些掌握高级算法的人之对手,对抗起来只有被无情碾压的命。

力量上的差距本质上是思维方式的差距。我们看看支付宝与传统银行的对比就知道。支付宝中余额宝的资金量在推出后迅速从0增长到几万亿,四大传统银行苦心经营几十年都达不到这样的水平。同时支付宝交易中的欺诈比例极低,比普通银行低好几个数量级。这是因为居垄断地位多年,赚得盆满钵满的传统银行没资源,没能力吗。

传统银行在竞争力上与支付宝的差距,本质上是人的感性思维与计算机思维的差距。传统银行把每一个交易,每一案子孤立的看待,这符合人的本能,但对交易管理和欺诈预防的管理非常有限。而支付宝一开始是网状的,通过分析大量的数据分析出交易和欺诈的规律,数据越多它对规律的识别就越准确,因此支付宝能有效的应对庞大的交易量,而依靠人力的传统银行根本做不到。

分支.png

并非所有的人和机构都能自觉的采用符合智能时代的思维方式和方法。受环境,经验和生理上的限制,人的思维先天上存在不足。但有好些人他们的思维水平超出我们常人,他们善用各种IT工具更快更好的达到自己的目的,学习这些人的方式和方法,是在今后智能时代赢得胜利的唯一途径。

无论从事什么行业,思维方式改进了,方法论先进了,境界提高了,在竞争中你就是拿洋枪洋炮对付别人的大刀长矛,即使对方是几十万大军,但也能被你先进的思想和武器轻易横扫。

掌握计算机思维并不需要你学习艰深的数学知识或编程技能。我们从认识一个概念开始,那就是排序。排序不仅计算机要做,就是现实人生,我们也要花费大量的精力在排序上。我们时常要把次序凌乱的物品按照某种规则摆放起来,例如你会按照时间的先后来整理邮箱里的邮件,或者按照时间点来安排一天的日程。

排序.jpg

虽然我们经常使用排序方法,但很少人能清楚的表达出排序的流程。假设给你几个数字,例如4, 3, 6, 5, 1, 2,你能用清晰的语言描述出如何将这几个数按小到大排序吗?一种排序方法叫冒泡排序,它把相邻的两个数比较,然后把大的放在右边,小的放在左边,对于给定例子,我们先比较4,3,交换两者位置变成3,4,于是数列变成3,4,6,5,1,2。接着比较4,6,由于后者比前者大,因此不做变动。

接着继续比较6,5,前者比后者大,因此交换位置变成5,6。然后继续比较6,1,继续交换位置变成1,6,继续比较6,2,然后交换位置,最后数值最大的6被排在尾部。接下来我们继续对6以前的数字集合做同样的操作,我们会发现5会排在这些集合的后面,6的前面。每次对集合做操作时,最终都会导致“大数沉底”,连续经过6次类似操作后,数列就会从小打到排序。

我们算一下操作的次数。第一次操作时,我们需要连续比对5次,第二次操作时,我们需要连续比对4次,依次类推,如果序列中有n个数字,冒泡排序需要比对的总次数为n-1 + n-2 + ... 1 = n*(n-1) / 2 = (n^2 - n) / 2,在算法设计中,我们会拿量级最高的那项来表示算法的操作次数,因此我们用n^2来表示冒泡排序法的效率。

次序.jpeg

算法的目的是多快好省的解决问题。有没有比冒泡排序更快的方法呢?在计算机算法中,一种常用的排序法叫归并排序,它非常生动的体现出了计算机思维的特点。在军事谋略上有一种计谋叫分而治之,我把敌人分割成多个小部分,显然每个小部分的战斗力要远远弱于整体战斗力,于是我们能以更小的代价依次消灭被分割的小部分,最终实现消灭对方整体的目的。

归并排序先把数据分割成两部分。如果这两部分已经是排好序,那么我们就可以将两部分合在一起形成一个排好序的整体。假设有两部分1,3,5和2,4,6,合并时我们分别从两部分中取出最小值,然后选出两者中最小的一个。例如我们从两部分中取出最小值就是1和2,显然前者小,于是把1选择出来。然后再次选择两者最小值,那就是3和2,此时把2挑选出来,这种方式依次进行,最后我们能得到一个排好序的数组。

计算机算法思维一个核心观念叫递归。也就是我把同样的思维套到数量不断缩小的数据上,直到数据很容易处理为止。例如对于原来的数据序列4,3,6,5,1,2。分成两部分得4,3,6和5,1,2,但这两部分都没有排好序,于是我们分别对两部分继续使用归并排序,例如对第一部分使用归并排序时,我们再次将其分成两部分:4和3,6,第一部分只有一个元素,因此它已经排好序。第二部分已经是排好序,于是我们把两部分归并得到3,4,6,因此第一部分就成功排序。对于第二部分我们如法炮制就可以得到1,2,5,于是两部分合并后能得到一个排序的整体。

屏幕快照 2019-02-28 下午12.35.52.png

归并排序的效率比冒泡排序高得多。归并排序每次把数据分成两半,如果总共有n个数据,那么总共分半的次数是lg(n),每次把两拨数据合并起来时,所需要的操作次数是n/2,因此归并排序的效率我们可以用n*lg(n)表示。由此归并排序的效率比冒泡排序高一个量级,效率量级的不同会导致算法在效果上有天壤之别,后面我们会着重介绍”量级“的概念,它是计算机思维与人的感性思维一个至关重要的区别。

排序的应用能形成千亿美金的大生意。19世纪末,美国人口以每年30%的速度递增,美国政府计划每十年做一次人口普查,1880年开始一次普查,收集数据很快,但处理数据极慢,数据处理完毕时已经过了八年,于是上次调查的数据还没派上用场,下一次人口普查又要开始。

数据处理过慢是因为没有好的办法对收集的数据进行排序。受到铁路检票打卡系统的启发,一个叫霍勒姆的发明家发明了一套打卡排序机器,美国政府采用该机器后,对人口普查信息整理的速度提升了成千上万倍,霍勒姆凭借该发明建立了霍勒姆机器公司,该公司经过一系列的合并后转变为计算制表记录公司,若干年后改名为国际商业机器公司,也就是现在鼎鼎大名的IBM。

IBM.jpg

计算机思维与人的感性思维一个重大区别在于“量级”。我们直觉上感受不到前面说的冒泡排序和归并排序有何区别,直白的说如果没有后者的发明,像微软,谷歌,亚马逊,BAT等公司都不可能存在。倘若使用前者,阿里现在每小时要应对的交易量可能一天都处理不完,如此马云爸爸也不可能成功华人首富了。

计算机思维最重要的特色就是从量级的角度考虑问题。王健林曾说,先实现一个小目标,我先挣他一个亿。这句话时常在网上被人打趣,显然从王健林现在的层次和身家来看,他对钱的思考必然在”亿“的量级,我们普通人一个月不过挣几千万把块,拥有钱的”量级“太小,因此不可能有王健林这样的气势和格局。

人脑考虑问题或物体的数量时,习惯几百几千,而计算机思维则要考虑几十亿,几千亿,乃至无穷大。因此阿里,腾讯里面那些拿百万甚至千万年薪的工程师而言,他们设计程序时考虑的可不是满足当前需求即可,而是要考虑数据量瞬间提升几百倍,有数千亿的数据同时涌向阿里服务器时,程序是否能顶得住原子弹爆发似的数据流量冲力,试想双十一时全国几亿人拿着键盘手机不断点击,产生的数据如电影2012里面的海啸冲向阿里服务器时,如果阿里工程师没有在千亿这个量级进行思考的话,阿里的服务器立马就瘫痪了。

海量数据.jpeg

拥有计算机思维的人在思考问题时有两个特点。小量级和大量级东西放在一起时,前者必须要忽略。因此他不会考虑蚊子大腿也是肉,就如同王健林做生意不会考虑自己能否多挣几万块。其次,若干个小量级的东西放在一起也比不上一个大量级的东西,就好像十几把芝麻放一起也比不上一个西瓜,对王健林而言做几十个上千万的项目不如做好一个几亿的项目。

有了“量级”的概念,你就初步构建了计算机思维。有“量级”思维的人,心中存有大格局,不会小气得为了挣到几粒芝麻而忽略了西瓜的存在,是一个能够理解和体会“先挣它一个亿”的人,有了这样的思维模式便能理解,体会AlphaGo的力量,并刻意的训练自己学会,掌握,利用这些力量,以如此格局和力量,碾压那些“芝麻”心胸的茫茫大众自然是不在话下。

请关注公众号,让我们共同学习进步


qrcode_for_gh_00f6e6bb0b6c_258.jpg 新书上架,请诸位朋友多多支持: WechatIMG1.jpeg
上一篇 下一篇

猜你喜欢

热点阅读