第五章 贪心算法PPT课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
}
return solution ;
}
贪心法设计举例
例5.2 用贪心法求解货币兑付问题。设支付现金
A=25.9元,支付集合P= {10、5、1、 0.5,0.2、0.1元各10张}
解: 最少货币张数 — 贪心选择货币面值大者。
s= ф s = {10} s = {10,10} s = {10,10,5,0.5,0.2,0.2}
背包问题的数学描述
假设:xi是物体i被装入背包的部分0, x1 1。 根据问题要求,背包问 题的数学描述为:
n
max pi xi i1 n
i xi M
i1
即求X=(x1,x2,…,xn),满足上述优化方程。
贪心法解背包问题解法1
1. 价值最大 — 贪心选择价值大者
例:背包重量10 物体1:重量9 价值5 物体2:重量4 价值4 物体3:重量3 价值2
故总存在以贪心算法 始开 的最优解。
说明:证明贪心选择性质的一般方法是:首先假设问题的 一个整体最优解,并证明可Βιβλιοθήκη Baidu改这个最优解,使其以贪心 算法开始。
最优子结构性质: 贪心选择物体1之后,问题转化为背包重量为m-w1*x1,
物体集为{物体2,物体3,…,物体n}的背包问题。且该问题
的最优解包含在初始问题的最优解中。
第5章 贪心法
信工计算机系2008
本章学习内容
贪心法设计方法及基本要素 贪心法举例:
背包问题、货郎担问题 最优装载、活动安排、 多机调度等
5.1 贪心法设计方法及基本要素
例5.1 货币兑付问题
假定出纳员手n张 中面 有值p为 i(1i n)的货币 用集合 P{p1, p2,...,pn}表示这些货币。纳 如员 果 需支付的现A金 ,为要求出纳员用货 最币 少张 的数 支付现金。
其设计方法描述如下:
greedy ( A , n )
{
solution ;
for ( i 1; i n ; i ) { x select ( A );
选择准则
if ( feasible ( solution , x ))
solution union ( solution , x );
15.9 5.9
0
贪心法基本要素
贪心法通过一系列选择得到问题的解。其所做出的
每一个选择都是当前状态下的局部最好选择,即贪
心选择。
贪心法并不总能得到问题的最优解
用贪心法求解的问题一般具有两个重要性质:
贪心选择性质
最优子结构性质
贪心法基本要素—贪心选择性质
是指所求问题的整体最优解可以通过一系列局部 最优的选择(仅依赖于以往所做过的选择,不依赖 于将来所做的选择),即贪心选择来达到。每做出 一次贪心选择将所求问题简化为规模更小的子问题。
5.3 贪心法例 — 货郎担问题
问题原型 某售货员要到若干个城市销售货物,已知各城市之间 的距离,要求售货员选择出发的城市及旅行路线,使 每个城市经过一次,最后回到原出发城市,而总路程 最短。
货郎担问题数学描述
假设 n个城市,分 1~别 n的用数字编号。货题郎是担在 有向G网V,E,V{1, 2, ...n,},E{eij,1i,jn( } eij上 权表示城 i到市城j市 的距离)中寻找径一最条短路的哈 尔顿回路(经过点每一个次顶)问题。
若k‡1,令Z中zk=0,z1=wkxk/w1 ,zi=xi (1≤i≤n,i‡k,i‡1
则有:
n
i1
zi pi
wk xk w1
n
p1 xi pi
ik1
n ik
xi pi
P
(1)若等式成立,Z也 则为最优解,继续同 过样 程,可使 z1 1,
或 0, Z是以贪心算法开始的 优最 解。
(2)若大于成立,X与 为最优解矛盾,不成 。立
最优解为:X=(1/3,1,1)。
贪心算法的重点是找到正确的贪心选择标准
贪心法解背包问题算法分析
时间复杂性分析:排序O(nlogn),贪心选择O(n), 故时间复杂性为O(nlogn)。 最优解分析:
设物体1,物体2,…,物体n已按价值重量比的降序排序。 贪心选择性质: 设X={x1,x2,…,xn}是背包问题的一个最优解。 令k=min{i|xi‡0,1≤i≤n}, 若k=1,则X是以贪心算法开始的最优解。
价值5 价值4 价值2
①初始:背包剩余重量m=M=10 背包当前价值p=0
②对物体按价值/重量的降序排序,得2 3 1
③贪心选择物体2 w2≤m, 故x2=1; m=m-w2=6 p=p+p2=4
④贪心选择物体3 w3≤m, 故x3=1; m=m-w3=3 p=p+p3=6
⑤贪心选择物体1 w1>m, 故x1=m/w1=1/3 p=p+p1*x1=7.667
①选物体1,x1=1;剩余可装重量1,价值5 ②选物体2,x2=0.25;剩余0,价值6
但若令X=(1/3,1,1);则背包价值为7.667 因此此贪心选择不一定达到最大价值。
贪心法解背包问题解法2 √
2. 价值最大 — 贪心选择价值/重量大者
例:背包重量10
物体1:重量9 物体2:重量4 物体3:重量3
例5.1中,问题的解空间:
x 1 ,x 2 ,.x n . .x ,i 1 ,0
共2n个不同的向量,可用穷举法求解。 本章讲解解此类问题的简单算法—贪心算法。
贪心法设计方法
贪心法通常用来解决具有最大值或最小值的优化 问题。 通常从某一个初始状态出发,根据当前局部而非 全局的最优决策,以满足约束方程为条件,以使 得目标函数的值增加最快或最慢为准则,选择一 个最快地达到要求的输入元素,以便尽快地构成 问题的可行解。
5.1 贪心法设计方法及基本要素
解:假设最后的支付S集 ,合 定为 义 xi为:
1 xi 0
pi S pi S
问题转换为:
约束条
n
min xi
n
件
且 pixi A
i1
i1
目标函
这类最优问题,是在问题的解空间中,搜索满足 约束条件且使目标函数达到极值的解向量。其中 满足约束条件的解称为问题的可行解,使目标函 数取极值的可行解,称为最优解。
贪心法基本要素—最优子结构性质
当一个问题的最优解包含其子问题的最优解时,称 此问题具有最优子结构性质。
5.2 贪心法例 — 背包问题
问题原型
给定一个载M重 的背 量为 包n, 个及 重量 i、 为价值 pi
的物1体 i, n,要求把物体, 装且 满使 背背 包包 体价值最大。
有两类背包问题: 物体可分割—本节研究 物体不可分割—0/1背包问题,后续章节研究