01 开篇词:你知道什么是算法吗?

img

你好,我是悦创。

公众号:AI悦创,博客:https://www.aiyc.top/

每章一句:勤能补拙是良训,一分辛劳一分才。——华罗庚

1. 算法的定义

对于算法的解释,全世界的定义是不唯一的。我们给出的算法的定义是:一系列用来解决单个或多个问题,或有执行计算功能的命令的集合。再结合上输入与输出,算法就是将输入转换为输出的一系列计算步骤的集合。

听起来很拗口,对不对?

没关系,我们可以把一个算法比作是一个菜谱。如图1-1所示,原材料就是输入,做出来的成品即为输出,而算法,就是做菜过程中的复杂步骤。

图片描述

<center style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0px;">图1-1</center>

再换一种方式看算法,算法的本质其实是数学的理论与推导。在还没有发明求和公式之前,如何求出 1+2+3+4+5+…+n ? 逐个数求和虽能算出答案,但过于繁杂。但反观求和公式,无论n取多大的值,计算的步骤和繁琐程度基本不会增加。这就是算法存在的意义。人类在解决复杂问题时所采用的一系列特定的方法,即为算法。

2. 算法与程序的区别

明白了什么是算法,再来看算法和程序的区别。通常来说,程序指一组计算机能识别和执行,并有一定功能的指令。

后者的定义似乎和算法很相似,但算法和程序之间最大的区别在于程序是以计算机能够理解的各式各样的编程语言编写而成的,而算法是可以通过编程语言、图绘、口述等人能够理解的方式来描述的,不一定局限于编程语言的诠释,如图1-2 所示。

图片描述

<center style="box-sizing: border-box; margin-top: 0px; margin-bottom: 0px;">图1-2</center>

刚才曾提过,算法是一种以数学为本质的计算方法。然而作为方法,则必有正确(可行)、不正确(不可行)和高效、低效之分。

若一个算法对于每一个恰当的输入都以正确的输出终止程序,则可以称这算法是正确的,并正确地解决了给定的问题。若算法以不正确的输出而终止程序,或根本无法终止程序,则这个算法是不正确的。

但显而易见,不是所有的算法都可以通过输入和输出被正确和不正确而简单地分为两大类。譬如人们要预测未来特定事件发生概率,而这种问题无法用结果来检验解决方法是正确与否。因此,算法的正确性的检验也可以回溯到其本质,就是数学的检验,也就是说用数学来证明算法的正确性或可行性。

对于算法至关重要的不只有其正确性,还有它的效率。人类至今的发展,提高最迅速的可以说是计算的效率了。从原始人的结绳计数,到现在的超级计算机太湖之光,计算能力的提升不是区区几个数量级能说明清楚的。

但很不幸,当今计算机的运算速度不是无限快,存储器也不是免费的,如果是,那还研究算法干什么呢?所以如何高效地利用好有限的时间和空间就是算法存在的意义。有趣的是,求解相同问题而设计的不同算法在效率方面通常有着显著的差异,而这些算法效率上的差异要比在硬件或者软件效率上的差异大得多。

回到 1+2+3+4+5+…+n 这个求和问题中。一定程度上说,逐个数相加也可以被看作一种解决求和问题的算法,一种简单,低效的算法。相反,求和公式则是一种较复杂的,高效的算法。但如何来评判一个算法是否高效?时间复杂度和空间复杂度就是很好的丈量工具。时间复杂度和空间复杂度将会在后面的章节中介绍。

3. 算法的应用

算法的应用无处不在,小到普通的排序问题,大到最近举世瞩目的神经网络和深度学习,都很容易寻觅到算法的影子。列举几个赫赫有名的例子:

3.1 机器学习:

神经网络和深度学习可谓当今最热门的算法,而如今这两个算法的应用范围有目共睹——从图像识别到Alpha Go,再到语音识别和机器翻译,人工智能一次又一次地刷新人们对信息学的认识。深度学习的主旨在于强调神经网络模型的深度。其在神经网络模型的基础上减少了参数的繁杂度,更加逼近人脑工作的机制。最著名的例子便是卷积神经网络 (CNN),其极大地加强了计算机的图像识别功能。

3.2 搜索引擎和网络爬虫:

搜索引擎的核心机制其实就是网络爬虫。为了高效地为客户提供搜索结果,搜索引擎往往会先收集互联网中成千上万的网页,并根据网页中的关键字建立数据索引库。搜索引擎和网络爬虫收集网页的过程都会以基础的BFS(广度优先搜索),DFS(深度优先搜索)为核心思想,并针对要抓取的网页附加更有针对性的复杂算法,如网页过滤算法等。随着搜索技术越来越成熟,其算法的复杂程度也逐渐提高,但溯其本源仍是简单的搜索算法。刚刚提到的广度优先搜索、深度优先搜索等算法都会在后面章节中详细讲解,希望读者们能够认真学习掌握。

4. 小结

本章详细介绍了算法的本质、意义和应用。算法是编程的核心,就像一台计算机的CPU,算法的好坏决定了一个系统的效率高低。同时也是谷歌、阿里等大厂主要考察的内容。修炼好算法这门“内功”,再辅以新技术这些“招式”,才能独霸“武林”。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容