“y”篮子中“x”组植物的物品分布均等

时间:2010-04-07 11:06:58

标签: algorithm logic set

我需要关于群体中植物分布的算法的想法。我有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”篮子,那么在大多数情景中,最后一个分布将是唯一有效的分布,即篮子将在其中均匀分布花朵,但不一定是水果,根或颜色等。

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

1 个答案:

答案 0 :(得分:1)

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

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

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

为了使“几乎相等”的要求更好地工作(当没有完美匹配时),您可以改为进行图形加权。即,greenPlantsBasket#1成本1,greenPlantsBasket#2成本2,greenPlantsBasket#3成本4等。

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