Python 选择表中的列,以便新表的行至少包含R中出现的一个初始行元素
事实上,问题更复杂:以下数据集有n列和p行Python 选择表中的列,以便新表的行至少包含R中出现的一个初始行元素,python,r,select,unique,dynamic-programming,Python,R,Select,Unique,Dynamic Programming,事实上,问题更复杂:以下数据集有n列和p行 C1 C2 C3 C4 C5... Cn R1 2 8 5 2 7 R2 2 5 8 7 7 R3 2 5 8 7 7 ... Rp 我的问题是:如何选择列的组合来创建一个新表,其中每行至少包含一次初始行的每个不同值,且非唯一值的数量最少 示例1:如果我的表只有C1到C3列和R1到R3行,那么选择C1、C2、C3就是解决方案:新表的每一行将只包含2、5和8行 示例2:现在,如果表的
C1 C2 C3 C4 C5... Cn
R1 2 8 5 2 7
R2 2 5 8 7 7
R3 2 5 8 7 7
...
Rp
我的问题是:如何选择列的组合来创建一个新表,其中每行至少包含一次初始行的每个不同值,且非唯一值的数量最少
示例1:如果我的表只有C1到C3列和R1到R3行,那么选择C1、C2、C3就是解决方案:新表的每一行将只包含2、5和8行
示例2:现在,如果表的范围是C1到C5,R1到R3,我将选择C1、C2、C3和C5(不是C4)
我的第一次(天真的)尝试是Python中的递归算法:
我怀疑这个问题背后隐藏着某种动态规划,但我更愿意使用现有的包:)这听起来像顶点覆盖问题。任何元素的最大值是多少?如果它很低,您可以为每一行尝试bitmask+DP,并将单独获得的列并集为O(2^位数*行*列)。这听起来像是顶点覆盖问题。任何元素的最大值是多少?如果低,您可以为每行尝试bitmask+DP,并将单独获得的列合并为O(2^位*行*列)