我试图确定下图的渐近增长率,其具有对数x轴(基数2)和线性y轴。这对我来说似乎是次对数的,但是如何确切地确定速率(在渐近复杂度的大O符号中)? 上面的原始图,在蓝线下面的一个是sqrt(),绿色log()和最后一个原始函数
答案 0 :(得分:2)
假设您可以展示常数c
,使f(2^(i+1))/f(2^i)) = c
为每个整数i
,您可以考虑以下事实
f(2^i) = c.f(2^(i-1)) = c^i.f(1)
因此对于任何整数k,
f(k) = f(2^log2(k))
= c^log2(k).f(1)
= k^log2(c).f(1)
我尝试估算比率f(2^(i+1)) / f(2^i)
:
f(2^12) / f(2^11) ~= 0.250 / 0.175 ~= 1.43
f(2^11) / f(2^10) ~= 0.175 / 0.125 ~= 1.4
f(2^10) / f(2^9) ~= 0.125 / 0.085 ~= 1.47
f(2^9) / f(2^8) ~= 0.085 / 0.070 ~= 1.21
对于x
的较低值,读取函数的值变得太难了。
我不清楚你是否真的有一个恒定的比率f(2^(i+1))/f(2^i)
(你可能需要x > 2^13
的更多数据),但是,作为一个例子,如果你选择采用{的值{1}},您最终得到的功能为c = 1.4
,即f(k)/f(1) ~= k^0.49 ~= sqrt(k)
将为"关闭"到平方根函数。
<强>声明:强>
请采取&#34;关闭&#34;这里1/f(1).f
对于x^(0.5 +/- epsilon
来说,epsilon > 0
只是远离sqrt(x)
(我的意思是 - 两个函数之间的差异可以任意大,因为x -> +Inf
。 })。