matrix - Big Oh、Big Omega 和 Theta 算法的计算复杂度

标签 matrix complexity-theory

我正在尝试解决以下有关计算复杂性的问题:

Compute the computational complexity of the following algorithm and write down its complexity in Big O, Big Omega and Theta

for i=1 to m {
   x(i) =0;
   for j=1 to n {
      x(i) = x(i) + A(i,j) * b(j)
   }
}

where A is mxn and b is nx1.

我结束了大 O O(mn^2)Omega(1)Theta(mn^2)

最佳答案

假设下面的语句在常数时间内运行:

    x(i) = x(i) + A(i,j) * b(j)

因此这在 O(1) 中完成,并且不依赖于 ij 的值。由于您在内部 for 循环中迭代此语句,恰好 n 次,您可以说以下代码在 O(n) 中运行:

x(i) =0;
for j=1 to n {
    meth1
}

(假设赋值也是在恒定时间内完成的)。同样,它不依赖于 i 的确切值。最后我们考虑外循环:

for i=1 to m {
   meth2
}

meth2 方法恰好重复了 m 次,因此时间复杂度的上限严格限制在 O(n m) 中。 p>

由于没有条件语句,也没有递归,而且数据Abx的结构不会改变执行程序,算法也是big Omega(m n)big Theta(m n)

当然,您可以高估大 oh 和低估大 omega:对于每种算法,您可以说它是 Ω(1),对于某些算法,它是 O(2 n),但关键是你不会用它买太多东西。

关于matrix - Big Oh、Big Omega 和 Theta 算法的计算复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36384480/

相关文章:

将矩阵重复 n 次到列表中

javascript - 阶乘计算有优化吗?

java - EclipseMetrics 插件失败并显示 "No typeInfo available"

performance - 如何在不使用 for 循环的情况下根据相应列中特定值的出现次数对矩阵进行排序?

r - 在 R 中,我如何使用贪婪的位点选择算法来最大化未代表的物种丰富度?

android - 我如何在android中获取图像矩阵坐标?

algorithm - SICP - 练习 2.63 - 确定增长顺序

c++ - 二叉搜索树中的有序遍历复杂性(使用迭代器)?

big-o - 如何为我的循环找到 Big-O 符号?

python - 查找满足条件的 2D numpy 数组的索引