贪心算法(二)——一般背包问题

本文介绍了贪心算法用于解决一般背包问题的方法,包括目标函数、约束条件和三种最优量度准则:重量小的物体优先、价值高的物体优先和性价比高的物体优先。通过性价比高的物体优先策略,可以求得整体最优解。文章还探讨了贪心法的选择和验证,并补充了Java Collections.sort的使用细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这里写图片描述

题目

有一个背包,最多放M kg的物体(物体大小不限);
有n个物体,每个物体的重量为Wi,每个物体完全放入背包后可获得收益Pi。问:如何放置能获得最大的收益?

注:背包问题分为两种,若每个物体不可分割,则称为0/1背包问题,这种问题无法用贪心法求的最优解,只能求的近似解。而若每个物体可以切分,则称为一般背包问题,可以使用贪心法求的最优解。下面讨论的就是一般背包问题。

结果集

一般背包问题中,结果集可以用一个n元组表示:
1. x的下标i表示物体的序号;
2. xi表示第i个物体加入背包的部分(0<=xi<=1)

title

目标函数

使用贪心法解决最优化问题的第一步,就是要从题目中抽象出目标函数,这是一个数学建模的过程。
本题中,目标函数就是当前背包收益的最大值:
title

约束条件

所选的物体放入背包后,不能超过背包载重M:
title

最优量度准则1:重量小的物体优先

将所有物体按照重量递增的顺序排序,每次选重量最小的放入背包。

这个最优量度标准显然无法得到整体最优解,因为重量小的物体并不一定价值高。最优解与价值、重量这两个维度产生关系,而这个最优量度标准仅考

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值