计算大 O 符号的值是否有效?
Is it valid to calculate the value of a Big O notation?
计算给定大 O 符号的值是否有效?我的意思是,通过计算给定的大 O 符号得到的数字是否始终对应于算法必须执行的确切最大步数?
举个例子,假设我们有一个效率为O(n log n)的排序算法,那么如果我们知道N的大小是8,那么我们可以这样做:
8x log2(8) = 24,因此假设 N 为 8,算法所需的最大步数将为 24
不,这没有意义,因为
a) 它是一种渐近度量,只描述了随着输入向无穷大增长而输出的增长
b) 它忽略常量偏移量和常量乘数(这完全使任何具体数字无用)。
计算给定大 O 符号的值是否有效?我的意思是,通过计算给定的大 O 符号得到的数字是否始终对应于算法必须执行的确切最大步数?
举个例子,假设我们有一个效率为O(n log n)的排序算法,那么如果我们知道N的大小是8,那么我们可以这样做: 8x log2(8) = 24,因此假设 N 为 8,算法所需的最大步数将为 24
不,这没有意义,因为
a) 它是一种渐近度量,只描述了随着输入向无穷大增长而输出的增长
b) 它忽略常量偏移量和常量乘数(这完全使任何具体数字无用)。