【问题标题】:How to compute time complexity of this algorithm (It has 6 lines Matlab code)如何计算该算法的时间复杂度(它有 6 行 Matlab 代码)
【发布时间】:2016-02-08 18:28:13
【问题描述】:

这是我的代码:

  image = imread ('imageFile.jpg');
  [m,n]=size(image);

  for i=1:m

      mask = image(i,:);
      Mean = mean(mask(:));
      stdm = std(mask(:));
      bwx(i,:) = ( mask > Mean*( 10 + k * ( stdm / r+10 )));

  end

我应该将此算法与时间方面的另一种算法进行比较。如何计算该算法的时间复杂度?

r 和 k 是常数。

meanstd 是 Matlab 函数。

mean = 每行图像的平均值。

std = 每行图像的标准差。

【问题讨论】:

  • im 的大小是 C 列 X N 行。在 for 循环的每次迭代中,您拉出一行并检查它。那么你在每次迭代中取了多少个元素的平均值?均值的时间复杂度是多少?标准开发也是如此。
  • 亲爱的@TonyRuth,我编辑了我的问题,希望你能帮助我。
  • 一开始我误读了部分代码,但发现错误后更改了我的评论。试着回答我评论中的两个问题,你就会很好地找到这个算法的时间复杂度。

标签: algorithm performance matlab time


【解决方案1】:

这是平均值的公式,

<a href="http://www.codecogs.com/eqnedit.php?latex=<s>=\frac&space;1&space;n&space;\sum&space;^n&space;_{i=0}&space;s_i" target="_blank"><img src="http://latex.codecogs.com/gif.latex?<s>=\frac&space;1&space;n&space;\sum&space;^n&space;_{i=0}&space;s_i" title="<s>=\frac 1 n \sum ^n _{i=0} s_i" /></a>

如果你计算有多少基本的数学运算,加法、乘法、减法,总共有 n 次加法。所以均值的时间复杂度是O(n)。也就是说,平均值在时间上是线性的。我将由您来确定 std dev 的复杂性和代码中的 for 循环。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-25
  • 1970-01-01
  • 2015-03-09
  • 2022-01-19
  • 2019-09-27
  • 2020-02-02
相关资源
最近更新 更多