从二维数组算法优化中构造最大和行解

时间:2016-03-03 12:06:17

标签: algorithm time-complexity combinations

假设我们有一个二维数组(N行,M列),其中每列至少有一个带有整数值的非空单元格:

Data

我们可以轻松地组成一个新的单行,其中每个单元格包含数据数组中相应列的最大值。

解决方案(长度M)不能为空值。

在这种情况下,解决方案是:

Solution

有一个因素:每列的最大值。

我们想要添加另一个因素:构成解决方案的最低行数(比重要值更重要)。

最简单的算法如下:

i = 1

while (i <= M)
{
    candidates = generateCorrectSolutionsFromAllNLengthRowCombinations(i)

    if ( ! empty(candidates))
    {
        return biggestSumElement(candidates)
    }

    i++
}

该算法返回正确的解决方案,但具有非常高的计算复杂度,这对于更大的矩阵来说是个问题。

有没有办法更快地完成?这个问题(或类似问题)是否在任何地方进行过分

此致

Patryk

1 个答案:

答案 0 :(得分:0)

如果您在无序数组中找到值,您永远不会知道,如果您要查找的值位于该数组的最后一个访问字段中,那么长度为N的数组的复杂度为O(N)且不能小于

如何使搜索更快的唯一方法是以某种方式排序数组,或者知道一些模式并基于跳过数组的某些部分,因为我们确定,解决方案不存在。