【问题标题】:Distribution of items from "x" sets of plants in "y" baskets equally在“y”个篮子中平均分配“x”组植物中的物品
【发布时间】:2011-02-01 08:14:49
【问题描述】:

我需要有关分组植物分布算法的想法。我有,比如说 5 组植物,每组都描绘了一个特定的属性,例如,

setA= {set of all plants that are green in color} 

setB = {set of all plants red in color} 

setC={ all the plants that are roots also} 

setD= {fruits} 

setE= [flowers}

植物可以是多个集合的成员。植物的总数是“n”,我有“m”个篮子。所需要的是将所有这些“n”个植物分布在“m”个篮子中,以便对于每组,所有篮子都具有来自该组的相等(或几乎相等)数量的植物。问题来了。如果我开始为每组一个一个地分配“m”个篮子,那么在大多数情况下,最后一个分配将是唯一有效的分配,即篮子中的鲜花分布均匀,但不一定是水果,根或颜色等。

如何平均分配所有这些?有什么想法吗?

【问题讨论】:

  • 你能提供一个带有示例解决方案的例子吗?在我看来,有时甚至可能没有任何可能的解决方案。
  • 抱歉回复晚了。那么解决方案是我所需要的,而不是逻辑。例如,我必须根据某些标准将 100 名学生分成 4 个或任意数量的组。并且该标准可以具有fol(但不一定):-a。同龄学生人数相等。湾。选修化学课程的学生人数相等。 C。踢足球的学生数量相等。标准可以是任何东西。我在这里所说的是一个例子。学生的数量可以变化,小组的数量也可以变化。标准数量也是如此。

标签: algorithm logic set


【解决方案1】:

这是maximum match problem in a bipartite graph 的变体。

例如,您有 20 个工厂和 5 个组。然后,第一组节点将包含 20 个植物和另一个 - 5 个篮子,但每个篮子将出现 4 次(总共 20 个节点)。
现在,您只需将 20 个植物与 20 个篮子节点匹配,这正是上面的问题。

如果n 不能被m 整除,您可以添加一些备用的busket-nodes。例如,如果 n = 23m = 5,您可以将每个篮子重复 5 次。当找到完美匹配时,busket-set 仍然有两个 (5*5 - 23) 空闲节点。

为了使“几乎相等”的要求更好地发挥作用(当没有完美匹配时),您可以改为对图形进行加权。即,greenPlantsBasket#1 花费 1,greenPlantsBasket#2 花费 2,greenPlantsBasket#3 花费 4,以此类推。

维基百科为各种最大匹配问题提供算法,并且也有实现库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 2016-01-23
    • 1970-01-01
    相关资源
    最近更新 更多