影响m学生到n组?

时间:2015-01-24 11:00:58

标签: algorithm optimization graph constraints

我想影响m组(m~20)的n个项目(n~6)。还有一个额外的限制:我只能影响p(p~4)到q(q~6)组之间的每个项目。

每个小组必须从最喜欢的项目到最差项目订购项目。

我已经阅读如果m = n,我可以使用Hungarian algorithm,我应该在一般情况下使用Ford-Fulkerson algorithmEdmonds–Karp algorithm

请你帮我辨别一下这个图表在我的情况下会是什么?我猜节点是组和项目,边缘的成本由组如项目的方式决定。但容量属性是什么? 如何尊重我的原始约束?

1 个答案:

答案 0 :(得分:1)

图表应该是这样的:

  1. 源节点。

  2. 汇聚节点。

  3. 第一组节点。这些节点对应于学生组(每个组一个节点)。从源节点到该集合中的每个节点应该有capacity = 1的边缘(我假设每个组只能进行投影)和cost = 0

  4. 第二组节点。这些节点对应于项目。通过cost = 0capacity = the maximum number of groups that are allowed to do this project,此组中的每个节点都应该有一个边缘到汇聚节点。

  5. 从第一个集合到第二个集合中的每个节点都应该有capacity = 1的{​​{1}}和cost = -how much this group likes this project-是必要的,当且仅当这个数字越大,这个群体就越喜欢这个项目。)

  6. 现在我们必须找到从源节点到汇聚节点的最小成本最大流量。