『产业气象站』奠基了现代文明!,涨姿势:十大主宰世界的算法


『产业气象站』奠基了现代文明!,涨姿势:十大主宰世界的算法
文章图片
Reddit有篇帖子介绍了算法对我们现在生活的重要性 , 以及哪些算法对现代文明所做贡献最大 。 这个表单并不完整 , 很多与我们密切相关的算法都没有提到 , 如机器学习和矩阵乘法 , 欢迎你继续补充 。
如果对算法有所了解 , 读这篇文章时你可能会问“作者知道算法为何物吗?” , 或是“Facebook的“信息流”(NewsFeed)算是一种算法吗?” , 如果“信息流”是算法 , 那就可以把所有事物都归结为一种算法 。 才疏学浅 , 结合那篇帖子 , 接下来我试着解释一下算法是什么 , 又是哪些算法正在主导我们的世界 。
01什么是算法?
简而言之 , 任何定义明确的计算步骤都可称为算法 , 接受一个或一组值为输入 , 输出一个或一组值 。
可以这样理解 , 算法是用来解决特定问题的一系列步骤(不仅计算机需要算法 , 我们在日常生活中也在使用算法) 。 算法必须具备如下3个重要特性:
有穷性 , 执行有限步骤后 , 算法必须中止 。
确切性 , 算法的每个步骤都必须确切定义 。
可行性 , 特定算法须可以在特定的时间内解决特定问题 。
其实 , 算法虽然广泛应用在计算机领域 , 但却完全源自数学 。 实际上 , 最早的数学算法可追溯到公元前1600年-Babylonians有关求因式分解和平方根的算法 。
那么又是哪10个计算机算法造就了我们今天的生活呢?请看下面的表单 , 排名不分先后:
01
归并排序(MERGESORT)、快速排序(QUICKSORT)和堆积排序(HEAPSORT)
『产业气象站』奠基了现代文明!,涨姿势:十大主宰世界的算法
文章图片
哪个排序算法效率最高?这要看情况 。 这也就是我把3种算法放在一起讲的原因 , 可能你更常用其中一种 , 不过它们各有千秋 。
归并排序算法 , 是目前为止最重要的算法之一 , 是分治法的一个典型应用 , 由数学家JohnvonNeumann于1945年发明 。
快速排序算法 , 结合了集合划分算法和分治算法 , 不是很稳定 , 但在处理随机列阵(AM-basedarrays)时效率相当高 。
堆积排序 , 采用优先伫列机制 , 减少排序时的搜索时间 , 同样不是很稳定 。
与早期的排序算法相比(如冒泡算法) , 这些算法将排序算法提上了一个大台阶 。 也多亏了这些算法 , 才有今天的数据发掘 , 人工智能 , 链接分析 , 以及大部分网页计算工具 。
02
傅立叶变换和快速傅立叶变换
『产业气象站』奠基了现代文明!,涨姿势:十大主宰世界的算法
文章图片
这两种算法简单 , 但却相当强大 , 整个数字世界都离不开它们 , 其功能是实现时间域函数与频率域函数之间的相互转化 。 能看到这篇文章 , 也是托这些算法的福 。
因特网 , WIFI , 智能机 , 座机 , 电脑 , 路由器 , 卫星等几乎所有与计算机相关的设备都或多或少与它们有关 。 不会这两种算法 , 你根本不可能拿到电子 , 计算机或者通信工程学位 。 (USA)
03
迪杰斯特拉算法(Dijkstra’salgorithm)
『产业气象站』奠基了现代文明!,涨姿势:十大主宰世界的算法
文章图片
可以这样说 , 如果没有这种算法 , 因特网肯定没有现在的高效率 。 只要能以“图”模型表示的问题 , 都能用这个算法找到“图”中两个节点间的最短距离 。
虽然如今有很多更好的方法来解决最短路径问题 , 但代克思托演算法的稳定性仍无法取代 。
04
RSA非对称加密算法
毫不夸张地说 , 如果没有这个算法对密钥学和网络安全的贡献 , 如今因特网的地位可能就不会如此之高 。 现在的网络毫无安全感 , 但遇到钱相关的问题时我们必需要保证有足够的安全感 , 如果你觉得网络不安全 , 肯定不会傻乎乎地在网页上输入自己的银行卡信息 。