【问题标题】:Sorting algorithm - in groups, weighted排序算法 - 分组,加权
【发布时间】:2014-09-24 03:00:52
【问题描述】:

我会尽量做到彻底:

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

到目前为止,我知道我需要加权偏好。 3, 2 1 对 wights 来说是一个好的开始。理想的群体分布是这样一种情况:加入该群体的人的偏好总和与加入其他群体的人的偏好总和尽可能接近。

没有偏好意味着所有组的权重为 3。至少在我对其进行微调之前。

我不知道如何使用算法来实际开始排序。帮忙?

【问题讨论】:

  • 你可以尝试所有可能的作业,看看哪个得分最高。当然不是最快的方法...
  • 你有什么特别的编程语言吗?

标签: algorithm sorting


【解决方案1】:

这看起来像weighted bipartite graph matching problem*,其中一组顶点代表组,另一组顶点代表人,边的权重为 0(如果无法分配)或 10 / [偏好数量] x [偏好数量 - 偏好数量 + 1] 或类似的东西(所以如果用户有 5 个偏好,他们的最高偏好将被加权 10,他们的下一个将是 8,然后是 6,然后是 4 , 然后 2)

您可以克隆组顶点以适应分区要求(例如,如果一个组中最多可以有 50 人,则创建该组顶点的 50 个副本)并强制每个顶点一条边,这是很多二部图划分算法旨在处理

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

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

【讨论】:

  • 也许您的想法中有些东西,但在当前状态下它不会起作用。简单的反例:如果你在人物顶点和组顶点之间有加权边,什么会限制人们选择多个组?
  • 这个任务恐怕是NP不幸了。
  • @Aivean 该算法通常负责强制执行此限制。参见例如Hopcroft-Karp,它是 O(V^2.5),它强制限制没有两条边共享一个端点(因此一个人只能属于一个组)
  • Hopcroft-Karp 是为非加权图设计的。显然在未加权的图中不存在这样的问题。我正在考虑使用最大流量在加权图中找到最大基数匹配。而且我真的不确定是否可以修改一些最大流量算法以使其强制执行所需的限制。
  • @Aivean 谷歌搜索将显示大量多项式时间加权二部图匹配算法,例如this one。除非另有明确说明,否则所有二分图匹配算法(加权或其他)都会产生一个结果,其中没有一个顶点通过一条以上的边连接 - 这就是 maximum matching 的定义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多