算法设计与分析-王红梅-第二版-第7章-贪心算法.ppt
- 文档编号:30853284
- 上传时间:2024-03-02
- 格式:PPT
- 页数:64
- 大小:1.10MB
算法设计与分析-王红梅-第二版-第7章-贪心算法.ppt
《算法设计与分析-王红梅-第二版-第7章-贪心算法.ppt》由会员分享,可在线阅读,更多相关《算法设计与分析-王红梅-第二版-第7章-贪心算法.ppt(64页珍藏版)》请在冰豆网上搜索。
第7章贪心算法GreedyMethod算法设计与分析算法设计与分析算法设计与分析算法设计与分析本科本科本科本科生课程生课程生课程生课程DesignandAnalysisofAlgorithmDesignandAnalysisofAlgorithm海南大学信息科学技术学院海南大学信息科学技术学院CollegeofInformationScienceandCollegeofInformationScienceandTechnology,HainanUniversityTechnology,HainanUniversity2024/3/22024/3/222教学重点教学重点贪心法的设计思想,各种经典问题的贪心思想贪心法的设计思想,各种经典问题的贪心思想教学难点教学难点各种经典问题的贪心,多机调度问题的贪心算法各种经典问题的贪心,多机调度问题的贪心算法教学内容及目教学内容及目标标知识点知识点教学要求教学要求了解了解理解理解掌握掌握熟练掌握熟练掌握贪心法的设计思想贪心法的设计思想TSP问题问题图着色问题图着色问题最小生成树问题最小生成树问题背包问题背包问题活动安排问题活动安排问题多机调度问题多机调度问题学习目标ChapterChapter7GreedyMethod7GreedyMethod2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod337.1概概述述7.2图问题中的贪心法图问题中的贪心法7.3组合问题中的贪心法组合问题中的贪心法阅读材料阅读材料贪心法的正确性证明贪心法的正确性证明第7章贪心算法2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod447.1.1贪心法的设计思想贪心法的设计思想7.1.2一个简单的例子一个简单的例子埃及分数埃及分数第7章贪心算法nn贪心法把一个复杂问题的解分解为一系列较为简单贪心法把一个复杂问题的解分解为一系列较为简单的局部最优选择,每一步选择都是对当前解的一个的局部最优选择,每一步选择都是对当前解的一个扩展,直到获得问题的完整解。
扩展,直到获得问题的完整解。
nn贪心法的典型应用是求解最优化问题,而且对许多贪心法的典型应用是求解最优化问题,而且对许多问题都能得到整体最优解,即使不能得到整体最优问题都能得到整体最优解,即使不能得到整体最优解,通常也是最优解的很好近似。
解,通常也是最优解的很好近似。
2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod55nn什么是贪心算法?
什么是贪心算法?
n贪心法目光短浅,只根据当前已有的信息做出选择,而贪心法目光短浅,只根据当前已有的信息做出选择,而且一旦做出了选择,不管将来有什么结果,这个选择都且一旦做出了选择,不管将来有什么结果,这个选择都不会改变。
不会改变。
n贪心算法总是作出在当前看来最好的选择。
也就是说贪贪心算法总是作出在当前看来最好的选择。
也就是说贪心算法心算法并不从整体最优考虑并不从整体最优考虑,它所作出的选择只是在某,它所作出的选择只是在某种意义上的种意义上的局部最优局部最优选择。
虽然贪心算法选择。
虽然贪心算法不能对所有问不能对所有问题都得到整体最优解题都得到整体最优解,但对许多问题它能产生整体最优,但对许多问题它能产生整体最优解。
在一些情况下,解。
在一些情况下,即使贪心算法不能得到整体最优解即使贪心算法不能得到整体最优解,其最终结果却是最优解的其最终结果却是最优解的很好近似。
很好近似。
7.1.1贪心法的设计思想贪心法的设计思想2024/3/22024/3/2Chapter8GreedyMethodChapter8GreedyMethod66n例:
求解付款例:
求解付款找零找零找零找零问题的贪心法问题的贪心法n设货币面值为:
设货币面值为:
5元、元、2元、元、1元、元、5角、角、2角、角、1角角n找零为:
找零为:
4.6元元n问题:
使付出的货币张数最少,即问题:
使付出的货币张数最少,即:
d=minxi,1in其中:
其中:
X称为问题的解向量,所有向量的全体称为问题的解空间。
称为问题的解向量,所有向量的全体称为问题的解空间。
n求解:
求解:
n选出选出1张面值张面值=4元元6角的最大面值的货币,即角的最大面值的货币,即2元;元;n选出选出1张面值张面值=2元元6角的最大面值的货币,即角的最大面值的货币,即2元;元;n选出选出1张面值张面值=6角的最大面值的货币,即角的最大面值的货币,即5角;角;n选出选出1张面值张面值=1角的最大面值的货币,即角的最大面值的货币,即1角;角;总共付出总共付出4张货币。
张货币。
7.1.1贪心法的设计思想贪心法的设计思想2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod77nn付款找零问题的贪心算法付款找零问题的贪心算法付款找零问题的贪心算法付款找零问题的贪心算法nn在不超过应付款金额在不超过应付款金额在不超过应付款金额在不超过应付款金额AA的条件下,的条件下,的条件下,的条件下,只选择面值最大的货只选择面值最大的货只选择面值最大的货只选择面值最大的货币,币,币,币,而不去考虑在后面看来这种选择是否合理,而且它而不去考虑在后面看来这种选择是否合理,而且它而不去考虑在后面看来这种选择是否合理,而且它而不去考虑在后面看来这种选择是否合理,而且它还还还还不会改变决定不会改变决定不会改变决定不会改变决定:
一旦选出了一张货币,:
一旦选出了一张货币,:
一旦选出了一张货币,:
一旦选出了一张货币,就永远选定就永远选定就永远选定就永远选定。
nn付款找零问题的付款找零问题的付款找零问题的付款找零问题的贪心选择策略贪心选择策略贪心选择策略贪心选择策略是尽可能使付出的货币是尽可能使付出的货币是尽可能使付出的货币是尽可能使付出的货币最最最最快地满足支付要求快地满足支付要求快地满足支付要求快地满足支付要求,其目的是使付出的,其目的是使付出的,其目的是使付出的,其目的是使付出的货币张数货币张数货币张数货币张数最慢最慢最慢最慢地地地地增加增加增加增加,这正体现了,这正体现了,这正体现了,这正体现了贪心法的设计思想贪心法的设计思想贪心法的设计思想贪心法的设计思想。
7.1.1贪心法的设计思想贪心法的设计思想2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod88n例:
求解付款例:
求解付款找零找零找零找零问题的贪心法问题的贪心法n设货币面值为:
设货币面值为:
3元、元、1元、元、8角、角、5角、角、1角角n找零为:
找零为:
4.6元元n求解:
求解:
n选出选出1张面值张面值=4元元6角的最大面值的货币,即角的最大面值的货币,即3元;元;n选出选出1张面值张面值=1元元6角的最大面值的货币,即角的最大面值的货币,即1元;元;n选出选出1张面值张面值=6角的最大面值的货币,即角的最大面值的货币,即5角;角;n选出选出1张面值张面值1/2,则则1/2是第一次贪心选择的结果;是第一次贪心选择的结果;7/8-1/2=3/81/3,则,则1/3是第二次贪心选择的结果;是第二次贪心选择的结果;3/8-1/3=1/24,则则1/24是第三次贪心选择的结果。
是第三次贪心选择的结果。
7/8=1/2+1/3+1/247.1.2一个简单的例子一个简单的例子埃及分数埃及分数2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod1111n设真分数为设真分数为A/B,B除以除以A的整数部分为的整数部分为C,余数为,余数为D,则:
,则:
BA*C+D(DA)即即B/A=C+D/A1/(C+1)即即1/(C+1)即为真分数即为真分数A/B包含的最大埃及分数。
设包含的最大埃及分数。
设EC+1,由于,由于A/B-1/E=(A*E)-B)/(B*E)这个分数可能存在公因子,所以需要化简,可将分子和分母同这个分数可能存在公因子,所以需要化简,可将分子和分母同时除以最大公约数。
时除以最大公约数。
7.1.2一个简单的例子一个简单的例子埃及分数埃及分数2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod1212n算法算法伪代码描述如下:
伪代码描述如下:
算法算法7.1:
埃及分数:
埃及分数EgyptFraction输入:
真分数的分子输入:
真分数的分子A和分母和分母B输出:
最少的埃及分数之和输出:
最少的埃及分数之和1.EB/A+1;/EC+12.输出输出1/E;3.A=A*E-B;B=B*E;4.求求A和和B的最大公约数的最大公约数R,如果,如果R不为不为1,将,将A和和B同时除以同时除以R5.如果如果A等于等于1,则输出,则输出1/B,算法结束;否则转步骤,算法结束;否则转步骤17.1.2一个简单的例子一个简单的例子埃及分数埃及分数2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod1313voidEgyptFraction(intA,intB)intE,R;coutA“/”B“=”;doE=B/A+1;cout“1/”E1)A=A/R;B=B/R;while(A1);cout“1/”Bendl;return;7.1.2一个简单的例子一个简单的例子埃及分数埃及分数2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod14147.1概概述述7.2图问题中的贪心法图问题中的贪心法7.3组合问题中的贪心法组合问题中的贪心法阅读材料阅读材料贪心法的正确性证明贪心法的正确性证明第7章贪心算法2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod15157.2图问题中的贪心法图问题中的贪心法7.2.1TSP问题问题7.2.2图着色问题图着色问题7.2.3最小生成树问题最小生成树问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod1616n求解求解TSP问题至少有两种贪心策略是合理的问题至少有两种贪心策略是合理的n最近邻点最近邻点策略策略从任意城市出发,每次在没有到过的城市中选从任意城市出发,每次在没有到过的城市中选择择最近的一个最近的一个,直到经过了所有的城市,最后,直到经过了所有的城市,最后回到出发城市。
回到出发城市。
n最短链接最短链接策略策略每次在整个图的范围内每次在整个图的范围内选择最短边加入到解集选择最短边加入到解集合合S中,但是,要保证加入解集合中的中,但是,要保证加入解集合中的边最终边最终形成一个哈密顿回路形成一个哈密顿回路。
8.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod1717(d)城市城市3城市城市5(e)城市城市5城市城市2(f)城市城市2城市城市1最近邻点最近邻点贪心策略求解贪心策略求解TSP问题的过程问题的过程252154322522154323252154327363215432233215432C=33263732372523236253(a)5城市的代价矩阵城市的代价矩阵(b)城市城市1城市城市4(c)城市城市4城市城市37.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod1818215432215432C=33263732372523236253(a)5城市的代价矩阵城市的代价矩阵(b)城市城市1城市城市4(c)城市城市5城市城市22(d)城市城市4城市城市3(e)城市城市3城市城市5(f)城市城市2回到出发城市回到出发城市1最短链接贪心策略求解最短链接贪心策略求解TSP问题的过程问题的过程2221543222215432222154325357.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod1919算法算法7.2最近邻点最近邻点策略求解策略求解TSP问题问题1P=;/对应解集合对应解集合S2V=V-u0;u=u0;/从顶点从顶点u0出发出发3循环直到集合循环直到集合P中包含中包含n-1条边条边3.1找与顶点找与顶点u邻接的邻接的最小代价边最小代价边(u,v),并且并且v属于集合属于集合V;3.2P=P+(u,v);3.3V=V-v;3.4u=v;/从顶点从顶点v出发继续求解出发继续求解算法算法11设图设图G有有n个顶点,边上的代价存储在二维数组个顶点,边上的代价存储在二维数组wnn中,集合中,集合V存储图的存储图的顶点顶点,集合,集合P存储存储经过的边经过的边,最,最近邻点策略求解近邻点策略求解TSP问题的算法如下:
问题的算法如下:
7.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod2020n算法分析算法分析1n时间复杂度时间复杂度算法算法7.2的时间性能为的时间性能为O(n2),因为共进行,因为共进行n-1次贪心选择,次贪心选择,每一次选择都需要查找满足每一次选择都需要查找满足贪心条件的最短边贪心条件的最短边。
n最优解讨论最优解讨论用最近邻点贪心策略求解用最近邻点贪心策略求解TSP问题所得的结果问题所得的结果不一定是不一定是最优解最优解,图,图7.1(a)中从城市中从城市1出发的最优解是出发的最优解是:
n125431n代价:
代价:
137.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod2121n当图中顶点个数较多并且各边的代价值分布比较均匀时,当图中顶点个数较多并且各边的代价值分布比较均匀时,最近邻点策略可以给出较好的近似解,不过,这个近似最近邻点策略可以给出较好的近似解,不过,这个近似解以何种程度近似于最优解,却难以保证。
解以何种程度近似于最优解,却难以保证。
n例如,在图例如,在图7.17.1中,如果增大边中,如果增大边(2,1)(2,1)的代价,则总的代价,则总代价只好随之增加,代价只好随之增加,没有选择的余地没有选择的余地。
7.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod2222n最短链接最短链接策略:
策略:
每次在整个图的范围内选择每次在整个图的范围内选择
(1)最短边加入到解集合中最短边加入到解集合中,但是,要保证加入解集合中的但是,要保证加入解集合中的
(2)边最终形成一个哈密顿边最终形成一个哈密顿回路回路。
因此,当从剩余边集。
因此,当从剩余边集E中选择一条边中选择一条边(u,v)加入解加入解集合集合S中,应满足以下条件:
中,应满足以下条件:
n边边(u,v)是边集是边集E中代价最小的边;中代价最小的边;n边边(u,v)加入解集合加入解集合S后,后,S中不产生回路;中不产生回路;n边边(u,v)加入解集合加入解集合S后,后,S中不产生分枝;中不产生分枝;7.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod2323算法7.3最短链接策略求解TSP问题1P=;2E=E;/候选集合,初始时为图中所有边3循环直到集合P中中包含n-1条边3.1在E中选取最短边(u,v);3.2E=E-(u,v);3.3如果(顶点u和v在P中不连通and不产生分枝)则P=P+(u,v);设图设图G有有n个顶点,个顶点,wnn存储边上的代价,集合存储边上的代价,集合E存存储是候选集合中未选取的边,集合储是候选集合中未选取的边,集合P存储经过的边,最短链存储经过的边,最短链接策略求解接策略求解TSP问题的算法如下:
问题的算法如下:
7.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod2424n时间复杂度讨论时间复杂度讨论n在算法在算法7.3中,如操作中,如操作“在在E中选取最短边中选取最短边(u,v)”用顺序查找,则算法用顺序查找,则算法77.3的时间性能是的时间性能是O(n2),n如果采用堆排序的方法将集合如果采用堆排序的方法将集合E中的边建立堆,中的边建立堆,则选取最短边的操作可以是则选取最短边的操作可以是O(log2n),对于两个,对于两个顶点是否连通以及是否会产生分枝,可以用并查顶点是否连通以及是否会产生分枝,可以用并查集的操作将其时间性能提高到集的操作将其时间性能提高到O(n),此时算法,此时算法7.3的时间性能为的时间性能为O(nlog2n)。
7.2.1TSP问题问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod25257.2图问题中的贪心法图问题中的贪心法7.2.1TSP问题问题7.2.2图着色问题图着色问题7.2.3最小生成树问题最小生成树问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod26267.2.2图着色问题图着色问题给给定定无无向向连连通通图图G=(V,E),求求图图G的的最最小小色色数数k,使使得得用用k种种颜颜色色对对G中中的的顶顶点点着着色色,可可使使任任意意两两个相邻顶点着色不同。
个相邻顶点着色不同。
2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod272712345例如,下图所示可以只用例如,下图所示可以只用两种颜色两种颜色着色着色,将顶点,将顶点1、3和和4着成着成一种颜色,将顶点一种颜色,将顶点2和顶点和顶点5着成另外一种颜色。
着成另外一种颜色。
假定假定k个颜色的集合为个颜色的集合为颜色颜色1,颜色颜色2,颜色颜色k。
7.2.2图着色问题图着色问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod2828n贪心策略贪心策略:
用某颜色为尽可能多的顶点着色用某颜色为尽可能多的顶点着色n选一种颜色,以选一种颜色,以任意顶点任意顶点开始开始-考察图中的考察图中的未着色的每个未着色的每个顶点顶点如,一个顶点可用如,一个顶点可用颜色颜色11着色着色则用则用颜色颜色11为该顶点为该顶点和尽可能多的顶点着色;和尽可能多的顶点着色;n当没有顶点再能以当没有顶点再能以颜色颜色11着色着色时时选颜色选颜色22和一个未着色的和一个未着色的顶点作为开始顶点顶点作为开始顶点,用,用颜色颜色22为尽可能多的顶点着色,如果为尽可能多的顶点着色,如果还有未着色的顶点,则选取还有未着色的顶点,则选取颜色颜色33并为尽可能多的顶点着色;并为尽可能多的顶点着色;n依此类推依此类推7.2.2图着色问题图着色问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod292934512123457.2.2图着色问题图着色问题(a)最优解最优解2颜色颜色(b)近似解近似解3颜色颜色n顶点着色顺序为顶点着色顺序为11、33、4422、5,5,则着色数为则着色数为22n如顶点着色顺序为如顶点着色顺序为11、552233、44,则着色数为则着色数为332024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod3030算法算法7.4图着色问题图着色问题1color1=1;/顶点顶点1着颜色着颜色12for(i=2;i=n;i+)/其他所有顶点置未着色状态其他所有顶点置未着色状态colori=0;3k=0;4循环直到所有顶点均着色循环直到所有顶点均着色4.1k+;/取下一个颜色取下一个颜色4.2/用颜色用颜色k为尽量多的顶点着色为尽量多的顶点着色for(i=2;i=n;i+)4.2.1if顶点顶点i已着色,则转步骤已着色,则转步骤4.2,考虑下一个顶点,考虑下一个顶点;4.2.2if图中与顶点图中与顶点i邻接的顶点着色与顶点邻接的顶点着色与顶点i着色着色k不冲突,不冲突,则则colori=k;5输出输出k;设数组colorn表示顶点的着色情况顶点的着色情况,贪心法求解图着色问题的算法如下:
算法的时间复杂性是算法的时间复杂性是O(k*n)2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod313115372648图图7.4具有具有8个顶点的双向图个顶点的双向图n考虑一个有2n个顶点的无向图无向图,顶点编号:
12nn当i是奇数时,顶点i与除了顶点i+1之外的其他所有编号为偶数的顶点邻接,n当i是偶数时,顶点i与除了顶点i-1之外的其他所有编号为奇数的顶点邻接,这样的图称为双向图双向图(Bipartite)。
7.2.2一个双向一个双向图的着色问题图的着色问题奇数奇数ii+1偶数偶数ii-12024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod3232nn讨论nn可以将可以将奇数顶点奇数顶点全部着颜色全部着颜色11,偶数顶点全部着,偶数顶点全部着颜色颜色22;nn若贪心法以若贪心法以1,3,2n-1,2,4,2n1,3,2n-1,2,4,2n的顺序为双向的顺序为双向图着色,则算法可以得到最优解:
图着色,则算法可以得到最优解:
22种颜色种颜色种颜色种颜色;nn若贪心法以若贪心法以1,21,2,3,n3,n的顺序为双向图着色,的顺序为双向图着色,则算法需要则算法需要n/2n/2种颜色。
种颜色。
7.2.2一个双向一个双向图的着色问题图的着色问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod33337.2图问题中的贪心法图问题中的贪心法7.2.1TSP问题问题7.2.2图着色问题图着色问题7.2.3最小生成树问题最小生成树问题2024/3/22024/3/2ChapterChapter77GreedyMethodGreedyMethod34347.2.3最小生成树问题最小生成树问题n最小生成树?
最小生成树?
设设G=(V,E)是一个无向连通网,生成树上各边是一个无向连通网,生成树上各边的权值之和称为该生成树的代价,在的权值之和称为该生成树的
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 设计 分析 红梅 第二 贪心