码迷,mamicode.com
首页 > 编程语言 > 详细

算法复习-研一上

时间:2017-12-18 18:57:36      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:gpo   策略   最大   动态   kruskal算法   size   第一个   大整数乘法   线性   

算法复习 

包含主题: 贪心算法 , 分治法,动态规划,回溯法,分支限界,线性规划

关键词:最优子结构

Q:贪心与动态规划中间的联系和区别 p93 后面总结 (背部问题,0-1背包问题)

递归分治算法

基本思想:将一个大的问题分成若干小的子问题问题,分而治之

一般步骤:1.分解将原问题分为若干规模小,相互独立与原问题形式相同的问题   2.求解,求解各个子问题,当问题被划分的足够小的时候,就能很容易求解     3.合并,将子问题逐层合并,得到最后的解

经典问题

二分搜索:

合并排序(将想要排序的序列分为两个大小相同的子集,然后分别排序,再合并 O(nlogn)):划分策略是类似二分搜索,通过递归来一层层划分直至只有一个,再一层层合并

快速排序:(将序列按照a[i]来划分两个子集,第一个子集里面都比a[i]小,第二个子集都比a[i]大) :

大整数乘法(若要精确的求出大整数在乘法运算中所有位数上的值,需要用软件的方法来求,):

有重复和无重复排列问题

贪心算法

基本思想:贪心算法总是做出当前最好的选择,他期望通过局部最优解来得到全局最优解

 能利用贪心算法来求解的算法一般有两个特性:贪心选择性质(原问题的整体最优解可以通过一系列的局部最优的选择得到), 最优子结构(一个问题的最优解,包含其子问题的最优解)(因其具有最优子结构,可以用动态规划来求解,但是贪心会更加简单)

经典贪心选择问题

选择排序 每次从剩下的序列里选出最大的一个,形成最后的最优解

冒泡排序

最优装载(如何将最多的货物装上船) 采用重量最轻者优先的贪心策略来进行  

活动安排(在会议时间不冲突的情况下,用有限的时间来进行最多的会议) 1.贪心策略的选择,a.最早开始与时间不冲突策略,b.最短持续时间与不冲突策略 c.最早结束时间与不冲突策略 我们选择C贪心策略,

求哈夫曼编码:(前缀码,任一字符的代码都不能是其他字符的前缀求得最优的编码方案) 贪心策略:在所有节点中选取权值最小的两个节点作为新树的左右节点,组成一个新的节点,权值为两者之和

单源最短路径(dijkstra算法,求得最短路径(插值法)) :贪心策略,从初始状态开始,一个一个的加入与之相连的值,然后求出当前所有节点的最短路径,当将所有的点都加入时,就是最后的结果

最小生成树:

prim算法(加边): 贪心策略:在当前的子树中,选取与之相连的最小权值且不形成环的边

kruskal算法(选边): 贪心策略:在所有的边中,选取最小的且不形成环的边

多机调度问题:

练习题

 

算法复习-研一上

标签:gpo   策略   最大   动态   kruskal算法   size   第一个   大整数乘法   线性   

原文地址:http://www.cnblogs.com/bigjelly/p/8058020.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!