前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >一图全解10个影响人类社会的算法

一图全解10个影响人类社会的算法

作者头像
IT阅读排行榜
发布于 2018-08-16 08:18:35
发布于 2018-08-16 08:18:35
8330
举报
文章被收录于专栏:华章科技华章科技
在现代世界,算法承担了大量的数学运算。算法控制着从粒子加速器到股市的一切,它们决定让你看到什么新闻,让你得到什么搜索结果,决定计算机的学习方式,以及在 Netflix 或 Amazon 上推荐给你的内容。

总之,随着我们在越来越多的事情上依赖算法,假如没有算法,社会就不能工作。因此,了解算法是什么,算法能做什么变得十分重要。

算法是什么?

算法决定我们在新闻流中与谁互动;它们在世界上最大的搜索引擎给网站排名;他们教机器人学习和想象;它们甚至将股市交易自动化。在许多方面,算法使软件开发者变成了现代世界的统治者。但算法究竟是什么?它们从哪里来?它们将如何编程我们的未来?

算法【al·go·rithm】

NOUN

1. 在计算或其他解决问题的操作中要遵循的过程或一组规则,尤其指计算机。

算法的起源

“算法”(algorithm)这个术语来自花拉子米(AI-Khwarizmi,c. 780-850),他是一名波斯数学家、天文学家、地理学家和学者。算法(Algorism、Algorithm)出自“Algoritmi”,这是花拉子米(AI-Khwarizmi)的拉丁文译名。第一个有记录的数学算法可以追溯到公元前1600年,当时巴比伦人为了因式分解和开平方根而开发了算法。

现代算法于20世纪20年代后期形成,并在20世纪30年代随着高德尔-赫尔布兰德-克林(Godel-Herbrand-Kleene)提出递归函数,阿隆佐·邱奇(Alonzo Church)提出λ演算,埃米尔·珀斯特(Emil Post)提出Formulation 1(Post-图灵机),以及艾伦·图灵(Alan Turing)提出图灵机(Turing Machine)而成形。

算法的特征

1. 算法必须在某个点停止(有限性)。

比如说,任务是做蛋糕,那么算法就是做蛋糕的食谱,它指导你准备什么材料,把什么东西搅拌混合,烤箱要设置什么温度,为了烤出完美的蛋糕应该什么时候停止烘焙。

2. 算法的描述必须明确并有具体的步骤(明确性)。

如果任务是找到公园的位置,那么算法就是一组方向,明确地告诉你要做什么,怎样到达公园。

3. 算法解决问题必须有效(有效性)。

如果任务是做一个玩具飞机,那么算法就是一个说明书,指导你将哪些部件组合在一起,最后能得到一个组装好的玩具。

主要的算法

  • 链接分析(Link analysis)

从搜索引擎,社交网络到在线营销,各实体之间的关系分析十分重要。链接分析有很多方法和特点,每个方法都可以是一个算法,尽管它们的基础是相似的。比如,谷歌的佩奇排名(PageRank),Facebook的朋友推荐,Youtube或Netflix的视频推荐——它们的参数可能不同,但背后的数学本质上是一样的。

  • 数据压缩

从zip到mp3,从JPEG到MPEG-2,这些算法压缩数据以使系统成本更低,更高效,而且更容易传输。数据压缩用于视频游戏,视频,音乐,云计算数据存储数据库以及你在计算机中下载的任何内容。

  • RSA加密算法

RSA加密算法由RSA公司的三位创始人(Ron Rivest,Adi Shamir,Leonard Adleman)共同提出,RSA即三人姓氏的首字母。该算法引入了加密技术,并为每个人可用。该算法解决了一个简单但复杂的问题:如何在最终用户和独立平台之间共享公共密钥。RSA算法适用于公开密匙加密和数字签名,广泛用于保护通过互联网等不安全网络发送的敏感数据。

  • 安全散列算法

这是由美国国家标准与技术研究院(NIST)发布的密码散列函数家族。从这些算法得到的散列通过将你收到的文件的散列与原始散列进行比较来校验你收到的文件是否正确。应用商店,电子邮件,杀毒软件、浏览器以及其他互联网内容都使用这些散列算法来检查你下载的内容是否网络钓鱼或网络攻击的结果。

  • 归并排序,快速排序和堆排序

基于比较的归并排序(Merge Sort)采用“分治法”(Divide and Conquer),快速排序(Quick Sort)也一样,但快速排序有不同的排序方法,而且不稳定,更适合基于RAM的数列。堆排序算法(Heap Sort)使用优先队列来减少数据中的搜索时间。这些算法是数据挖掘人工智能、链接分析和大多数计算操作使用的最重要的一些算法。

  • 比例-积分-微分

