生成许多​​在儿童中分发玩具的方法之一

时间:2014-09-09 19:07:34

标签: algorithm random set-theory

  • 有N个孩子和一组有限的可辨别玩具;
  • 每个孩子喜欢所有玩具的特定子集T i ;
  • 每个孩子需要拥有一个确切的数字t i < = | T i |玩具,但仅限于孩子喜欢的玩具;
  • 一些玩具被一个以上的孩子所喜欢。
  • 玩具不能由多个孩子拥有

可能有很多方法可以满足每个孩子对玩具的需求。

问题:鉴于N,{T i },{t i }和种子RNG,来自所有可能的玩具配置我需要选择一个均匀分布(或至少接近均匀分布)的配置,即从孩子到他们拥有的玩具的映射。

生成所有可能的配置并选择j-th是不行的 - 可能会有很多这样的配置。

在下面的示例中,有4个孩子:红色,蓝色,绿色和黄色。红色需要拥有 4个玩具,蓝色 - 5,绿色 - 3,黄色 - 3.玩具儿童喜欢在相应颜色的矩形内。

Children craving for toys

所以我需要的是生成分布均匀的Map<Child, Set<Toy>>的算法大纲,或任何有助于解决问题的链接。

1 个答案:

答案 0 :(得分:1)

准备如下的二分图。对于每个孩子i,请设置t_i个顶点。对于每个玩具j,制作一个顶点。每当孩子i喜欢玩具j时,请将i的所有顶点连接到j的顶点。玩具对儿童的有效分配对应于此图中的完美匹配。使用您最喜欢的匹配算法(例如Hopcroft--Karp)计算一个作业,然后根据需要运行Jerrum and Sinclair的马尔可夫链。