Matrix 以有效的方式计算最高行和

Matrix 以有效的方式计算最高行和,matrix,Matrix,嗨,我想解决一个问题。我有m*n矩阵。这是一个只有0和1的整数矩阵。我想找出所有元素之和最高的行。我用简单的方法解决这个问题。我用2表示循环,并计算每行的和。但我想找到更有效的方法来做这件事。谁都知道。我需要一个优化的解决方案。谢谢。让我们考虑矩阵中不同行中的任意两个元素。只要选两个,哪一个都不重要,只要它们不在同一行。将矩阵的其他元素设置为零。然后,我们可以选择哪一行作为答案,在我们选择的元素中写入1,在另一个元素中写入0 这对我来说意味着,在最坏的情况下,不管你有多聪明,你可能必须检查矩阵的

嗨,我想解决一个问题。我有m*n矩阵。这是一个只有0和1的整数矩阵。我想找出所有元素之和最高的行。我用简单的方法解决这个问题。我用2表示循环,并计算每行的和。但我想找到更有效的方法来做这件事。谁都知道。我需要一个优化的解决方案。谢谢。

让我们考虑矩阵中不同行中的任意两个元素。只要选两个,哪一个都不重要,只要它们不在同一行。将矩阵的其他元素设置为零。然后,我们可以选择哪一行作为答案,在我们选择的元素中写入1,在另一个元素中写入0

这对我来说意味着,在最坏的情况下,不管你有多聪明,你可能必须检查矩阵的O(m*n)元素,以便找到唯一非零值的元素。因此,最坏情况下的运行时间永远不会比O(m*n)更好

但在某些情况下,您可以缩短程序。假设到目前为止,您已经检查过的任何行中元素的最高总和是
x
。现在您正在检查包含
n
元素的新行。如果在检查这些元素的
k
时,这些
k
元素的总和小于
x-n+k
,则您可以确定该行中的元素总和小于
x
,并且无需进一步查看该行


该算法在最坏情况下仍然是O(mn),但在对矩阵内容进行合理假设的情况下,其平均(平均)运行时间将小于应用于相同矩阵的朴素算法。它也可以通过并行处理来完成,尽管我认为这会导致更多的步骤(平均而言),尽管需要划分更多的处理器。也就是说,我希望“加速因子”比使用的处理器数量少一些。

如果要求mn个元素的和,我看不出如何用比O(mn)更好的方法来计算。也许你可以把它并行化。是的,我就是这么想的。将矩阵分成两部分并使其位并行。还有其他解决方案吗?也许是并行化每一行