排序算法 - 分组,加权

时间:2014-09-23 17:31:16

标签: algorithm sorting

我会尽量做到尽可能:

  • 我有11个小组。
  • 我有很多人需要在这些群体之间分配
  • 每个人都有一个加权的偏好列表。通常在该列表上有三个有序的组,但是一些异常值将具有更多或更少的组。 IE: 第1人偏好进入A组。如果那不可用,她想进入D组,如果那个不可用,她想进入C组。 人2对任何组都没有偏好。 第3人仅适用于D组。
  • 群组拥有最大数量。多大程度取决于参与人数,但必须保持平衡。
  • 理想的群体分布是实现最大偏好量的群体。

到目前为止,我知道我需要加权偏好。 3,2 1对于打架来说是一个好的开始。理想的群体分布是指加入该群体的人的偏好总和尽可能接近加入彼此群体的人的总和。

没有偏好意味着所有组的体重3。至少在我微调之前。

我不知道如何将一个算法实际开始排序。帮助

1 个答案:

答案 0 :(得分:1)

这看起来像weighted bipartite graph matching problem *,其中一组顶点表示组,另一组顶点表示人,边的权重为0(如果分配不可能) ),或10 / [首选项数量] x [首选项数量 - 首选项数量+ 1]或沿着这些行的某些内容(因此,如果用户有5个首选项,他们的首选项将加权10,他们的下一个将是8,然后6,然后4,然后2)

您可以克隆组顶点以适应分区要求(例如,如果一个组中最多可以有50个人,然后创建该组顶点的50个副本)并且每个顶点强制执行一个边,这是什么样的二分图分区算法设计用于处理

二分图匹配(加权和未加权版本)是多项式时间算法

*通常称为(stable) marriage problem - 您有一组代表男性的顶点,另一组代表女性的顶点,以及一组表示两组顶点的婚姻偏好的(加权)边缘