贪心法之背包问题

本文介绍了贪心算法在背包问题中的应用,该问题旨在在不超过背包最大重量的前提下,选择物品以最大化总价值。算法首先计算每种物品的单位价值,并优先选择单位价值最高的物品,直至背包无法再容纳更多物品。提供了算法的实现代码,但其时间复杂度为O(n^2)。
摘要由CSDN通过智能技术生成
A,贪心算法:该算法应用于优化问题,即问题涉及通过一组配置来找出定义在这些配置上的目标函数的最小值或者最大值。为了求解给定的优化问题需要进行一系列的选择,这个序列开始于某些易于理解的起始配置,然后从当前可能的配置中,反复做出看起来是最好的决策。这个特点说明,从一个良好的定义的配置开始,通过一系列局部最优选择,可以得到全局最优配置。当然贪心算法不会总是导致问题的最优解,但是可以很好的解决下面将要介绍的背包问题。
B,背包问题描述:给定n个物品,每个物品i都有两个属性,即价值Pi和重量Wi,问题是希望找出具有最大价值的物品子集,同时这些物品的的重量之和不超过给定的总重量W。如果对于每个物品要么全部接受要么拒绝(即物品不可分割),则这类问题是0-1背包问题。这里我要介绍的是允许取某个物品的一部分。该问题的动机就是假如我要进行一次旅行,有n个候选食物的集合S和只有一个载重W的背包,每种食物的价值不同。允许每中食品只取一部分。我该如何选取食物,在总重量不大于W的情况下使总的价值量最大。用数学模型描述如下:

C,算法原理处理过程:
1)首先计算出每种食物的单位价值即Vi=Pi/Wi;
2)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值