算法步数为6n³+4n-20时O(n³)的c和n0计算咨询
大O表示法常数c与阈值n₀的计算方法
首先明确大O的核心定义:若算法执行步数函数f(n) = O(g(n)),则必须存在正的常数c、正整数n₀,使得对所有满足n ≥ n₀的输入规模,都成立0 ≤ f(n) ≤ c·g(n)。
注意两个核心约束:c必须是正数,n≥n₀时f(n)必须非负(算法执行步数不可能为负数)。
之前推导的问题
代数变形本身没有错误:
6n³+4n-20 ≤ c·n³ => 6 + 4/n² - 20/n³ ≤ c
但选n₀=1得到c=-10是完全无效的,原因有两个:
- n=1时f(1)=61+41-20=-10,执行步数为负,没有实际意义;
- 得到的c是负数,违反了c必须为正常数的要求。
正确计算逻辑
大O表示法不需要找唯一的c和n₀,只要能找到任意一对满足定义的合法值即可,取值不需要最紧,方便验证就行,常规计算分两步:
- 先选足够大的n₀,保证n≥n₀时f(n)恒为正,同时所有低阶正项都可以放大为最高次项的倍数,负项直接忽略(减去正数只会让f(n)更小,更满足≤的关系)。
- 代入放大后的不等式,算出对应的常数c即可。
针对f(n)=6n³+4n-20的合理取值举例
取值1(计算最方便,最常用)
选n₀=2,c=10,验证如下:
- 当n≥2时,n²≥4,因此
4n ≤ 4n·n² =4n³ - 因为-20是负数,因此
6n³+4n-20 ≤6n³+4n <6n³+4n³=10n³ - 同时n≥2时f(n)最小值为f(2)=68+42-20=36>0,完全满足
0≤f(n)≤10n³的要求。
取值2(更紧的常数)
选n₀=5,c=7,验证如下:
- 当n≥5时,4/n² ≤4/25=0.16,-20/n³ ≥-20/125=-0.16,因此
6+4/n²-20/n³ ≤6+0.16=6.16 <7 - 代入原式即得
6n³+4n-20 ≤7n³,同时n≥5时f(n)最小值为f(5)=6125+45-20=750>0,同样满足定义。
你甚至可以选n₀=10、c=6.1,只要能证明n≥n₀时不等式恒成立就可以,没有唯一标准答案。
内容的提问来源于stack exchange,提问作者sangram
相关产品推荐
相关产品推荐

