我被要求找到这个问题的2种近似解:
你正在为一个每天接待大量访问者的电子商务网站提供咨询。对于每一位访客i,其中我欧元{1,2.(N),站点已分配了一个值vi,表示可以从该客户获得的预期收入。
每一位访客我都看到一个可能的广告A1,A2 .当他们进入网站的时候。该网站希望为每个客户选择一个广告,这样,总体来说,每一个广告都会被一组总重量相当大的客户所看到。
因此,如果为每个客户选择一个广告,我们将把这个选择的传播定义为最小,超过j= 1,2……m,所有向Aj展示的顾客的总重量。
示例:假设有6个客户的值为3、4、12、2、4、6,并且m=3个ads。然后,在这种情况下,通过向客户显示广告A1 1、2、4、广告A2给客户3、以及向客户5和6显示广告A3,可以实现9的传播。
最终的目标是为每个客户找到一个广告的选择,最大限度地扩大传播。
不幸的是,这个优化问题是NP难的(您不必证明这一点)。
因此,给出一种多项式时间算法,它可以在因子2的范围内逼近最大传播。
我找到的解决方案如下:
Order visitors values in descending order
Add the next visitor value (i.e. assign the visitor) to
the Ad with the current lowest total value
Repeat
这个解似乎总是能找到最优解,或者我根本找不到反例。你能找到吗?这是一个非多元的解决方案,而我只是看不到它?
发布于 2010-06-12 13:18:41
通过以下方式:
v = [7, 6, 5, 3, 3]
m = 2
最佳解决办法是:
A1: 6 + 3 + 3 = 12
A2: 5 + 7 = 12
你的解决方案是:
A1: 7 + 3 + 3 = 13
A2: 6 + 5 = 11
https://stackoverflow.com/questions/3028227
复制相似问题