Big O - 判断函数是否是Big O
Big O - Determining whether the function is Big O
我的教科书在解释 big-o 的工作原理方面非常糟糕,几乎没有提供没有细节的示例。
我有一些练习题正在尝试尝试,但多亏了教科书
我不明白如何解决这些问题。
这是一个:
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
我该如何解决这些问题?从我网上收集的资料和教科书来看,我觉得这很混乱..
提前致谢。
对于第一个,x^2+x+1
不是 O(x)
,因为无论 x
变得多大,第一个表达式的增长速度都比第二个快。通常,x^2+x+1
会被称为 O(x^2)
("quadratic"),因为 x^2
是主导词。
对于第二个,xlogx
是 O(x^2)
因为第二个表达式至少和第一个一样快。示例约束为 c=1
和 x>0
。虽然这是一个过于保守的表达,一般来说 xlogx
会被说成 O(xlogx)
("linearithmic"),它本身的复杂性 class.
关于大 O 符号的维基百科文章列出了其他常见的 named complexities。虽然有分析函数和确定其 Big-O 复杂度的通用方法,但熟悉常见方法并识别表达式或算法中最相关的方法通常会更快。通常您只会遇到一些常见的复杂性 classes。按照复杂性递增的顺序,这些是:
- 常量 (
1
)
- 对数 (
logx
)
- 线性(
x
)
- 线性(或通常只是 "n-log-n")(
xlogx
)
- 多项式(
x^c
for c>1
)
- 指数(
c^x
对于 c>1
)
我的教科书在解释 big-o 的工作原理方面非常糟糕,几乎没有提供没有细节的示例。
我有一些练习题正在尝试尝试,但多亏了教科书 我不明白如何解决这些问题。
这是一个:
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
我该如何解决这些问题?从我网上收集的资料和教科书来看,我觉得这很混乱..
提前致谢。
对于第一个,x^2+x+1
不是 O(x)
,因为无论 x
变得多大,第一个表达式的增长速度都比第二个快。通常,x^2+x+1
会被称为 O(x^2)
("quadratic"),因为 x^2
是主导词。
对于第二个,xlogx
是 O(x^2)
因为第二个表达式至少和第一个一样快。示例约束为 c=1
和 x>0
。虽然这是一个过于保守的表达,一般来说 xlogx
会被说成 O(xlogx)
("linearithmic"),它本身的复杂性 class.
关于大 O 符号的维基百科文章列出了其他常见的 named complexities。虽然有分析函数和确定其 Big-O 复杂度的通用方法,但熟悉常见方法并识别表达式或算法中最相关的方法通常会更快。通常您只会遇到一些常见的复杂性 classes。按照复杂性递增的顺序,这些是:
- 常量 (
1
) - 对数 (
logx
) - 线性(
x
) - 线性(或通常只是 "n-log-n")(
xlogx
) - 多项式(
x^c
forc>1
) - 指数(
c^x
对于c>1
)