Lecture算法交换论证.ppt

计算机,算法 高文宇 gwyy@163.com 计算机科学 在自然科学中,是大自然给出一个世界,而我们去探索其中的法则。对于计算机来说,却是我们自己来构建法则,创造一个世界。 ------Alan Curtis Kay The best way to predict future is to invent it. ------Alan Curtis Kay 计算机原理中的算法 电路SAT 3-SAT 操作系统中的算法 调度问题 虚拟内存页面置换算法 数据结构—最短路径 最长路径问题 解法:最短路径取反? 计算机网络中的算法 连通支配集 Steiner树 旅行商问题 点覆盖 有用的资源 CSDN以及算法、程序相关的技术论坛 ACM程序设计竞赛的相关网站 “算法导论”、“算法”等作者的主页 算法研究者的主页 ,“网络安全”课程 几本有用的书 竞赛: 算法导论(第二版),Thomas H. Cormen 算法设计,Jon Kleinberg 算法(第四版),Robert Sedgewick 研究: 图论导引,Douglas B. West 计算理论导引,Michael Sipser 组合优化,William J. Cook 近似算法,Vijay V. Vazirani 交换论证 Exchange argument 高文宇 gwyy@163.com 调度问题 在单CPU的计算机系统中,给定n个任务,已知每个任务的执行时间ti和截止时间di,你能把这n个任务都安排在它们各自的截止时间之前完成吗?若可以,请给出调度序列;若不可以,请证明。 例如:当前时刻,系统中有A~H共8个任务等待执行,它们所需的执行时间和截止时间如下表所示。 解决方案--EDF 对这n个任务按截止时间排序,依次执行,看有没有冲突,若没有,则这就是一个成功的调度序列;若有,则不能。 为怎么? EDF最优性的证明 证明:(1)假设一系列任务是可调度的,并且安排出来的任务调度顺序不等同于EDF算法所安排的序列。 (2)那么,此安排顺序中至少有两个任务A、B,其中A的截止时间比B的早,但A安排在B后面。则只需将B移至A后面一位即可。 (3)在之前的序列中A没有超时,则移走B,A更不会超时;而B的新位置的完成时刻等于原来序列时A的完成时刻;而A的截止时刻小于B的截止时刻,所以B肯定不会超时。 (4)重复以上过程,则可以得到一个符合EDF规则的任务序列。所以EDF一定能找到成功序列。 另一个调度问题 假设当前存在n个任务,用mi表示,每个任务包含三个参数,一是任务的运行时间ti ,第二个是任务的完成截止时间di ,第三个是成功安排该任务可以获得的收益ri 。请问按EDF进行调度能获得最大收益吗?若不能,请设计一个调度算法使得最终的调度能获得最大收益。 分析 (1)首先可以考虑的是,我们的目标是在n个任务中选取若干个任务来获得最大收益,若选出了这些任务(即这些被选中的任务是可以安排好的),则可以按照EDF的规则来安排它们执行,即把被选出的任务按它们各自的完成截止时间排序,则它们是一定都可以在各自的完成截止时间之间完成的。这就是前面证明的EDF最优性结论。所以我们可以考虑将所有的个任务按它们的完成截止时间排序。假设按完成截止时间排好序后的个任务用{ m1, m2, …, mn }表示。 分析 (2)其次考虑,在n个任务中选取若干个任务来获得最大收益,与在n-1个任务中选取若干个任务来获得最大收益之间有什么关系。可以看出,按完成截止时间排序后的第n个任务mn若不在最终选定的若干个任务之列,则问题可以转化为在n-1个任务,即{ m1, m2, …, mn-1 }中选取最优的任务序列;若任务mn在最终选定的若干个任务之列,则问题可以转化为在截止时间dn-tn之前,从{ m1, m2, …, mn-1 }中选取最优的任务序列。若用f(n, dn)表示在截止时间dn前,从n个任务中选取满足条件的最优序列所获得的最大收益,则可以得到如下的递归表达式: 0-1背包问题 0-1背包问题(0-1 knapsack problem):一个小偷在商店中发现了 n 件物品,第 i 件物品的价值为 vi ,重量为 wi ,且 vi 和 wi 都是整数。小偷想偷走一些物品,使得这些物品的价值最大化,但他的背包能容纳的最大重量为 W (整数)。若物品不能被分割,小偷应该选择哪些物品装入背包呢? 用c[i, w]表示重量上限为w ,在前 i 件物品中选择能获得的最大价值,则有: 操作系统中的页面置换算法 计算机操作系统中最重要的算法之一; 在超高速缓存,搜索引擎中都有着极为重要的作用。 常见的算法有: FIFO,LRU,

文档评论(0)

1亿VIP精品文档

相关文档