01 2017 档案
算法课堂笔记5—摊还分析
摘要:第五章 摊还分析 1. 什么是摊还分析? 对一个数据结构(例如栈)执行n个操作,其中有的操作代价高,有的操作代价低,有些操作代价中等。而摊还分析是用来评价程序中的一个操作序列的平均代价,有时可能某个操作的代价特别高,但总体上来看也并非那么糟糕,可以形象的理解为把高代价的操作“分摊”到其他操作上去了,
阅读全文
算法课堂笔记4—贪心算法
摘要:第四章 贪心算法 这里需要注意的便是如何证明贪心算法得到的是最优解。 下面来一些例子: 1. 活动选择问题 现在感觉贪心算法真的是目前遇到过实现起来最简单的一个,但是问题在于用贪心算法得到的解是不是最优解呢?下面来证明: 第一步要证明问题具有最优子结构性质: 还是利用了这种先假设,再反证这种策略。对
阅读全文
动态规划——流水作业调度问题
摘要:问题: n个作业 N={1,2,…,n}要在2台机器M1和M2组成的流水线上完成加工。每个作业须先在M1上加工,然后在M2上加工。M1和M2加工作业 i 所需的时间分别为 ai 和bi,每台机器同一时间最多只能执行一个作业。 流水作业调度问题要求确定这n个作业的最优加工顺序,使得所有作业在两台机器上
阅读全文
算法课堂笔记3—动态规划
摘要:第三章 动态规划 1. 动态规划原理 这里要注意区别动态规划和分治的区别。下面来一些经典的例子。 2. 矩阵连乘 这里难点是怎么理解上面的那张表,这张表的意思就是对于m[1,5], (例如是矩阵A,B,C,D,E连乘:ABCDE ) 要考虑所有的断开的可能性(即所有的组合),比如m[1,3]和m[3
阅读全文
算法课堂笔记2—分治算法
摘要:第二章 分治算法 1. 分治算法的原理 分治法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。递归地解这些子问题,然后将各子问题的解合并得到原问题的解。 分治法所能解决的问题一般具有以下几个特征(这部分参考了这篇博文http://blog.csdn.
阅读全文