【问题标题】:C# Algorithm to determine grouping of people based on a value基于值确定人员分组的 C# 算法
【发布时间】:2010-07-28 13:58:00
【问题描述】:

我正在尝试编写一种算法,根据他们的“分数”创建人群。 一个人有两个参数,一个名字和一个分数。 (分数范围在 -10 到 10 之间,但这并不相关)我希望创建人数相等的组(如果可能的话,基于所呈现的人数),其中组成员的平均分数是相同(或非常接近相同)。

例如:

第 1 组(平均分=2) ——约翰·多伊,得分 2 -- Jane Doe,得分 7 -- 杰克布莱克,得分 -3

第 2 组(平均分=2) ——鲍比·弗莱,得分 4 -- 卡里佩奇,得分 -3 -- Linus Tarval,得分 5

【问题讨论】:

  • 多少组?另外,你会有多少人?
  • 组的数量是无限的,但人数永远是由用户选择的。每组的人数也将由用户提供。

标签: c# grouping


【解决方案1】:

这闻起来像是经典 Partition Problem 的变体,尽管存在一些启发式方法,但它是 NP-Hard。您可以在维基百科页面上获得战利品。在您的情况下,可能会采用一种贪婪的方法。

您应该尝试通过选择合适的组来放置特定的人来填充您的组,可能从让他们按分数排序开始。

【讨论】:

  • 感谢 Jack,“贪婪的方法”对于这个应用程序来说已经足够好了。
【解决方案2】:

这是一个棘手的问题。您可能会做的最好的事情是启发式,但 k-means 是一个很好的方法:http://en.wikipedia.org/wiki/K-means_clustering

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-11-14
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 2015-05-08
    • 2020-11-10
    • 2011-06-13
    相关资源
    最近更新 更多