栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

快速解决子集总和

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速解决子集总和

虽然我以前的答复介绍了polytime近似算法对这个问题,要求被
专门_为一个实现方式制成Pisinger的polytime动态规划的解决方案时,所有的_X 我_在 _X 是积极的:

from bisect import bisectdef balsub(X,c):    """ Simple impl. of Pisinger's generalization of KP for subset sum problems    satisfying xi >= 0, for all xi in X. Returns the state array "st", which may    be used to determine if an optimal solution exists to this subproblem of SSP.    """    if not X:        return False    X = sorted(X)    n = len(X)    b = bisect(X,c)    r = X[-1]    w_sum = sum(X[:b])    stm1 = {}    st = {}    for u in range(c-r+1,c+1):        stm1[u] = 0    for u in range(c+1,c+r+1):        stm1[u] = 1    stm1[w_sum] = b    for t in range(b,n+1):        for u in range(c-r+1,c+r+1): st[u] = stm1[u]        for u in range(c-r+1,c+1): u_tick = u + X[t-1] st[u_tick] = max(st[u_tick],stm1[u])        for u in reversed(range(c+1,c+X[t-1]+1)): for j in reversed(range(stm1[u],st[u])):     u_tick = u - X[j-1]     st[u_tick] = max(st[u_tick],j)    return st

哇,真令人头疼。这需要进行校对,因为在实现的同时

balsub
,我无法定义正确的比较器来确定是否存在针对此SSP子问题的最佳解决方案。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/413769.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号