Python 一种算法,用于查找与等价数集合中最少数相匹配的数集合

Python 一种算法,用于查找与等价数集合中最少数相匹配的数集合,python,algorithm,math,set,Python,Algorithm,Math,Set,例如,如果我有,实际的数据集要大得多 从0-9中选择的4个数字的列表集合: 1,2,3,4 3,5,6,0 4,5,7,9 1,2,7,8 如果要查找集合中可能存在的匹配数最少的数字列表,是否有好的算法方法 在上面的例子中,它可能是1,6,7,2,它只匹配3种情况中的一种,最后一种情况中的2种使用numpy的非常简单的方法: 将numpy作为np导入 集合=[[1,2,3,4],[3,5,6,0],[4,5,7,9],[1,2,7,8]] 数字,计数=np.uniquesets,返回\计数

例如,如果我有,实际的数据集要大得多

从0-9中选择的4个数字的列表集合:

1,2,3,4 3,5,6,0 4,5,7,9 1,2,7,8 如果要查找集合中可能存在的匹配数最少的数字列表,是否有好的算法方法


在上面的例子中,它可能是1,6,7,2,它只匹配3种情况中的一种,最后一种情况中的2种

使用numpy的非常简单的方法:

将numpy作为np导入 集合=[[1,2,3,4],[3,5,6,0],[4,5,7,9],[1,2,7,8]] 数字,计数=np.uniquesets,返回\计数=True 候选对象=数字[np.argsortcounts[:np.sizesets,axis=1]] 印刷候选人 [0 6 8 9]
使用numpy的方法非常简单:

将numpy作为np导入 集合=[[1,2,3,4],[3,5,6,0],[4,5,7,9],[1,2,7,8]] 数字,计数=np.uniquesets,返回\计数=True 候选对象=数字[np.argsortcounts[:np.sizesets,axis=1]] 印刷候选人 [0 6 8 9]
你说最少的比赛是什么意思?你对匹配数的衡量标准是什么?@Primusa在问题中增加了一些澄清,但是集合中的元素数的共同点是什么是严格的算法定义?SUMLENCANDIATE&s对s的成套测试是否准确?还要注意的是,集合没有重复项,所以每个列表中的所有元素都是唯一的吗?以上是一个示例,实际情况是一组6个介于0和99之间的唯一数字,与大约5000个集合相匹配。您的示例分析似乎是错误的。匹配项似乎是:{1,2},{6},{7},{1,2,7}。我误解了吗?你说的最少比赛是什么意思?你对匹配数的衡量标准是什么?@Primusa在问题中增加了一些澄清,但是集合中的元素数的共同点是什么是严格的算法定义?SUMLENCANDIATE&s对s的成套测试是否准确?还要注意的是,集合没有重复项,所以每个列表中的所有元素都是唯一的吗?以上是一个示例,实际情况是一组6个介于0和99之间的唯一数字,与大约5000个集合相匹配。您的示例分析似乎是错误的。匹配项似乎是:{1,2},{6},{7},{1,2,7}。我误解了吗?似乎用这种方式寻找候选者只使用变量集中的数字。如果我们改为:集合=[[1,2,3,4],[3,5,6,1],[4,5,7,9],[1,2,7,8]],那么0不再在集合中,则求解的候选者是:[6,8,9,2]。但[6 8 9 0]的总体匹配数较少。注意:我们可以从问题注释中选择0-9之间的任意四个唯一数字。这样查找候选人似乎只使用变量集中的数字。如果我们改为:集合=[[1,2,3,4],[3,5,6,1],[4,5,7,9],[1,2,7,8]],那么0不再在集合中,则求解的候选者是:[6,8,9,2]。但[6 8 9 0]的总体匹配数较少。注意:我们可以从问题注释中选择0-9之间的任意四个唯一数字。