这种算法几乎无处不在——车辆,飞机,移动网络,卫星服务,工厂甚至机器人都有它的身影。它是一个控制回路反馈的机制,目的是减少理想输出信号和实际输出信号之间的误差。它应用于需要信号处理或电子控制系统的任何地方,控制机械,液压或自动化的热系统。

  • 傅里叶变换和快速傅里叶变换算法

这两种算法将来自时域的信号转换成频域,或反之。互联网,调制解调器,智能手机,平板电脑,卫星,笔记本电脑——基本上,数字世界中的一切或具有计算机系统的任何东西都使用这些算法。

  • 戴克斯特拉算法(Dijkstra’s algorithm)

这是一种搜索算法,可以被建模成图,以便找到两个节点之间的最短路径。尽管找最短路径的问题还有其他方法,但戴克斯特拉算法对于需要稳定性的系统是第一选择的。这种算法的一个变体在今天应用于人工智能领域。

  • 整数分解

这是一个数学算法,是将合数分解成更小的非平凡因子的一系列步骤。整数分解在计算领域应用广泛,特别是在协议基于分解大整数的密码学中。

佩奇排名

算法是让计算机完成任务的预定步骤的集合。它可以说是一个说明书,就像生活中一样,使用说明书可以很简单(例如宜家桌子的说明书),也可以非常复杂(例如提交专利的过程)。

算法应用的一个有名的例子是谷歌的佩奇排名(PageRank),它决定某一网站在Google搜索结果的排名顺序。

通过建立一个被称为马尔可夫链的随机模型,PageRank彻底改变了世界获取信息的方式。这种算法的强大帮助Google掌握了41%的在线广告市场,占据了 Alphabet 的大部分收入。

算法如何影响社会

社交平台在向我们提供新闻和信息方面有着重要作用。事实上,美国估计有44%的人通过Facebook消费。我们越依赖社交网络为我们提供新闻,算法就越多地影响我们所接触的信息。由于社交平台的设计是为我们提供定制的内容,我们正在创造在线的回声箱,提出了反对意见,这个问题正引起越来越多的关注。

算法也对我们的经济产生了深远的影响。大约50%的市场使用高频交易——使用专用程序进行自动交易的过程。当今的经济有很大的部分是人工干预很少的。

近年来,人工智能领域的进步产生了许多令人兴奋的成功。深度学习正在使各种机器辅助任务成为可能。深度学习正在影响着预防医疗、无人驾驶车辆、药物发现、生物信息学,以及购物网站的超定制化推荐。

深度学习

深度学习的非凡之处在于它超越了人类对计算机进行编程的限制。相反,程序员使用由数TB数据驱动的学习算法来训练它执行复杂的任务。计算机本质上是自己学习如何识别所需的对象,文本或动作。

算法经济学

技术提供商的潜在上升空间是巨大的,特别是在全球范围工作的专有程序。一个“物体”自主地沟通,不需人为干预地采取行动的时代,肯定会深刻地影响我们的社会。

最大的问题是,一旦计算机和算法处理了所有业务,那么我们做些什么?

附:信息全视图

原文连接:https://www.equities.com/news/an-introduction-to-algorithms

来源:equities.com 作者:Visual Capitalist 编译:刘小芹

END

投稿和反馈请发邮件至holly0801@163.com。转载大数据公众号文章,请向原文作者申请授权,否则产生的任何版权纠纷与大数据无关。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-07-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 大数据DT 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
【C语言】猜数字游戏
前面学习的这些知识,我们就可以写一些稍微有趣的代码了,这里就来写一个猜数字游戏。 游戏要求:
zxctscl
2024/09/25
2070
【C语言】猜数字游戏
C语言:猜数字游戏
C语言提供了一个函数叫rand,这个函数可以生成随机数。这个函数包含在头文件:stdlib.h 中。
P_M_P
2024/01/18
2480
C语言:猜数字游戏
猜数字游戏(详解+代码)
此游戏首先随机生成一个1~100的整数,再有游戏玩家输入自己猜的数字,如果猜的数字过大,则输出“你猜大了!”,若猜的数字过小,则输出“你猜小了”,若猜对了,则输出“恭喜你通关了!”。
ahao
2024/03/19
5160
猜数字游戏(详解+代码)
【C语言】手把手带你用实现猜数字游戏,猜不对直接关机!(搞怪室友版)
    按常规套路,玩游戏前都会有一个简易菜单,让用户选择是否开始游戏,由于现在讲到的知识有限,在这里我们利用函数printf直接做一个菜单     思路:我们需要用户输入一个值来确定是否开始游戏,在这里我们就定为:输入1开始游戏,输入0退出游戏,输入其他值就显示输入错误,请重新选择,后面我们会讲到具体实现     现在我们有了规定就开始动手吧,为了美观,我们将其包装为一个函数menu(),菜单代码如下:
