找到一个子矩阵,其最大可能总和为O(n ^ 2)

时间:2010-06-25 06:38:06

标签: algorithm submatrix

我正在尝试用Java编写一个程序,当给定一个MxN矩阵时,它会找到具有最大数字总和的(连续的)子矩阵。然后程序需要返回子矩阵的左上角坐标和右下角坐标。矩阵可以包括负数,矩阵和子矩阵都不需要是正方形。

我看到这里讨论了这个:Getting the submatrix with maximum sum?,解决方案似乎是O(n ^ 3)。我的一个朋友说他们曾经设法在O(n ^ 2)中解决了这个问题。还建议here.这可能吗?

有没有可用的代码以最有效的方式解决这个问题?

2 个答案:

答案 0 :(得分:7)

您(很可能)无法在O(n^2)中解决您的问题,至少不知道此类算法。最优解决方案具有亚立方复杂性,但实现起来非常困难,实际上可能更慢。你可以阅读一篇关于它的论文here

使用的常用算法是您找到的问题中引用的O(n^3)

答案 1 :(得分:4)

(S)他是你的朋友..所以请问他/她,并与我们分享:)