打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
算法

此乃小技……为诗之诀在于有气、有势、有情、有韵、有起、有承、有转、有合。

——威廉姆·莎士比亚,《爱的徒劳》

1、什么是算法?

计算机科学家们经常会谈到一个词:算法。什么是算法?是一加一等于二吗?这到底是数学还是计算机?

是的,你可以回顾小学的数学课,比如:将两个数字相加的算法。

解构一下,你会发现这个算法涉及一连串步骤:“首先,将两个数的最末位数相加,写下结果的最末位数,将剩下的数放到左侧的下一栏;接着,将下一栏的数相加,再将除结果末位数之外的数字和前一栏余下的数相加……”。

依次类推。

请注意算法步骤近乎机械化的感觉。

事实上,这是算法的关键特点之一:每一步都必须绝对精确,没有任何人类意图或推测掺杂其中。

这样,每一个完全机械化的步骤才能被编入计算机。

算法的另一个重要特点是,不管输入什么,算法总能运行。

我们在学校学到的相加算法就拥有这一特性:不管你想把哪两个数相加,算法最终都会得出正确答案。

比如,用这一算法将两个长达1000位的数相加,你肯定能得到答案,尽管这需要相当长的时间。

所以,算法是一张精确的处方,按顺序详细列出了解决一个问题所需要的具体步骤。

对于把算法定义为一张精确、机械化的处方的说法,你也许会略感好奇。

这张处方究竟要有多精确?要进行哪些基本操作?

比如,在上面的相加算法中,简单地说一句“把两个数相加”是不是就行了,还是要在加法表上列出所有个位数字?

这些细节看起来也许有点乏味,甚至会显得有点学究气,但其实离真相不远了。

这些问题的真正答案正处于计算机科学的核心,并且也和哲学、物理学、神经科学以及遗传学有联系。

有关算法究竟是什么的深层问题都归结于一个前提——也就是众所周知的邱奇—图灵论题(Church–Turing Thesis)。

算法,是指尖精灵的构件。

2、计算机科学中的伟大思想是如何诞生的? 

20世纪30年代,在第一台数字计算机发明以前,一位英国天才开创了计算机科学领域。之后,这位天才继续证明,不管未来建造的计算机运行多快、功能多强大、设计得多好,仍旧有一些问题是计算机不能解决的。

1948年,一位供职于电话公司的科学家发表了一篇论文,开创了信息理论领域。这位科学家的工作让计算机能以完美的精确度传输信息,即便大部分数据都因为被干扰而破坏。

1956年,一群学者在达特茅斯举行会议。这次会议的目标很清晰,也很大胆,那就是开创人工智能领域。在取得了许多重大成功以及经历了无数失望之后,我们仍期待出现一个真正的智能计算机程序。

1969年,IBM公司的一名研究人员发明了一种将信息组织进数据库中的先进方法。目前,绝大多数在线交易都使用该技术存储及检索信息。

1974年,英国政府秘密通信实验室的研究人员发明了一种让计算机安全通信的方法,即另一台计算机可以查看在计算机之间交换的所有信息。这些研究人员为政府保密所限——不过幸运的是,三名美国专家独立开发并拓展了这项重大发明,为互联网上所有的安全通信打下了基础。

1996年,两名斯坦福大学博士生决定联手搭建一个互联网搜索引擎。几年后,他们创办了谷歌公司——互联网时代的第一个数字巨头。

3、算法和计算机思想是什么联系?

现在我们知道了算法是什么,也看到了计算机科学中的伟大思想,但算法和计算机思想有什么联系呢?关键在于,计算机需要用非常精确的指令编程。

因此,在能让计算机为我们解决某个特定问题之前,我们需要为那个问题开发一个算法。

在数学和物理学等其他学科中,重要的结果通常是由一个方程式获得的。

比如勾股定理a2+b2=c2,或爱因斯坦的质量守恒定理E=mc2。

那么,计算机科学的伟大思想是什么呢?

它们通常是形容如何解决一个问题的——当然,是使用某一种算法。所以,计算机科学家们将许多重要思想形容为“算法”。

4、一个伟大的算法由什么构成?

那么问题来了,在这个计算机设备无处不在的时代,什么才是真正伟大的“算法”?

有几个标准可以考虑。

第一条,也是最重要的一条标准是,伟大的算法要被普通计算机用户每天用到。

第二条重要的标准是,伟大的算法应该能处理具体的现实问题,如压缩一个特定文件或通过一个噪声链接精确地传输文件。

第三个标准是,算法主要和计算机科学理论相关,这排除了主要和计算机硬件——如CPU、监视器以及网络——有关的技术。

公众对计算机科学认知存在着一种不平衡:有一种广泛的观点认为,计算机科学基本上就是编程(如“软件”)和设备设计(如“硬件”)。

事实上,最优美的计算机科学思想中有许多是十分抽象的,并不属于以上任意一类。

在英国数学家高德菲·哈罗德·哈代的《一个数学家的辩白》中,作者试图向公众解释数学家从事数学的原因:“美是第一道测试:丑陋的数学在这个世界中无永存之地。”

这道美的测试也适用于计算机科学中蕴含的理论思想。

5、为什么我们要关注这些伟大的算法?

关注这些优美的算法并不一定有实际作用,你不会成为计算机安全方面的专家,也不会成为人工智能或其他领域的专家,甚至,你也不会成为一名更加熟练的计算机用户。

但是,你会更加珍视每天在所有计算设备上不停使用的思想的美。

不过你有可能因为对这些算法的了解而学到一些有用技能,比如:你会对如何检查“安全”网站凭证以及“已签名”软件包了解更多;你能针对不同任务在有损和无损压缩之间做出明智选择;并且通过理解搜索引擎索引和排名技术的某些方面,你能更高效地使用搜索引擎。

可以用天文学来类比。

我不是天文学专家,但是我想知道更多,当增加了少量的天文知识之后,每当我注视夜空,它们会增强我对这一经验的享受。

有时,我对自己看到事物的理解,让我产生了一种满足和惊奇的感觉。同样,关注一些伟大算法之后,使用计算机时也能经常获得同样的满足和惊奇之感。

我们将真正珍视我们时代最常见、最神秘的黑盒子:我们的个人电脑和移动设备,我们指尖的精灵。

心归航,再启航

愿每日微小知识激发你的深刻思考

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
计算机科学哲学研究的迫切性
2020数学盘点——你从哪句话开始看不懂了?
计算机专业学计算理论基础的意义什么?
计算机正在改变数学 | 日志 | 果壳网 科技有意思
从开方算法看数学和计算机思维的差异(二)——计算机人怎么想问题
数学家破解困扰了人们64年的数学难题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服