又见

好的计算机算法

057

什么是好的计算机算法?对效率影响有多大?

计算机科学的基本做事原则,就是首先要构建可比较的理想、容易对比的平台,明确一个公平的比较标准,也就是说事先要讲好游戏规则,然后再开始做研究,确定基线,对比这种方法的优缺点。

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

我们在前面讲过模块化是计算机思维很重要的思想,而在软件中,那些模块就是一个个算法。因此算法构成了计算机科学的基础。

今天,全世界计算机领域都以高德纳的思想为准。

高德纳的思想主要包括这三个部分

1. 在比较算法的快慢时,需要考虑数据量特别特别大,大到近乎无穷大时的情况。

2. 决定算法快慢的因素虽然可能很多,但是所有的因素都可以被分为两类。第一类是不随数据量变化的因素,第二类是随着数量变化的。

3. 如果两种算法在量级上相当,在计算机科学里,就认为它们是一样好的,也就是计算机科学家并不关心三五倍的差别。

将世界理想化的目的在于,找到真正的主要矛盾,过滤出那些相对次要的噪音,先把主要问题解决了再说。

最后请你思考一下:能否就如何将问题抽象出来,以便于抓住本质,发表你的看法?

本周思考

鉴于本周的计算机算法来信比较烧脑,所以本周回信会相对简单些。正式回信的主题是: 请你对比参照一下,本周的计算机算法中,有哪些对你实际的生活、工作有帮助?你也可以试着总结几条方法论。

 

058

从计算机的算法,谈谈提高效率的本质

归并排序的思想大致如下:

先将整个班级一分为二,先分别进行排序,再把两个排好序的组,合并成为一个有序的序列。

第二步,就是对两个组的排序。

这种方法其实可以理解为两个过程,先是自顶向下细分,再自底向上合并。

今天的思考题是这样的:归并排序相比那些效率低的简单排序,其实还说明了一个道理,就是将一个复杂问题分解成很多简单的问题,一个个解决,最后比直接解决复杂问题要省很多时间。能否就这件事发表你的看法?


059

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

其实,计算机算法和组织的管理,乃至社会的管理,在道理上有相通性,想要提高效率就是要少做事情。

最后邀请你思考一下,从快速排序对效率的提高,你有什么对生活和工作的感悟?

 

060

计算机科学与计算机工程的区别

计算机科学和工程有什么差别?

1. 方向和道路之分别。

科学常常指出正确的方向,而工程则是沿着科学指出的方向建设道路。

2. 科学和工程需要关注不同的事情,工作的环境也不同。

计算机科学家需要聚焦在量级上提高性能,为了做到这一点,他们需要构建理想的环境,摒除一些不必要的干扰,把主要矛盾突出出来。把所有没必要的数据比较都省略掉。

具体到工程上,节省几倍的时间,甚至20%的时间是很有意义的。

中国在今天,计算机工程做得不错,科学还是比较弱。

3. 科学家和工程师跟钱的距离不同。

坦率地讲,科学家通常是离钱比较远的。

从计算机科学到工程的转变,在思维上以下两点最为重要。

第一,前者要在一个相对理想的状态下工作,这样可以将注意力集中在量级的改进上。但是在产品中,并不存在理想的条件,各种细节都要考虑周到。

第二,也是最重要的,在工程中必须首先使用在科学上最好的方法,然后再作细节的改进。


答读者问15 | 年轻人该如何平衡“多做事”和“做减法”两者关系?

做减法不等于你做事不主动。关键是把事情做好,而不是做得多。

很多时候你得换位思考,假如我是老板,你是新入职的员工,在什么情况下我对你满意呢?

顺带说一句题外话,三八女神节尽管过了,但下次碰到这种小节日,如果你是一个职场上的男士,准备给女朋友送个礼物,宁可送她一个体积不大,但能够记住一辈子的礼物(比如爱马仕的丝巾),也不要送她一堆廉价的化妆品,或者没用的小东西,诸如各种智能硬件。


回信精选 | 你从计算机算法中得到什么?

评论