第三章贪心算法
- 格式:ppt
- 大小:1.40 MB
- 文档页数:51


找硬币■假设有四种硬币,面值分别为现在要找给某顾客六角三分钱,哪种找钱方法拿出的硬币个数最少呢?八分的最大硬币,即又一个二角五分,如此一直做下去。
这种方法实际上就是贪心算法。
再找硬币■若硬币的面值改为一分、五分和一角一分3 种,而要找个顾客的是一角五分钱。
■还用贪心算法,将找个顾客1个一角一分的硬币和4个一分的硬币。
■然而,3个五分的硬币显然才是最好的找法。
贪心算法的特点■贪心算法总是作出在当前来看是最好的选择。
■就是说,贪心算法并不从整体最优上来考虑,所作出的选择只是某种意义上的局部最优选择。
■当然希望贪心算法得到的最终结果是最优的。
■可是贪心算法并不能保证最终结果是最优的。
■不过,在许多情况下,应用贪心算法能够得到整体最优解;并且在一些情况下,即使得到的不是最优解,也是一个很好的近似解。
贪心算法的一般框架■G reedy Algorithm(parameters) {■初始化;■重复执行以下的操作:■选择当前可以选择的(相容)最优解;■将所选择的当前解加入到问题的解中;■直至满足问题求解的结束条件。
■}最小生成树■设G = (V, E)是一个无向连通带权图,即一个网络。
E的每条边(v, w)的权为c[v][w]o■如果G的一个子图G是一棵包含G的所有顶点的树,则称G为G的生成树。
■生成树的各边的权的总和称为该生成树的耗费。
■在G的所有生成树中,耗费最小的生成树称为G 的最小(优)生成树。
树的基本性质.■连通无回路的图G称为树。
已■树是点比边多-的连通图,G连通且q二p-l。
■ ■树是点比边多一的无回路图:G无回路且q二p-1■树若添条边就有回路:G无回路,但对任意的u, veV(G),若uv纟玖G),贝ijG+uv中恰有一条回路■树若减条边就不连通:G连通,但对VeeE(G), G-e不连通。
■ n个顶点的连通图的生成树含有n-1条边。
最小生成树的贪心选择性质■令G中权最小的边为ei。
首先必定有图G的一棵最小生成树包含了■MM?■ Prim算法的做法:在保证连通的前提下依次选出权重较小的n-1条边(在实现中体现为n个顶点的选择)。
贪心算法及几个常用的例题贪心算法:一、基本概念:所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择。
也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解。
贪心算法没有固定的算法框架,算法设计的关键是贪心策略的选择。
必须注意的是,贪心算法不是对所有问题都能得到整体最优解,选择的贪心策略必须具备无后效性,即某个状态以后的过程不会影响以前的状态,只与当前状态有关。
所以对所采用的贪心策略一定要仔细分析其是否满足无后效性。
二、贪心算法的基本思路:1.建立数学模型来描述问题。
2.把求解的问题分成若干个子问题。
3.对每一子问题求解,得到子问题的局部最优解。
4.把子问题的解局部最优解合成原来解问题的一个解。
三、贪心算法适用的问题贪心策略适用的前提是:局部最优策略能导致产生全局最优解。
实际上,贪心算法适用的情况很少。
一般,对一个问题分析是否适用于贪心算法,可以先选择该问题下的几个实际数据进行分析,就可做出判断。
四、贪心算法的实现框架从问题的某一初始解出发;while (能朝给定总目标前进一步)利用可行的决策,求出可行解的一个解元素;由所有解元素组合成问题的一个可行解;五、贪心策略的选择因为用贪心算法只能通过解局部最优解的策略来达到全局最优解,因此,一定要注意判断问题是否适合采用贪心算法策略,找到的解是否一定是问题的最优解。
几个经典的例子:一、定义什么是贪心算法呢?所谓贪心算法是指,在对问题求解时,总是做出在当前看来最好的选择。
也就是说,不从整体最优解出发来考虑,它所做出的仅是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解,但对范围相当广泛的许多问题都能产生整体最优解或整体最优解的近似解。
贪心算法的基本思路如下:1. .建立数学模型来描述问题。
2. 把求解的问题分成若干个子问题。
3. 对每个子问题求解,得到每个子问题的局部最优解。
4. 把每个子问题的局部最优解合成为原来问题的一个解。