Discrete Optimization (Coursera) wee2-2 动态规划求解背包问题

本文介绍了动态规划(DP)的概念,通过背包问题举例说明DP如何解决问题。DP是一种将大问题分解为小问题并保证找到最优解的方法。文章详细阐述了如何建立DP表格,通过填充表格求解背包问题的最大价值,并讨论了如何从表格中恢复最优选择。最后,讨论了DP在处理背包问题时的时间复杂度,指出当背包容量k较大时,DP效率会降低。
摘要由CSDN通过智能技术生成

Dynamic Programming

动态规划(DP)初探

DP的思想是:将一个大问题的求解转化为一些更小问题的求解。我们假设对于一个更小的问题已经有了最优解答,在此基础上我们build up the bigger problems。这种分而治之的思想非常像递归,但是递归通常会招致不必要的算力消耗,因此 DP使用了 bottom up的方法,有效地节省了算力。

DP guarantees to find the best solution

(Basic principles: 1. Divide and Conquer; 2. Bottom Up computation)

当我们谈起DP,其实可以预设一个很大的 table,我们要做的事情其实就是填表。

Take knapsack as an example

这里还是以 knapsack problem为例,假设问题如下:

给定一个 Capacity为 k的 knapsack,给定一组物品并用 1,2,…,n标记,物品i的价值为 v i v_i vi,重量为 w i w_i wi. $ I = {1,2,…,n }$.

希望找到一个最优选择,使得在 knapsack可以装下的情况下,拿走物品的总价值最大。

我们可以建模如下:
max ⁡ ∑ i ∈ I v i x i s . t . ∑ i ∈ I v i x i ≤ k x i ∈ { 0 , 1 } , i ∈ I \max \sum_{i\in I}v_i x_i\\ s.t. \sum_{i\in I}v_i x_i \le k \\ x_i \in \{0,1\}, i\in I maxiIvixis.t.iI

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值