集20年之大成,这是一本开源的算法教科书
机器之心整理,参与:思源、晓坤。
算法这个词有一股魔力,似乎任何工作任务加上它就能变得自动化,任何神奇的新发现也都离不开算法的帮助。那么什么是算法,我们又该如何学习算法呢?在这一本开源书籍《算法》中,作者根据 20 年的算法教学经历反复使用与修正,并在几天前完成出版前的最终版。
《算法》基于伊利诺伊大学厄巴纳 - 香槟分校的计算机科学教授 Jeff Erickson 为多个算法课程写的讲义集合,这本教科书已经在伊利诺伊大学厄巴纳 - 香槟分校出版,自 1999 年 1 月以来 Jeff Erickson 每年都会使用这本书教授一次算法课程。由于本科理论课程的变化,Jeff Erickson 在 2016 年对讲义进行了重大修订;本书是 Erickson 教授修订的最基础课程材料的一部分,主要反映了新的初级理论课程的算法内容。
书籍开源主页:jeffe.cs.illinois.edu/teaching/al…
关于此书的其它信息:
Erickson 教授打算在近期将这本书自印出版,但不用担心,出版后这个资源也仍然是免费的。
Erickson 教授有一个维护多年的 GitHub 项目,专门为这本书做 Bug 追踪。
只提到自己读过的lecture notes, 所以一大半来自于UIUC.基础算法:Jeff Erickson's Algorithms, Etc.组合优化:基础课 18.433 Combinatorial Optimization 覆盖面广的topics course 18.438, Spring 2014 CS 598CSC: Topics in。
Erickson 教授明确表示,欢迎任何人下载电子版或纸质打印,使用、复制和/或分发此页面上的任何内容都是允许的。
这本书基于两门课程,分别是 CS 374 (Spring 2018) 和 CS 473 (Spring 2017),Erickson 还在另一个页面上提供了课程作业和测试。
GitHub 地址:github.com/jeffgericks…
作业地址:jeffe.cs.illinois.edu/teaching/al…
书籍下载
Erickson 教授为我们提供了两种下载方式,有单页版和双页版。单页版方便在电脑上浏览,双页版方便打印纸质书,良心~
单页版:jeffe.cs.illinois.edu/teaching/al…
双页版:jeffe.cs.illinois.edu/teaching/al…
除了书籍下载,Jeff 还提供了很多课程资料,包括 CS374 的 PPT、本书没有涉及的 CS 473 主题以及形式化语言的一些课件。这些资源有的有独到的见解,但笔记仍然不会有教科书那么精炼,读者可在教程主页找到这些额外的课程资源。
算法
既然都准备入这个坑了,那么算法的具体定义又是什么?它和我们熟悉的机器学习算法又有什么不同?在书籍的第一章中,Jeff Erickson 给出了算法的具体定义与来源,现在让我们走进「算法」这一词吧。
算法是一组明确的、精准的、无歧义且机械执行的基本指令元素序列,通常旨在完成具体的目标任务。其中指令描述的是一个计算,当其运行时能从一个初始状态和初始输入(可能为空)开始,经过一系列有限而明确定义的状态最终产生输出并停止于一个终态。
「算法」这个词最终是由「algorism」演化到现代的「algorithm」,它主要通过希腊算术(arithmos)这一民间词源演化而成。因此直到最近,算法一词还专门指代使用阿拉伯数字进行位-值计算的机械计算技术。经过训练,且能快速和可靠地执行这些过程的人,可以称为算术者或者是计算员。当然,你也可以更简单地称为计算机。
Jeff Erickson 是伊利诺伊大学厄巴纳 - 香槟分校的计算机科学教授,研究兴趣包括算法、数据结构和拓扑学等,曾获得美国国家科学基金会职业奖和本科教学最高奖。
图源:jeffe.cs.illinois.edu/(Jeff Erickson 主页)
这本书的重新出版在 ycombinator 上引起了很大反响,14 个小时内已经出现了 180 多条评论。
网友 primitivesuave 表示:
网友 kaap 表示: