广告分发问题:最佳解决方案?

时间:2010-06-12 09:53:03

标签: algorithm language-agnostic

我被要求找到这个问题的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解决方案,我只是看不到它?

1 个答案:

答案 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