
算法设计与分析
算法设计与分析课堂笔记
爱吃老谈酸菜的DV
选择适合自己的。
展开
-
【算法与程序设计】贪心算法
贪心算法的理论基础定义:在求最优解问题的过程中,依据某种贪心标准,从问题的初始状态出发,直接去求每一步的最优解,通过若干次的贪心选择,最终得出整个问题的最优解,这种求解方法就是贪心算法。贪心算法不是从整体上考虑问题,它所做出的选择只是在某种意义上的局部最优解,而由问题自身的特性决定了该题运用贪心算法可以得到最优解。如果一个问题可以同时用几种方法解决,贪心算法应该是最好的选择之一。理论基础...原创 2020-04-01 15:17:28 · 605 阅读 · 0 评论 -
【算法设计与分析】第四章 动态规划
动态规划的基本思想动态规划算法通常用于求解具有某种最优性质的问题。在这类问题中,可能会有许多可行解。每一个解都对应于一个值,我们希望找到具有最优值的解。基本思想是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。适合于用动态规划求解的问题,经分解得到子问题往往不是互相独立的。若用分治法来解这类问题,则分解得到的子问题数目太多,有些子问题被重复计算了很多次。...原创 2020-03-25 16:00:31 · 613 阅读 · 0 评论 -
【算法设计与分析】第四章 分治法
选最大与最小一、选择问题输入集合 L (含n个不等的实数),输出L中第 i 小的元素。当i=n时,称为最大元素;当i=1时, 称为最小元素;位置处在中间的元素,称为中位元素。n为奇数,中位数唯一,i = (n+1)/2;n为偶数,可指定 i = n/2+1。选最大:顺序比较,先选最大 max。算法最坏情况下的时间:W(n)=n−1W(n)=n-1W(n)=n−1。选最大最小 :...原创 2020-03-20 15:48:40 · 923 阅读 · 0 评论 -
【算法设计与分析】第四章 分治法
启发式规则:1. 平衡子问题:最好使子问题的规模大致相同。也就是将一个问题划分成大小相等的k个子问题(通常k=2),这种使子问题规模大致相等的做法是出自一种平衡子问题的思想,它几乎总是比子问题规模不等的做法要好。2. 独立子问题:各子问题之间相互独立,这涉及到分治法的效率,如果各子问题不是独立的,则分治法需要重复地解公共的子问题。分治法的求解过程1.划分:把规模为n的原问题划分为k个规模较...原创 2020-03-14 08:53:39 · 1362 阅读 · 0 评论 -
【算法设计与分析】第三章 递归与分治策略
分治和递归分治:分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。递归:程序直接或间接调用自身的编程技巧称为递归算法(Recursion)。一个过程或函数在其定义或说明中又直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问...原创 2020-03-09 21:48:03 · 599 阅读 · 0 评论 -
【算法设计与分析】第二章 递推算法
递推一个问题的求解需一系列的计算,在已知条件和所求问题之间总存在着某种相互联系的关系,在计算时,如果可以找到前后过程之间的数量关系(即递推式),那么,从问题出发逐步推到已知条件,此种方法叫逆推。eg:【例1】数字三角形。如下所示为一个数字三角形。请编一个程序计算从顶到底的某处的一条路径,使该路径所经过的数字总和最大。只要求输出总和。 1、 一步可沿左斜线向下或右斜线向下走; ...原创 2020-03-09 21:06:33 · 554 阅读 · 0 评论 -
【算法设计与分析】绪论
算法理论的两大论题:算法设计——对于一个问题如何设计一个有效的算法算法分析——如何评价或判断一个算法的优劣算法及其重要特性算法(Algorithm):对特定问题求解步骤的一种描述,是指令的有限序列。算法的五大特性:输入:一个算法有零个或多个输入。输出:一个算法有一个或多个输出。有穷性:一个算法必须总是在执行有穷步之后结束,且每一步都在有穷时间内完成。确定性:算法中的每一条指...原创 2020-03-09 19:57:20 · 475 阅读 · 0 评论