功能成长中的大O.

时间:2016-09-15 05:04:23

标签: algorithm

假设我们有两个算法, A B ,用于解决一些问题(比如将两个 n×n 矩阵相乘,或者排序一个整数数组n)。设 n 表示问题的输入大小,让 T A (n) T B (n)表示步数 在大小 n 的输入上分别由算法 A B 取得。 已知 T A (n)= O(n 3 T B ( n)= O(n 5 。对于足够大的 n ,算法 A 执行的步骤比算法 B 更少吗?为什么或为什么不呢?

1 个答案:

答案 0 :(得分:4)

首先,我想你的意思是界限是 O(n 3 O(n 5 (即分别为3和5的幂)。

O is an upper bound开始,你无法对比较说些什么。例如:

  • n 2 = O(n 3 n 1.5 = O(n 5 ,但是,即使对于大 n ,前者的函数也大于后者。

  • 相反, n 1.5 = O(n 3 n 2 = O(n 5 ,这里,对于大 n ,前者的功能确实大于后者。

如果问题是关于Θ,而不是 O ,答案会有所不同 - 在这种情况下,你可以说明,对于足够大的 n ,前者执行的步骤少于后者。