背包问题之贪心算法

简介: 背包问题之贪心算法

经典的背包问题有两种:

       1. 01背包问题-->01背包-动态规划_KING素清风的博客-CSDN博客

               【01背包问题这里就不详细介绍了,感兴趣的可以看我的另一篇博客】

       2.部分背包问题-->有一个背包,容量是C,有若干个物品,价值各不相同,

                                        重量也各不相同。接下来请你选择一部分物品装入背包,

                                         要保证不超过背包的容量的前提下,使背包中物体的总价值最大。

                                        允许选择一件物品的一部分。【与01背包的不同之处】

               2.1  贪心算法:每次都做出对于目前情况最好的选择,注意这里说的使对于目前情况。

                                         也就是说寻求问题对于决策时刻的局部最有解。而不是对于整个问题。

                                         所以贪心算法往往只能得到最优解的近似解,对于有些问题使用贪心算                                            法就不太合适了。

                       贪心:哈哈,喜欢占小便宜。笑死

贪心详解:贪心法通常一自顶而下的方式进行,分阶段工作,以迭代的作出相继的贪心选择。每做一次贪心选择就将所求问题简化为规模更小的子问题。在每一个阶段总是选择认为当前最好的方案,然后从小的方案推广到大的方案解决问题。

解题步骤:

               循环求解--->求出可行解的一个解元素-->由所有解元素组合成问题的一个可行解

问题模拟:

       物品1-->价值:9  重量:4    

       物品2-->价值:3  重量:6

       物品3-->价值:1  重量:3

       物品4-->价值:6  重量:2

       物品5-->价值:5  重量:5

       假设背包的容量为:10

       一:计算性价比

               物品1:2.55  

               物品2:0.5

               物品3:0.33

               物品4:3

               物品5:1

       二:将性价比最高的 物品 4 放入背包

                C = 10 - 2 = 8

                v  = 0 + 6 = 6

        三:将物品1放入背包

                   C = 8 -  4 = 4

                      V = 6 + 9 = 15

       四:将物品5的部分放入背包中

                   4 = 5x  -- >     x = 0.8

                    C = 4 - 5*0.8 = 0

               V = 15+5*0.8 =  19

相关文章
|
2月前
|
算法
动态规划算法学习三:0-1背包问题
这篇文章是关于0-1背包问题的动态规划算法详解,包括问题描述、解决步骤、最优子结构性质、状态表示和递推方程、算法设计与分析、计算最优值、算法实现以及对算法缺点的思考。
104 2
动态规划算法学习三:0-1背包问题
|
6月前
|
机器学习/深度学习 算法 C++
【洛谷 P2240】【深基12.例1】部分背包问题 题解(贪心算法)
**深基12.例1**是部分背包问题,$N$堆金币,每堆$(m_i, v_i)$,$T$承重限制。按金币单价降序装包,保证价值最大化。输入$N,T$及每堆金币详情,输出两位小数的最大价值。示例:输入$4,50$,输出$240.00$。AC代码使用C++,通过排序和迭代实现。
76 0
|
2月前
|
存储 算法
算法之背包问题
本文讨论了可分背包问题和0-1背包问题的区别及解决方法,其中可分背包问题可以使用贪心算法解决,而0-1背包问题则通常采用动态规划方法来找到最大价值的解决方案。
46 0
算法之背包问题
|
2月前
|
算法 C++
【算法】DP背包问题(C/C++)
【算法】DP背包问题(C/C++)
|
4月前
|
算法 Java 测试技术
算法设计(动态规划实验报告) 基于动态规划的背包问题、Warshall算法和Floyd算法
这篇文章介绍了基于动态规划法的三种算法:解决背包问题的递归和自底向上实现、Warshall算法和Floyd算法,并提供了它们的伪代码、Java源代码实现以及时间效率分析。
算法设计(动态规划实验报告) 基于动态规划的背包问题、Warshall算法和Floyd算法
|
6月前
|
算法 Java 决策智能
Java数据结构与算法:动态规划之背包问题
Java数据结构与算法:动态规划之背包问题
|
算法 Python
贪心算法-分数背包问题(Python实现)
贪心算法-分数背包问题(Python实现)
120 0
|
7月前
|
算法
算法系列--动态规划--背包问题(2)--01背包拓展题目(下)
算法系列--动态规划--背包问题(2)--01背包拓展题目(下)
54 0
算法系列--动态规划--背包问题(2)--01背包拓展题目(下)
|
7月前
|
算法
算法系列--动态规划--背包问题(5)--二维费用背包问题(下)
算法系列--动态规划--背包问题(5)--二维费用背包问题(下)
50 0
|
7月前
|
算法
算法系列--动态规划--背包问题(5)--二维费用背包问题(上)
算法系列--动态规划--背包问题(5)--二维费用背包问题(上)
63 0