有效地搜索矩阵中的四元组

时间:2017-07-14 20:12:26

标签: algorithm search time-complexity

我有一个不同数字的矩阵,我需要一个有效的算法来查找所有四元组(四个条目,其中每两个在同一行,每两个在同一列),其中所有四个数字都是正数。例如:

  • 1 2 0 0
  • 1 1 0 0
  • 0 0 1 1

这里我们有一个像这样的四倍

  • 1 2
  • 1 1

很容易找到一种无效的解决方案,但我需要一些有效的方法。我真的很感激任何想法!

1 个答案:

答案 0 :(得分:0)

如果这些是非稀疏矩阵,我认为你能做的最好的事情就是采用行对的逐位乘积,你可以使用每个元素的“真实性”。我会稍微改变你的例子:

1 2 0 1
1 1 0 0 
0 1 1 1

这三种产品将是

1*2 T T F F
1*3 T F T F
2*3 F T F F

如果你有一个N * M矩阵,其中M在硬件矩阵指令的线性处理能力范围内,那么这是一个快速的N ^ 2算法。

现在,任何至少有两个T值的结果都表示四元组;你可以在K ^ 2时间内生成所有坐标,其中K是该行中T s的数量。

不幸的是,密集阵列会产生令人讨厌的N ^ 2 M ^ 2结果。但是,它易于处理,可维护,我认为它适用于半稀疏应用程序。