名校公开课 / 普林斯顿 / 经典

算法分析

Analysis of Algorithms普林斯顿self-paced免费
递推关系生成函数渐近分析排列与树字符串与字典树

这门课学什么

课程讲如何用数学精确预测算法的性能。内容包括递推关系、生成函数和渐近分析,再用到树、排列、字符串和字典树上。

内容摘要

这门课讲怎样用数学精确预测算法的性能。它不满足于大 O 上界,而是求出比较次数或运行时间的精确表达式和渐近式,并用实验验证。课程延续高德纳(Donald Knuth)开创的算法分析传统,对应塞奇威克和弗拉若莱合著的《算法分析导论》(An Introduction to the Analysis of Algorithms)。

全课 9 讲,分 2 个阶段。第 1 阶段是第 1–5 讲,讲数学工具:先用快速排序演示完整的分析流程,再讲递推关系、生成函数、渐近分析,最后简介解析组合学的符号方法。第 2 阶段是第 6–9 讲,讲应用:把这些工具用到树、排列、字符串与字典树、单词与映射 4 类基本组合结构上,并联系到二叉搜索树、排序、散列表这些具体算法。

每讲配 1 个测验和 1 组课后习题,第 2 讲另有 2 个小测验,全课共 11 个测验。没有编程作业。习题要求学生自己推导递推、求生成函数和渐近式。

学完以后,学生能为常见算法建立数学模型,能解递推关系,能用生成函数求均值和分布,并能读懂算法论文里的平均情况分析。这门课是学习 Analytic Combinatorics 的直接前导课。

塞奇威克讲课把数学推导和算法实例交替展开,每讲先提出一个具体问题,再引出需要的数学工具。课程要求离散数学和微积分基础,节奏偏快,建议边看边动笔推导。

为什么值得学

课程延续 Knuth 开创的算法分析传统。它连接《算法》系列和《解析组合学》。

课程信息

学校
普林斯顿(Princeton)
讲师
罗伯特·塞奇威克(Robert Sedgewick)
学期
self-paced
平台
Coursera
费用
免费
难度
高级
学时
9 个单元 × 每单元 2–3 小时
先修
需要离散数学和微积分基础。
材料
视频、幻灯片、教材
许可证
未注明
去课程主页 ↗
课程是英文的。本页的介绍、摘要和大纲由极客教育原创撰写,讲次标题为中文意译。开课时间、收费和链接以官方页面为准。

课程大纲 · 共 9 节

大纲依据:Coursera 模块列表(9 讲,每讲一个模块;结构取自 api.coursera.org onDemandCourseMaterials.v2 与课程页)(查看原始页面 ↗)

  1. 1
    算法分析Analysis of Algorithms

    讲算法分析的历史和科学方法,以快速排序为例走完建模、推导和验证的全过程。

  2. 2
    递推关系Recurrences

    讲递推的数值计算、望远镜求和和递推的分类,分析归并排序,并讲主定理。

  3. 3
    生成函数Generating Functions

    讲普通生成函数和指数生成函数,用它们计数、推导卡特兰数和解递推。

  4. 4
    渐近分析Asymptotics

    讲标准渐近尺度、渐近展开的运算、有限和的渐近估计和二元渐近。

  5. 5
    解析组合学Analytic Combinatorics

    简介符号方法、有标号对象和系数渐近,为后面 4 讲提供统一工具。

  6. 6
    树Trees

    讲树与森林的计数、二叉搜索树、路径长度,以及其他类型的树。

  7. 7
    排列Permutations

    讲排列的循环结构、从左到右的最小值和其他参数,并用二元生成函数求参数分布。

  8. 8
    字符串与字典树Strings and Tries

    讲带限制条件的位串、形式语言,以及字典树和它的参数分析。

  9. 9
    单词与映射Words and Mappings

    讲生日问题、集券问题和散列表的分析,最后讲随机映射的结构。

普林斯顿的其他经典课