我被要求找到这个问题的2个近似解决方案:
您正在咨询收到大量电子商务网站的信息 每天都有访客。对于每个访问者我,其中我{1,2 ..... n},该网站 已分配值v [i],表示可以预期的收入 从这个客户那里获得。
每个访问者我都会看到一个可能的广告A1,A2 ......就像他们一样 进入网站。该网站希望为每位客户选择一个广告 总体而言,每个广告都是由一组相当大的客户看到的 总重量。
因此,如果为每位客户选择一个广告,我们会 将此选择的 spread 定义为最小值,超过j = 1,2 ...... m, 所有在ad Aj中展示的客户的总重量。
示例:假设有六个客户的值为3,4,12,2,4,6和 有m = 3个广告。然后,在这种情况下,人们可以实现传播 9通过向客户1,2和4显示广告A1,向客户3显示广告A2,以及向广告A3显示广告A1 客户5和6。
最终目标是为每位客户选择一个广告 最大化传播。
不幸的是,这个优化问题 是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
这个解决方案实际上似乎总是找到最佳解决方案,或者我根本找不到反例。 你能找到吗?这是一个非polinomial解决方案,我只是看不到它?
答案 0 :(得分:1)
使用:
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