TANGLONG
2024/10/15
2430
【C语言】手把手带你用实现猜数字游戏,猜不对直接关机!(搞怪室友版)
初探C语言|手把手带你手撕猜数字游戏
作为一名编程初学者,最令人兴奋的时刻莫过于实现自己的第一个完整项目。今天,我们将一起手撕猜数字游戏,并逐步解析实现过程。这不仅能帮助你巩固 C 语言的基础知识,还能感受到编程的乐趣。
我想吃余
2025/03/31
1390
【C语言--趣味游戏系列】--猜数字游戏
要想生成随机数,首先需要一个rand函数,它会返回一个伪随机数,范围在0-RAND_MAX之间,其实就是0~32767(大部分编译器中) 其次,rand函数需要一个头文件:
User_芊芊君子
2025/04/08
1190
【C语言--趣味游戏系列】--猜数字游戏
用C语言来实现简单的猜数字游戏
猜数字游戏是一个简单易懂的游戏,内容大概是系统随机给定一个1~100之间的数字,请玩家来猜,若猜错了则提示猜大了或者猜小了,直到猜错为止。
AUGENSTERN_
2024/04/09
2020
用C语言来实现简单的猜数字游戏
手把手教你创建一个猜数字游戏!小白专属~
建立猜数字游戏所需要的知识有:循环和函数,只要了解这两个知识点,就可以搭建这样一个简易而又有趣的小游戏!
用户11039545
2024/03/28
1400
手把手教你创建一个猜数字游戏!小白专属~
用C语言写猜数字游戏(拿去惩罚你的室友在为不过)
猜数字游戏是C语言的第一道小小门槛,而你又是否掌握了其编程逻辑?下面用一道猜数字游戏。
egoist祈
2025/01/23
1350
猜数字游戏
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h>
用户11290648
2024/09/25
1240
猜数字游戏
【C语言】猜数字游戏的简单实现
实现游戏的函数:电脑生成一个随机数-使用rand()函数–在调用rand之前,使用srand函数为伪随机数生成器种子-----在srand()函数里面要放一个随机值,所以引用时间戳放进去
YoungMLet
2024/03/01
1400
C语言——猜数字游戏
今天我分享一个小游戏给大家,相信大家都玩过这样一款游戏,给你一个1-100的随机数字,假定给的数字为36,我猜60,就提示猜大了,又接着猜,我猜50,显示猜大了,我猜30显示猜小了.....就这样不断的猜下去。
用户11369558
2024/11/20
1770
[C语言] 猜数字小游戏「功能优化」
在C语言中,我们一般使用 <stdlib.h> 头文件中的 rand() 函数来生成随机数,它的用法为:
謓泽
2022/12/12
5770
C语言——oj刷题——猜数字游戏
当用C语言来实现猜数字游戏时,我们可以设计一个简单的游戏规则:计算机随机生成一个1到100之间的整数,玩家需要通过猜测来猜出这个数字。游戏会根据玩家猜测的数字与目标数字的大小关系给出提示,直到玩家猜中为止。
GG Bond1
2024/06/14
1380
C语言——oj刷题——猜数字游戏
C语言随机数的生成及猜数字游戏
在写猜数字游戏的代码的时候,我们会用到随机数的生成,在其他的很多场景有时也会用到,在C语言中我们应当怎么去实现随机数的生成呢?
用户11070251
2024/04/11
2250
C语言随机数的生成及猜数字游戏
猜数字游戏
😀欢迎来到我的代码世界~ 😁 喜欢的小伙伴记得一键三连哦 ૮(˶ᵔ ᵕ ᵔ˶)ა
编程交流
2024/05/11
1020
猜数字游戏
C语言_分支和循环语句(3)
a> 猜到了,提醒猜到了,可以继续猜。 b> 猜小了, 提醒猜小了,继续猜。 c>猜对了 , 恭喜,猜对了,结束游戏
用户10782096
2023/10/10
1950
C语言_分支和循环语句(3)
猜数字游戏
风中的云彩
2024/11/07
810
关于我、重生到500年前凭借C语言改变世界科技vlog.4——分支和循环(下)
掌握了前面学习的vlog的知识,尤其是分支与循环,我们可以写一个经典有趣的游戏:猜数字 游戏要求: 1.电脑自动生成1~100的随机数 2.玩家猜数字,程序根据玩家猜的数字,做出猜大了或猜小了的判断,直到玩家猜对为止
DARLING Zero two
2024/11/19
560
【C语言实战项目】猜数字游戏
如果还有不了解rand()函数的朋友可以移步【C语言】rand()函数详解,里面有非常详细的关于rand()函数的0基础详解。
修修修也
2024/04/01
1440
【C语言实战项目】猜数字游戏
推荐阅读
相关推荐
【C语言】猜数字游戏
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档