重写此嵌套 for 循环以获得更好的时间复杂度

问题描述 投票:0回答:1

我正在尝试优化以下嵌套 for 循环以减少迭代次数。我觉得它的效率非常低,并且想认为有一种更好的方法可以减少迭代次数。

我们有向量 M 和 N

  M = 1:74
  N = 1:150

  for n = 1:150
      for m = 1:74
          matrix(m,n) = m/n

如果我没记错的话,这个嵌套 for 循环的时间复杂度为 m*n,即 74x150 = 11,100。我知道必须有更好的方法来填充矩阵(m,n),但想不出实际这样做的方法。帮助将不胜感激。谢谢!

我曾尝试考虑利用矢量化并将时间复杂度降低到 (m+n) 与当前 (m*n) 之类的东西,但不知道在实践中如何做。在问之前我不想进入兔子洞

python performance time-complexity big-o nested-loops
1个回答
0
投票

您尝试过使用网格方法吗?虽然实际上网格形成的时间复杂度为 m*n,但稍后您可以使用矢量化来提高性能。 按元素划分是矢量化真正发挥作用的地方,因为它比显式循环每个元素要高效得多。

M = np.arange(1, 75)
N = np.arange(1, 151)


MMESH, NMESH = np.meshgrid(M, N)

matrix = MMESH / NMESH

matrix_list = matrix.tolist()

如果有人能够提供更好的复杂性解决方案,我们将不胜感激。我很好奇,现在就投资了。

© www.soinside.com 2019 - 2024. All rights reserved.