选择表中的列,以便新表的行至少包含一个R中初始行元素的出现

时间:2015-07-30 17:02:13

标签: 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到C5,R1到R3,我将选择C1,C2,C3和C5(不是C4)。

我的第一个(天真的)尝试是Python中的递归算法:

  1. 选择一列(Ci)
  2. 查找另一列(Cj),该列在结果表的行中添加新值而不创建重复值,
  3. 否则选择另一个Cj
  4. 如果没有Cj符合标准,请返回1
  5. 第一个异议:这种方法显然不是最理想的,整个表有11行,大约有2500列

    第二个异议:如果没有重复值的解决方案不存在,算法将不会给我第二个最好的解决方案。

    我怀疑在这个问题背后隐藏着某种动态编程,但我更倾向于使用现有的包:)

0 个答案:

没有答案