在渐近分析中,我们总是讨论大于常数值的输入大小。这些大输入可能永远不会提供给您的软件,并且算法渐渐变慢,总能更好地满足您的特定情况。因此,您最终可能会选择渐近速度较慢但速度较快的算法。这是什么意思?
答案 0 :(得分:1)
对于常数值在您的上下文中的含义,请比较这两种算法的渐近分析结果:
Algorithm A -> O(5*n^2)
Algorithm B -> O(2^n)
现在为了更好地理解,请检查它们的增加方式:
n | Algorithm A | Algorithm B
1 | 5 | 2
2 | 20 | 4
3 | 40 | 9
4 | 90 | 16
5 | 125 | 32
6 | 180 | 64
7 | 245 | 128
8 | 320 | 256
9 | 405 | 512 <-- Threshold
10| 500 | 1024
您可以将这些数字视为运行算法所花费的时间,较低的数字意味着更快的算法。如您所见,n<=8
的{{1}}数字大于Algorithm A
。因此,如果您的输入集太小,那么您可以使用Algorithm B
并获得更好的结果。但是,如果您的输入变大,在这种情况下Algorithm B
,n>=9
的结果将变得比Algorithm B
更差。因此,对于更大的输入,Algorithm A
效果更好。在您的问题上下文中,常量值表示像Algorithm A
这样的数字,它可以为比较算法创建此阈值。
作为旁注,当您渐近分析算法时,始终一个常数值,例如9
乘以您的分析结果,例如C
。如果输入数据很小,此常量值通常会对选择哪种算法更合适产生重大影响。只是不要将这个常数值误认为你的问题背景中的那个。