我的教科书很难解释大的工作原理,几乎没有任何细节的例子。
我有一些运动问题,我试图尝试但是感谢教科书 我不明白如何解决这些问题。
这是一个:
determine whether each of these functions is O(x)
f(x)=x^2+x+1
和
determine whether each of these functions is O(x^2)
f(x)=xlogx
如何解决这些问题?从我在网上收集的内容和教科书中我发现这非常令人困惑......
提前致谢。
答案 0 :(得分:1)
对于第一个,x^2+x+1
不是O(x)
,因为无论x
有多大,第一个表达式的增长速度都快于第二个表达式。通常,x^2+x+1
会被称为O(x^2)
(“二次”),因为x^2
是主导词。
对于第二个,xlogx
是O(x^2)
,因为第二个表达式的增长速度至少和第一个一样快。示例约束为c=1
和x>0
。这是一个过于保守的表达,通常xlogx
可以说是O(xlogx)
(“linearithmic”),它自己的复杂性类。
关于Big-O表示法的维基百科文章列出了其他常见的named complexities。虽然有一般方法来分析函数并确定其Big-O复杂性,但通常更快地熟悉常见函数并识别表达式或算法中最相关的函数。通常,您只会遇到一些常见的复杂性类。按复杂程度递增,这些是:
1
)logx
)x
)xlogx
)x^c
为c>1
)c^x
的{{1}})