在Python中查找覆盖矩阵的最小元素

在Python中查找覆盖矩阵的最小元素,python,matrix,Python,Matrix,我想得到矩阵中覆盖行的最小元素 输入示例: lst = [[1, 2, 3], [2, 3], [3]] lst = [[1], [2, 3], [2, 3]] 输出: [3] [1, 2], [1, 3] 另一个输入示例: lst = [[1, 2, 3], [2, 3], [3]] lst = [[1], [2, 3], [2, 3]] 输出: [3] [1, 2], [1, 3] 我曾试图考虑采用行的组合,但当我们有大矩阵时,这将需要很长时间和大量内存。正如用户2357

我想得到矩阵中覆盖行的最小元素

输入示例:

lst = [[1, 2, 3], [2, 3], [3]]
lst = [[1], [2, 3], [2, 3]] 
输出:

[3]
[1, 2], [1, 3]
另一个输入示例:

lst = [[1, 2, 3], [2, 3], [3]]
lst = [[1], [2, 3], [2, 3]] 
输出:

[3]
[1, 2], [1, 3]

我曾试图考虑采用行的组合,但当我们有大矩阵时,这将需要很长时间和大量内存。

正如用户2357112所说的,您可以在Wikipedia上找到更多关于它的信息: 在这里,我提出了这个增强的贪婪算法来解决这个问题,并且仅当每行中的元素是唯一的(集合)


此解决方案将只提供一个解决方案,我相信在大多数情况下它是可接受的近似值。

请指定“封面行”是什么意思?还有,你提到的矩阵在哪里?为什么第二个矩阵是
[[1,2],[1,3]]
而不是
[1,3]
?因为我们可以用两种方式覆盖行,而且它们都是最小的:[1,2],[1,3]都有两个元素,都覆盖了所有行。我的意思是覆盖了每行中元素所在的行,因此,从每一行中,我们应该在任何最小输出中至少有一个元素。这可能不适合您,因为您要解决的问题是NP完全问题。这是一个轻微的重述。