算法课总结
Moyu18_06_12
这个作者很懒,什么都没留下…
展开
-
第一节课(1)
一、课本《算法导论》第三版二、参考书《算法》《算法分析》《计算机程序设计艺术》《具体数学》三、课程大纲基础知识(渐进记号及递归) 分而治之(MSC、PM、快排) 动态规划(0-1背包等) 贪心算法(HUffman编码和部分背包) 图算法(BFS、DFS、SP、MST、最大流和匹配) 处理难解问题(P、NP、NPC和近似算法)四、课程主题设计高效算法 证明算法正...原创 2019-09-15 21:17:34 · 336 阅读 · 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 · 140 阅读 · 0 评论 -
第二节课(2)
快速排序划分给定一个数列A[lo...hi] 重排数列A[lo...hi],使其成为两个子数组(可能为空)A[lo...mi-1]和A[mi+1...hi]对任何且,都有图1x称为轴(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 · 182 阅读 · 0 评论