算法课总结
Moyu18_06_12
这个作者很懒,什么都没留下…
展开
-
第一节课(1)
一、课本 《算法导论》第三版 二、参考书 《算法》《算法分析》《计算机程序设计艺术》《具体数学》 三、课程大纲 基础知识(渐进记号及递归) 分而治之(MSC、PM、快排) 动态规划(0-1背包等) 贪心算法(HUffman编码和部分背包) 图算法(BFS、DFS、SP、MST、最大流和匹配) 处理难解问题(P、NP、NPC和近似算法) 四、课程主题 设计高效算法 证明算法正...原创 2019-09-15 21:17:34 · 337 阅读 · 0 评论 -
第一节课(2)
分而治之 分而治之(D&C)是一种重要的算法设计范例。在分治策略中,我们递归地求解一个问题,在每层递归中应用如下三步骤: 分解(Divide):将问题划分为一些子问题,子问题的形式与原问题一样,只是规模更小 解决(Conquer):递归地求解出子问题。如果子问题规模足够小,则停止递归,直接求解 合并(Combine):将子问题的解组合成原问题的解 分治的核心是合并(Combine/...原创 2019-09-16 19:59:44 · 386 阅读 · 0 评论 -
第二节课(1)
Counting Inversions(逆序计数) 音乐网站试图将你的听歌喜好与其他人相匹配: 你的排前n的歌 音乐网站从数据库中找到与你有相似品味的人 相似性度量(similarity metric):两个排列间的逆序的数量 我的排名:1,2,...,n. 你的排名:. 如果i < j,但,歌i和j是逆序 A B C D E Me ...原创 2019-10-03 12:45:27 · 142 阅读 · 0 评论 -
第二节课(2)
快速排序 划分 给定一个数列A[lo...hi] 重排数列A[lo...hi],使其成为两个子数组(可能为空)A[lo...mi-1]和A[mi+1...hi] 对任何且,都有 图1 x称为轴(pivot)。 快速排序的步骤: 先调用划分 递归排序A[lo...mi-1]和A[mi+1...hi] 划分的思想: 使用A[hi]作为轴,从左向右扩展分区。 图2 初始化(...原创 2019-10-04 13:31:48 · 138 阅读 · 0 评论 -
第三节课
动态规划(Dynamic Programming) 动态规划(DP)与分而治之(D&C)相似:都是将一个问题分解为更小的子问题 动态规划(DP)更适合子问题重叠的情况:例如:它们有公共的子问题 通常动态规划(DP)用于最优化问题(有许多解,我们想要找到最好的一个) 动态规划(DP)的主要思想: 分析最优解的结构 递归地定义最优解的值 计算最优解的值(通常自底向上) 0-1...原创 2019-10-05 22:14:53 · 183 阅读 · 0 评论