我想影响m组(m~20)的n个项目(n~6)。还有一个额外的限制:我只能影响p(p~4)到q(q~6)组之间的每个项目。
每个小组必须从最喜欢的项目到最差项目订购项目。
我已经阅读如果m = n,我可以使用Hungarian algorithm,我应该在一般情况下使用Ford-Fulkerson algorithm或Edmonds–Karp algorithm。
请你帮我辨别一下这个图表在我的情况下会是什么?我猜节点是组和项目,边缘的成本由组如项目的方式决定。但容量属性是什么? 如何尊重我的原始约束?
答案 0 :(得分:1)
图表应该是这样的:
源节点。
汇聚节点。
第一组节点。这些节点对应于学生组(每个组一个节点)。从源节点到该集合中的每个节点应该有capacity = 1
的边缘(我假设每个组只能进行投影)和cost = 0
。
第二组节点。这些节点对应于项目。通过cost = 0
和capacity = the maximum number of groups that are allowed to do this project
,此组中的每个节点都应该有一个边缘到汇聚节点。
从第一个集合到第二个集合中的每个节点都应该有capacity = 1
的{{1}}和cost = -how much this group likes this project
(-
是必要的,当且仅当这个数字越大,这个群体就越喜欢这个项目。)
现在我们必须找到从源节点到汇聚节点的最小成本最大流量。