
算法设计与分析
淼润淽涵
这个作者很懒,什么都没留下…
展开
-
第五章 贪心算法
在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。从贪心算法的定义可以看出,贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。活动安排问题活动安排问题就是要在所给的活动集合中选出最...原创 2020-05-16 12:21:59 · 540 阅读 · 0 评论 -
第四章 动态规划
动态规划的基本思想将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。如果我们能够保存已解决的子问题的答案,而在需要时再找出已求得的答案,这样就可以避免大量的重复计算,节省时间。我们可以用一个表来记录所有已解...原创 2020-05-16 12:21:43 · 642 阅读 · 0 评论 -
第四章 分治法例题
例题(最大子段和问题)给定由n个整数组成的序列(a1, a2, …, an),最大子段和问题要求该序列形如 的最大值(1≤i≤j≤n),当序列中所有整数均为负整数时,其最大子段和为0。例如,序列(-20, 11, -4, 13, -5, -2)的最大子段和为思路: ① a1, …, an的最大子段和=a1, …,a 的最大子段和;② a1, …, ...原创 2020-05-16 12:21:26 · 743 阅读 · 0 评论 -
第三章 递归与分治策略
递归算法程序直接或间接调用自身的编程技巧称为递归算法。递归算法优点它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量。递归算法缺点:递归算法解题的运行效率较低。在递归调用过程中,系统为每一层的返回点、局部变量等开辟了堆栈来存储。递归次数过多容...原创 2020-05-16 12:21:06 · 744 阅读 · 0 评论 -
第二章 递推算法
递推法的特点一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。无论顺推还是逆推,其关键是要找到递推式。这种处理问题的方法能使复杂运算化为若干步重复的简单运算,充分发挥出计算机擅长于重复处理的特点。递推算法的首要问题是得到相邻的数据项间的关系(即递推关...原创 2020-05-16 12:20:48 · 449 阅读 · 0 评论 -
第一章 绪论
算法理论的两大论题:1. 算法设计---对于一个问题如何设计一个有效的算法2. 算法分析---如何评价或判断一个算法的优劣算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。算法的五大特性:⑴ 输入:一个算法有零个或多个输入。⑵ 输出:一个算法有一个或多个输出。⑶ 有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完...原创 2020-05-16 12:20:24 · 272 阅读 · 0 评论