我正在尝试优化以下嵌套 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) 之类的东西,但不知道在实践中如何做。在问之前我不想进入兔子洞
您尝试过使用网格方法吗?虽然实际上网格形成的时间复杂度为 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()
如果有人能够提供更好的复杂性解决方案,我们将不胜感激。我很好奇,现在就投资了。