分支限界法的0-1背包问题Python实现
来源:互联网 发布:贷款那个软件好 编辑:程序博客网 时间:2024/05/22 16:11
<pre name="code" class="python">重量为[3,5,2,1]值为[9,10,7,4]
背包的总重为7,主要运用的queue的特性
#coding : utf-8import numpy as npimport Queueimport mathw = [3,5,2,1]#weightv = [9,10,7,4]#valuedef test(capacity): vec_len = 2**(len(v)+1) - 1#tree `s size vec_v = np.zeros(vec_len) vec_w = np.zeros(vec_len) vec_w[0]=capacity que = Queue.Queue(); que.put(0) best = 0 while(not que.empty()): current = que.get() level = int(math.log(current+1,2)) if(vec_v[current] > vec_v[best]): best = current left = 2*current+1#left child index right = 2*current+2#right child index if(left < vec_len and vec_w[current]-w[level] > 0 and vec_v[current]+v[level] > vec_v[best] ): vec_v[left] = int(vec_v[current]+v[level]) vec_w[left] = vec_w[current]-w[level] que.put(left) if(right < vec_len and sum(v[level+1:-1])+vec_v[current] > vec_v[best]): vec_v[right] = vec_v[current] vec_w[right] = vec_w[current] que.put(right) print vec_w[best],vec_v[best]if __name__ == '__main__': test(7)
0 0
- 分支限界法的0-1背包问题Python实现
- 算法java实现--分支限界法--0-1背包问题
- 0/1背包问题的分支限界
- 0-1背包问题---分支限界法
- 分支限界法实现背包问题
- 0-1背包问题之分支限界法
- 分支限界法解0-1背包问题
- 【算法】分支限界法实现0-1背包问题【原创技术】
- 分支限界---->0/1背包
- 分支限界_01背包问题_Java实现
- 用分支限界解决0-1背包问题
- (C++)分支限界法求解背包问题
- 回朔法、分支限界法解0-1背包问题程序, Java, C#
- 0036算法笔记——【分支限界法】0-1背包问题
- 0036算法笔记——【分支限界法】0-1背包问题
- 动态规划、贪心、回溯、分支限界法解0-1背包问题总结
- 用优先队列式分支限界法解决0-1背包问题
- 分支限界法之LC 0/1背包
- libevent学习资料
- 【 TIMUS-1748】【数学+搜索】The Most Complex Number【求反素数,数据范围较大】
- 关于sql永真式注入的理解
- jquery限制事件触发次数--(one(), unbind)
- DOM0级和DOM2级事件处理程序的区别? — 第13.2.2节
- 分支限界法的0-1背包问题Python实现
- 数据库--索引的基本概念及作用
- 【DM】设计模式再回顾---委托
- CentOS 7 部署 Kubernetes
- 页面响应式网络布局原理
- Linux根目录”/“下各个系统文件夹的含义和用途
- 1001. 害死人不偿命的(3n+1)猜想 (15)
- Heap Dump与Analyzer
- 如何解决InflateException错误与FloatingActionButton报错