Algorithm 子矩阵NxN和N-非零值的最大和,只有O(N^2)

Algorithm 子矩阵NxN和N-非零值的最大和,只有O(N^2),algorithm,dynamic-programming,submatrix,Algorithm,Dynamic Programming,Submatrix,假设有一个N×N矩阵,其中每行有一个非零元素,每列有一个非零元素(非零元素可以是正的,也可以是负的)。我们想找到最大和子矩阵。我们这样做的效率如何 矩阵的维数为N×N,只有N个非零元素。N太大了,所以我不能使用O(N3)算法。有人知道如何在时间O(N2)、O(N log N)或其他类似的时间复杂性中解决这个问题吗 谢谢 如果要查找最大和子矩形,可以使用此处描述的算法在O(n^2 logn)时间内完成。这胜过了Kadane的O(n^3)算法 什么是“平凡的情况”?我假设N个非零元素的位置未知(不是

假设有一个N×N矩阵,其中每行有一个非零元素,每列有一个非零元素(非零元素可以是正的,也可以是负的)。我们想找到最大和子矩阵。我们这样做的效率如何

矩阵的维数为N×N,只有N个非零元素。N太大了,所以我不能使用O(N3)算法。有人知道如何在时间O(N2)、O(N log N)或其他类似的时间复杂性中解决这个问题吗


谢谢

如果要查找最大和子矩形,可以使用此处描述的算法在O(n^2 logn)时间内完成。这胜过了Kadane的O(n^3)算法

什么是“平凡的情况”?我假设N个非零元素的位置未知(不是稀疏矩阵),并且值是正的和负的?O(N^3)与二维中的Kadane's。如果每列正好有一个非零元素,那么您可以将矩阵折叠成一个数组,并应用Kadane算法的O(N)复杂度。但是,由于您可能仍然需要遍历所有元素(为了找到这些非零),因此您得到了O(N^2),正如@Adam所注意到的。@奇怪的是,不是这样,因为子矩阵不一定折叠为折叠数组的连续子向量。