算法与设计——贪心算法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

算法设计
首先计算每种物品单位重量的价值pi/Wi, 然后,依贪心选择策略,每一次选择优先 选择利润与重量比重最大的,将尽可能多 的单位重量价值最高的物品装入背包。若 将这种物品全部装入背包后,背包内的物 品总重量未超过C,则选择单位重量价值次 高的物品并尽可能多地装入背包。依此策 略一直地进行下去,直到背包装满或没有 可装的情况为止。
流程图
开始
排 序 流 程 图
goods[i+1]=goods [0]
J=2;j<=n;j++ Good[0]=good[j] i=j-1
N
Good[0].p>good[i]. p
Y
good[i+1]=good[i]; i--
流程图 装 包 流 程 图
N i=1; goods[i].w<c
c
Y goods[i].X=0 goods[i].X=1; c-=goods[i].w
N
Biblioteka Baidu
i++; i==n
Y
算法分析
算法 时间复杂度 空间复杂度
贪心法解与利益有关的背包问题 O(n^2) O( n^2)
总结
本文给出了解决0-1背包问题的贪心算法, 并分析了贪心算法解决0-1背包问题的时间 复杂度和空间复杂度,并通过仿真实验给 出了实验结果,得到了解决0-1背包问题的 最优解。
算法步骤
• Step1:输入数据后,先计算每种物品单位重量的价值 pi/Wi(goods[i].p=goods[i].p/goods[i].w),为下面的选择 做准备。 • Step2:将计算出的单位重量的价值pi/Wi通过冒泡排序进行 升序排序,使用贪心选择策略,选择利润与重量比重最大 的装入背包。 • Step3: 选择从最大单位重量物品开始装起,先判断重量是 否小于背包的最大容量,如果小于,就装入背包,如果大 于,就选择单位重量次之的物品装入,在判断重量是否小 于背包的最大容量,依次循环继续装,但下一次的容量就 是背包容量减去刚装入的物品的质量。依此策略一直进行 下去,直到背包装满或没有可装的情况为止。
贪心算法求解与利益有关的背包问题
本科生:闫卫红 郭惠芝 闫卫红 席菲菲 王铝红 指导老师:王小明 王小明
2011.11.26
问题描述
背包问题指的是:有一个承重为W的背包和n个物 品,它们各自的重量和价值分别是和pi(),假 设,求这些物品中最有价值的一个子集。如果每 次选择某一个物品的时候,只能全部拿走,则这 一问题称为离散(0-1)背包问题;如果每次可以 0-1 拿走某一物品的一部分,则这一问题称为部分背 包问题。在此报告中,采用的是离散(0-1)背包 问题,一个商人带着一个能装m千克的背包去市 场进购货物,准备将这些货物自己卖出,现在有n 种货源,并且知道第i种货物有Wi千克,可获利pi 元。要使背包尽量装满并且利润最高。求各种解 决方法中最优的一个解。
相关文档
最新文档