java - 找到最少的列数

标签 java algorithm data-structures

<分区>

举个例子: 假设我有一个仅包含 0 和 1 的二维数组:

0,1,0,0
0,0,0,1
1,0,1,0

我需要找到可以加到一个 vector 中的最少列数。例如, column0 + column1 + column3 =0,0,1 + 1,0,0 + 0,1,0 = 1,1,1 因此,最小列数为 3。

最佳答案

这基本上是一个 Set cover problem ,这是 NP 难的。它可以表述为整数线性规划问题并(最优地)求解。

您还可以将问题转化为具有非常好的求解器的同一类的另一个问题,例如 boolean SAT。

最后但同样重要的是,您可以使用贪婪和/或局部搜索算法以次优方式解决它,例如模拟退火。

关于java - 找到最少的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37413212/

相关文章:

algorithm - A-star是否保证给出二维网格中的最短路径

algorithm - 在图中制作成本矩阵

algorithm - C中的抢占式任务调度

java - KeyUsage 不允许数字签名

c# - 创建与 C# 异常类似的 Java 异常

java - 将打印到 Windows CMD 的所有内容存储在一个文件中

c - C迷宫求解算法

algorithm - 如何测试 BST 在从排序数组构造后是否平衡

arrays - 如何找到数组中出现次数超过 n/k 次的所有值?

java.lang.ClassNotFoundException : org. openx.data.jsonserde.JsonSerDe 错误