研究生课程
文章平均质量分 84
张小彬的代码人生
coder
展开
-
研究生课程 算法分析-动态规划
动态规划的思想上一篇博文讲了分治法,这一篇的动态规划思想有些接近,但是两者最大区别是,动态规划要解决的子问题往往不是独立的,子问题往往被重复求解了很多次。所以一个叫朴素的想法是,把每个子问题的答案都保存下来,从而避免大量的重复计算。这种方法叫做备忘录方法,是典型的以空间换取时间。动态规划的基本要素最优子结构性质最优子结构的性质指的是,问题的最优解包含着其子问题的最优解。利用该性质,自底向上递归地从子原创 2016-12-29 20:48:10 · 665 阅读 · 0 评论 -
研究生课程 算法分析-分治法
分治法(divide and conquer)是算法分析里比较直观和朴素的思想,应用也很广泛。分治法的思想分治法的思想是,把一个复杂的问题 P 划分称 kk 个子问题,这些子问题相互独立且与原问题相同。递归调用子问题,直到问题规模足够小,可以很容易地求解为止;接着,把小规模的问题的解合并成一个更大规模的问题的解。可以用下面的伪代码来描述,divide-and-conquer(P) { if原创 2016-12-29 19:46:01 · 788 阅读 · 0 评论 -
研究生课程 算法分析-贪心法
贪心法的思想在求解一些最优化问题的时候,一般会分成多个步骤,每一步都有一个选择。贪心算法的思想在于,先不从整体考虑,每次都只做当前看来最优的思想,即局部最优解,期望通过一步步的局部最优解,最后构造出全局最优解。贪心算法是很多问题的最优解,当然也有很多问题只是局部最优,或者近似最优解,在构造贪心算法的时候,要注意贪心选择是否能求出最后的最优解。贪心算法的基本要素最优子结构性质一个问题的最优解包含其子问原创 2016-12-31 12:45:53 · 1109 阅读 · 0 评论 -
研究生课程 算法分析笔记
算法分析有四大经典的思想,分治法、贪心法、动态规划,最后一个是回溯法和分支限界法,后面会针对性都出一篇博客总结。这篇博文先总结一下除了四大算法之外的,杂七杂八的笔记。原创 2016-12-29 16:52:43 · 1170 阅读 · 0 评论 -
研究生课程 算法分析-回溯法和分支限界法
回溯法(backtrack)有许多问题,当需要找出它的解集或者要求回答什么解是满足某些约束条件的最佳解时,往往要使用回溯法。回溯法的基本做法是 搜索,或是一种组织得井井有条的,能避免不必要搜索的穷举式搜索法。这种方法适用于解一些组合数相当大的问题。回溯法在问题的解空间树中,按 深度优先策略,从根结点出发搜索解空间树。算法搜索至解空间树的任意一点时,先判断该结点是否包含问题的解。如果肯定不包含,则跳过原创 2016-12-31 13:26:16 · 2663 阅读 · 2 评论