算法为我们带来哪些影响?

极客 发布于| 2016-09-24

入门 进阶 专家

  算法提供了一系列指令,计算机遵循指令来得到答案,他们是我们所有技术的基础。算法解决的问题可能是对一个表进行排序、压缩文件,或者来确定哪个网页与你要搜索的最相关。 算法确定交通信号灯如何排序,邮政服务如何更有效的处理你的信件,以及更多事项。

在数字时代,我们要做的不仅是使用技术,还需要去开发算法去管理手机、社交媒体网站以及我们的世界,因此编程方面和技术语言方面的能力,利于我们在技术创新上取得积极影响。

搜索和推荐算法

  当你在谷歌里进行搜索时,谷歌使用了一个复杂的算法(基于相关程度以及声誉度的排名)来确定哪个网页与你搜索的最相关。在其核心,PageRank算法考虑到了其他网站的链接到给定网页的数量以及链接网站的排名,从而决定你的搜索页的排名,并且在不到一秒的时间里反馈给你结果!

社交媒体(比如脸书或者领英上推荐的“你可能认识的人”)推荐的算法,是通过计算与其他用户的分离度来实现的。如果你和张三是朋友,张三的朋友还有李四,那么脸书就会假定你可能认识李四,同时可能将李四推荐给你。但是如果张三的朋友是李四,李四的朋友是王五,王五的朋友是赵六,赵六的朋友是冯七,那么脸书不可能把冯七作为链接推荐。事实上,科学家们理论上证实,由于我们都是全球联系的,地球上任何两个人之间仅有六度分离!

当你用到京东或者淘宝购物时时,基于协同过滤算法试图预测用户的喜好,从而他们推荐购买或者展示出你可能感兴趣的商品,是基于其他类似品位用户的选择来判断的。

排序算法

现实生活中当你在整理东西的时候,你可能不会考虑算法,但是你恰恰正在使用算法!计算机需要以极快的速度整理出数以百万计数值的列表,因此排序算法是十分重要的。

你能描述出如何将十本书按照字母顺序排序吗?如果你不得不讲述给一个不理解排序过程的人的话,你会以怎样的步骤来讲解呢?

你可能会先从一本书开始,然后一次增加一本书,增加的书放到你的队列里。但是想象一下,如果你用这种方式去处理成百上千,甚至百万计的书籍的话,这需要花上你多少小时或者多少年呢!这种算法叫做插入排序算法,对于小列表处理得很好,但是对于长列表的话需要花很长的时间。

另一种方法你可以将这十本书安排在一个随机的顺序中,然后沿着列表比较两本相邻的书。首先你要比较第一本书跟第二本书,如果这两本书顺序错了,交换下位置;然后你再比较第二本跟第三本书,同样再次决定是否要交换位置。无论何时到达列表后端的时候,你都要再一次返回到列表里,每次只比较紧紧相连的两本书。这个叫做冒泡排序算法,这个同样是对小列表合适的,但对于长列表就效率低了点。

这个项目展示了一种实现冒泡算法的方式,用交换列表中的项目来实现自我排序:


开发算法

生活中的算法

在搜索和排序方面高效率的算法,对于建立一个快速运行的软件十分关键。这些以及其他基础算法成为大部分技术的基础,从手机中的优酷视频,到相机中的人脸识别。

优酷是如何快速无损地加载到手机中的呢?所有人的脸看上去非常不同的时候,相机是如何搜索人脸的呢?依据人、光线、还是距离?

看上去计算机正在做出一种像人类正常思考出的智能决策,比如阿尔法狗一战成名。这些都是有一个非常复杂的算法掌控的,这些算法运用概率以及逻辑决定着如何最好地完成任务。

如果你能能够理解并写出来算法的话,就打开了整个的能力世界。这些能力使我们不仅能更加有效地使用算法,而且还开始编写自己程序和算法,并用代码来解决有意义的问题。


经验分享