美文网首页
动态规划算法js版:01背包问题

动态规划算法js版:01背包问题

作者: 拉面的无聊时光 | 来源:发表于2019-01-06 17:02 被阅读0次

最优化原理

一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略

动态规划的核心就是最优化原理

  • 01背包问题

状态转移方程

V(i,j) = Max{ V(i-1,j) , V(i-1,j-w(i))+v(i) }

js代码如下

let w = [2,3,4,5]
let v = [3,4,5,6]
console.log(fun(w,v,9))

function fun(w,v,capacity){
    //初始化表格
    let V = new Array(w.length)
    for (let d= 0 ;d<w.length;d++){ V[d] = new Array(capacity)}
    
    for(let i = 0;i<w.length;i++){
        for(let j = 0;j<capacity;j++){
            V[i][j] = Math.max(P(i-1,j),P(i-1,j-w[i])+v[i] )
        }
    }
    
    //表格超出边界值为0
    function P(i,j){return V[i] && V[i][j] || 0 }
    return V[w.length-1][capacity-1]
}
  • 完全背包问题(未完)

状态转移方程

V(i) = Max{V(i),V(i-1,j-w(i))+v(j)}

js代码

let w = [2,3,4,5]
let v = [3,4,5,6]
console.log(fun(w,v,9))

function fun(w,v,capacity){
    //初始化表格
    let V = new Array(w.length)
    for(let i = 0;i<w.length;i++){
        for(let j = 0;j<capacity;j++){
            V[j] = Math.max(P(j),P(j-w[i])+v[i] )
        }
    }
    
    //表格超出边界值为0
    function P(i){return V[i] || 0 }
    return V[capacity-1]
}

相关文章

  • 动态规划算法js版:01背包问题

    最优化原理 一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构...

  • JS动态规划算法--01背包问题

    动态规划 动态规划算法是通过拆分问题,定义问题状态和状态之间的关系,使得问题能够以递推(或者说分治)的方式去解决。...

  • 动态规划算法(01背包问题)

    一. 动态规划算法介绍: 动态规划算法和分治算法类似,也是将待求解问题分成若干个小问题一步步求解,不同的是,每一个...

  • Java使用动态规划算法思想解决01背包问题

    Java使用动态规划算法思想解决背包问题 背包问题是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种...

  • 动态规划-背包问题

    01背包问题 详解:01背包问题详解链接

  • 动态规划算法之背包问题

    物品重量(磅)价格吉他(G)21500音响(S)45000电脑(L)52000 装入的背包的总价值最大,并且重量不...

  • 动态规划算法二 背包问题

    动态规划专题 https://labuladong.gitbook.io/algo/dong-tai-gui-hu...

  • 背包问题1(01背包)

    N件物品,没见有重量Wi,价值Vi;选其中几件放入容量为M的背包中,求价值的最值。——经典背包问题背包问题分三类:...

  • 01背包问题

    动态规划算法一般用来求解最优化问题,当问题有很多可行解,而题目要求寻找这些解当中的“最大值”/“最小值”时,通常可...

  • 01背包问题

    题目描述:给定 n 个物品和一个容量为 W 的背包,物品 i 的重量是 wi,其价值为 vi 。应该如何选择装入背...

网友评论

      本文标题:动态规划算法js版:01背包问题

      本文链接:https://www.haomeiwen.com/subject/tpsimxtx.html