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

2019-01-06  本文已影响0人  拉面的无聊时光

最优化原理

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

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

状态转移方程

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]
}
上一篇 下一篇

猜你喜欢

热点阅读