有人可以向我指出用最大连接上限计算下载估算的算法。例如,我有7台具有不同下载速度的PC,我只能同时下载X设备。
Speed(Kbps) Size(Kb) Estimate(s) 10 1000 100 50 1000 20 100 1000 10 200 1000 5 10 1000 100 20 1000 50 40 1000 25
*估计=大小/速度
我想到的是Sum(Estimate)/MaxConnections
,但似乎不准确。
如果X = 2,那么使用该逻辑的结果将是310/2 = 155,但在现实生活中它将是160:
1st iteration: 1 thread: 100s 2 thread: 100s
总累计:100秒
2nd iteration: 1 thread: 50s 2 thread: 25s + 20s + 5s
总耗时:150秒
3rd iteration: 1 thread: 10s
总耗时:160秒
答案 0 :(得分:2)
它似乎是k-partition problem的变体,您希望在其中拆分'在您拥有的X设备之间尽可能均匀地工作。不幸的是,这个问题是NP-Complete,没有已知的有效解决方案。
当X = 2且估计是相对较小的整数时,有一个pseudo-polynomial solution to the problem using Dynamic Programming。
然而,对于一般的X,问题是没有已知的伪多项式解。
你能做什么:
O(X^n)
,n
是您下载的元素数量。