V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  faketemp  ›  全部回复第 24 页 / 共 25 页
回复总数  493
1 ... 16  17  18  19  20  21  22  23  24  25  
2017 年 3 月 31 日
回复了 ijiami 创建的主题 推广 程序员,你亮了!(有福利,手慢无)
发光 T 恤,看不到图片
@v9ox @srlp @SingingZhou @starqoq ……
经过研究, 穷举 k 值来计算 k sum(closest) 的方法不可行(>﹏<)
搜索了很多解法发现最多提到 4 sum ,而且没有一个通用的穷举计算 k sum 的解法
k 每增加一就要增加一层循环 无法想象如果 k=300 时……

所谓“以空间换时间”的解法也不可取
比如仅仅 500 个数取 4 个的组合最少都有几亿种,更别提要穷举任意个数的组合了—— 32G 内存估计也耗尽

目前这个问题基本无解(;′⌒`)

感谢大家的想法和讨论
希望若干年后某神人能关注到这个问题了……
试试 pyinstaller 或者 py2exe 吧 cx_Freeze 错误太多了
把主 py 脚本和图标、编译脚本等文件全部放到 python35/LIB 中 再编译就行了
@v9ox 看来只有穷举 k 值然后分别计算更新 k sum(closest) 了 不知道这个复杂度是否可行 研究研究先
@starqoq 如果如 @publicID002 所说将数组值全部乘 100 变成 int 型,然后按 01 背包来做 复杂度是否能够接受?

@v9ox 由于 K sum 中的 K 值无法确定,理论上的解法是不是应该以次进行 2 sum(closest)/3 sum(closest)/4 sum(closest)…… len(numArray) sum(closest),最终才能得到最优组合的答案??


有没有更高效或巧妙的解法呢?
@sensui7 没错,合适的组合可能是一个数值,也可能是 487 或 35 个数值之和——因为数组 numarray 是用户输入的,无法确定个数和规律

K sum 问题中 K 是确定的,我们的需求中 K 并不确定 这是不是最终又回到了“穷举组合”这条路?
不过 01 背包和 K sum(closest)算法与我们需求近似,需要再仔细研究开开脑洞\(^o^)/~
@GtDzx 我试了,如果 num 总数在 20 个以内,答案是可以在几秒内算出,然后 num 超过 100 的话……

数值来自交易数据,几乎全部是 float 值
@SingingZhou 谢答!只是不计算所有组合的和,如何判断哪个才是与 goal 值“最接近”的呢??

如果某组合的和正好等于 goal 则结束运算即可,只是这种几率过小了(⊙﹏⊙)b ……

所以才需要算出全部和,最判断找出“最接近”——这个算法很笨,确实我想得起的唯一 一个办法……
#Python 3.x
from itertools import combinations
from heapq import nlargest

def trans(szNum):
return szNum.translate(str.maketrans('','',',,"“”'))

goal =2000000
num = [2627958.99,1903995.67,3133207.37,1000626.65,1377193.42,389084.48,1445055.87,402488.74,2908761.03,1154304.95,1384296.51,895361.64,5769.90,215879.19,56482.19,517084.97,41702.36,539160.33]

[num.remove(i) for i,v in enumerate(num) if v > goal]
countNum = len(num)
dResult = {}
for j in range(1,countNum + 1):
tL = combinations(num,j)
dResult.update({k:v for k,v in zip(map(sum,tL),tL) if k<=goal})

print({k:dResult[k] for k in nlargest(5,dResult)})
--------------------------------------------------------------------------------------------
大概是上面这种伪代码(演示需要,未测试),只是这种穷举的算法在 num 超过 50 的情况下就会导致内存耗尽(更别说 500 个值参与运算了),即使使用 X64 Python ,也因计算量大导致时间过长——这种方法并不可取, V 友有何高见????
2016 年 5 月 8 日
回复了 faketemp 创建的主题 问与答 电信,这是要上天么?
@Zzzzzzzzz 这个玩意儿不知道有多少人会主动去定,现在电信喜欢上了强插广告,好担心过不久它发现这个业务没几个闲人用,于是就干脆“免费”送给你了 O(∩_∩)O 哈哈~
2016 年 5 月 8 日
回复了 faketemp 创建的主题 问与答 电信,这是要上天么?
@bdbai 打 10000 号有用???
你看看第二张图的“功能介绍”,这是要断了宅男生路么??
2016 年 5 月 8 日
回复了 faketemp 创建的主题 问与答 电信,这是要上天么?
@listen1 实测网易所有的音乐都无法播放,时长显示 0:00:00 ,鹅和虾的正常
2016 年 4 月 27 日
回复了 faketemp 创建的主题 Python python 有谁知道 sql 解析库?
@xuyuheng0905 我终于找到了几近完美的解决方案,遗憾的是官方没有提供 python 库
看看这里 http://www.sqlparser.com/products.php
![]( http://i4.piimg.com/1c82d93d3877bfb5.png)
2016 年 4 月 27 日
回复了 faketemp 创建的主题 Python python 有谁知道 sql 解析库?
@xuyuheng0905 十分感谢,看来要自己动手了
Python 从 Hello world 到 Import world ,还有很长的路要走 O(∩_∩)O~
参考这一篇文章看看吧,[http://www.tuicool.com/articles/jIZr2q2]( http://www.tuicool.com/articles/jIZr2q2)
2016 年 4 月 25 日
回复了 faketemp 创建的主题 Python python 有谁知道 sql 解析库?
@xuyuheng0905 从某 oracle 系统导出好多 excel 文件(数量还会增加,数据来源别处不是自己导的),格式是 sheet2 的 A1.value 就是本工作簿数据来源 SQL ,现在想统计出每个工作簿数据都对应使用了 oracle 数据库中的哪些表——所以才想从每个工作簿中取出 sql 语句,从 sql 语句中解析出来表名、字段名等信息
不知道我有没有说明白…
2016 年 4 月 24 日
回复了 faketemp 创建的主题 Python python 有谁知道 sql 解析库?
@pynix 你是说 python 标准库??好像没有解析 sql 语句的
2016 年 4 月 24 日
回复了 faketemp 创建的主题 Python python 有谁知道 sql 解析库?
@xuyuheng0905 @kqz901002
sqlalchemy 之前没用过,具体如何解析文本 SQL 语句来识别出表名、字段名,得闲的时候可以针对以上的例子具体演示下不???
1 ... 16  17  18  19  20  21  22  23  24  25  
关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   Solana   ·   2383 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 13:46 · PVG 21:46 · LAX 05:46 · JFK 08:46
♥ Do have faith in what you're doing.