假设我们有两个算法, 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 更少吗?为什么或为什么不呢?
答案 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 ,前者执行的步骤少于后者。