我在 python 中有一个长度为 N 的列表,我想从中选择 K 对元素,其中不允许重复对中的元素以及在哪里(x,y) == (y,x)
(不区分顺序)。有 N 选择 2 对可能,并且 K 总是显着小于 N。从列表中选择最“多样化”和最具代表性的对集合是一种好的确定性(无抽样)方法,这意味着:(1)集合表示列表中项目数量最多的对(并且任何特定元素都没有偏差),(2)以及对列表不偏向列表的开头或结尾的位置?
例子:
l = [1,2,3,4,5]
有 5 种选择 2 = 10 种可能的组合。如果我们要求 2 对(K = 2),那么一组好的对将是[(1,2),(3,4)]
因为几乎每个元素都出现在列表中,并且我们没有任何元素的重复。K = 2 的一组坏对将是:[(1,2),(1,3)]
因为它重用了 1 元素并且明显偏向于列表的开头。如果在这种情况下 K > 2,我们需要重复元素,这是不可避免的,但我想找到一种方法来做到这一点,即具有代表性/多样化的 wrt 列表。
我只是在寻找一种高效且简单的启发式方法,不一定要完美。有任何想法吗?
很高兴为此使用 numpy/scipy。