获得有限族有限集的随机横向

时间:2015-11-17 18:13:12

标签: algorithm probability combinatorics

我正在寻找一种算法,该算法将有限数量的集合S_1,...,S_n作为输入,并输出列表x_1,...,x_n,其中x_i属于S_i,i = 1,... ,n和所有x_i是成对不同的。注意,一般来说,设置S_i不会成对不相交。我们可以将此类列表称为家庭{S_1,...,S_n}的横向,通常是这样。

列表应随机选择,使得每个可能的列表同样可能作为输出。我不在乎会发生什么,没有这样的清单。我希望算法速度相当快,特别是在进行选择之前列举所有列表的速度太慢。

2 个答案:

答案 0 :(得分:2)

正如Ante观察到的那样,我们正在寻找二分匹配,但这里的难点在于找到一个随机的匹配。如果你的图表足够大,那么你可能不得不接受Jerrum和Sinclair快速混合的马尔可夫链。否则,有一个O(2 ^ n poly(n)) - 时间动态程序用于计算最大匹配(而不是用于枚举它们的O(n!) - 时间算法),您可以通过重复计数来对其进行采样。使用边缘或不匹配后的匹配数量。

答案 1 :(得分:1)

将集合和元素的发生率表示为二分图并找到maximum cardinality bipartite matching