数据结构与算法(python版)(十七)
贪心算法
总是做出当前最好的选择
- 贪心选择的依据是当前的状态,而不是问题的目标
- 贪心选择是不计后果的
- 贪心算法通常以自顶而向下的方法简化子问题
背包问题
问题描述
给定n个物品和一个背包,物品i(重量为wi,价值为vi),背包容量为c,问如何选择物品,使背包中物品的价值最大?
抽象为数学描述:
m
a
x
∑
i
=
1
n
v
i
x
i
max\sum_{i=1}^nv_ix_i
max∑i=1nvixi
s . t . ∑ i = 1 n w i x i ≤ c s.t. \sum_{i=1}^nw_ix_i\le c s.t. ∑i=1nwixi≤c
0-1背包问题条件: 0 ≤ x i ≤ 1 0\le x_i \le 1 0≤xi≤1