【发布时间】:2011-12-28 09:30:22
【问题描述】:
我已经在cstheory too提出了这个问题
我有一个表单分发问题。 c 个类别中有 n 个表格(每个表格属于 1 个类别)。并且有 u 个用户,每个用户可以接收来自至少一个类别(但可能不止一个类别)的表单。
目标是在用户之间分发表单,以便每个用户收到相同数量的表单。我更喜欢平等地使用类别。
例如:
如果类别是:
C1 : 20 个表格
C2 : 3 种形式
C3 : 8 种形式
C4 : 2 种形式
而用户是:
U1 可以访问 C1 和 C2
U2 可以访问 C2
U3 可以访问 C3
U4 可以访问 C1 和 C3
U5 可以访问 C2 和 C4
答案应该是:
U1:1 x C1 + 1 x C2 | 2 x C1(首选)
U2:2 x C2
U3:2 x C3
U4:1 x C1 + 1 x C3 | 2 x C1(首选)| 2 x C3
U5:2 x C4
还有 23 个表格。
您对如何编写这样的算法有什么建议吗?
可能还有第二个问题,其中一些类别有一个应该贡献的选项。如果设置,该类别中的所有剩余表单将在有权访问该类别的用户之间分配。例如,如果 C1 启用了此选项,则答案应该是:
U1:1 x C1 + 1 x C2 + 9 C1
U2:2 x C2
U3:2 x C3
U4:2 x C3(以最小化 C3 类别中的剩余表格)+ 10 C1
U5:2 x C4
剩下的形式是0 in C1, 0 in C2, 4 in C3 and 0 in C4.
我认为它有点Bin Packing 算法,但我不确定,我不知道如何解决它! :(
注意:以上答案不是最佳答案,这些只是我的想法!
【问题讨论】:
-
-1 用于交叉发布。下一次,在你问的原网站上耐心等待答案。
-
好的。我只是认为这也可能与stackoverflow有关!我是程序员,不是科学家!
-
可能 - 但交叉发布只是令人困惑。这个问题在本质上确实是理论上的,而不是实际的(因此不适合 SO)。它可能适合programmers,但只有在被 cstheory 拒绝时才发布。
-
我在我的一个 Web 应用程序中遇到了这个问题!这正是我的客户所需要的!所以我觉得它真的很实用!
-
我并不是说它没有实际应用,但所提出的问题在很大程度上属于理论领域。