跳至主要內容

大 O 和大 Θ 表示法的基础理解与证明示例

AI悦创原创数据结构与算法数据结构与算法大约 4 分钟...约 1171 字

你好,我是悦创。

理解 big-Θ

首先,你可以把 big-Θ 记号看作一种“夹逼”。意思是说,对于一个算法的时间复杂度,我们知道它不会快得超过一个界限(即下界),但也不会慢得超过另一个界限(即上界)。

用生活中的例子来说,想象你在烹饪。如果我们说炒一个菜需要Θ(10 分钟),那意味着这道菜最快需要 10 分钟,最慢也是 10 分钟。但是,如果我们说做一个完整的晚餐是 O( 1 小时),这意味着无论你怎么做,你最多只会用 1 小时。

例子:证明 (3n2+4n+53n^2 + 4n + 5) 是 (Θ(n2)(\Theta(n^2) )

证明上界 (即证明 (O(n2))O(n^2))

我们希望证明存在常数 c 和 (n0n_0) 使得当 (n>n0n > n_0 ) 时, (3n2+4n+5c×n23n^2 + 4n + 5 \leq c \times n^2)。

考虑 (n > 1),有:

(3n2+4n+53n2+4n2+5n2=12n23n^2 + 4n + 5 \leq 3n^2 + 4n^2 + 5n^2 = 12n^2)

这里,我们选择 (c=12c = 12 ) 和 (n0=1n_0 = 1 ),所以 (3n2+4n+53n^2 + 4n + 5) 是 (O(n2)O(n^2))。

证明下界 (即证明 (Ω(n2)\Omega(n^2)))

我们希望证明存在常数 cc' 和 (n0n_0' ) 使得当 (n>n0n > n_0') 时, (3n2+4n+5c×n23n^2 + 4n + 5 \geq c' \times n^2 )。

考虑 (n>1n > 1),因为 (4n4n) 和 (5) 都是正的,所以:

(3n2+4n+53n23n^2 + 4n + 5 \geq 3n^2)

这里,我们选择 (c=3c' = 3) 和 (n0=1n_0' = 1),所以 (3n2+4n+53n^2 + 4n + 5 ) 是 (Ω(n2)\Omega(n^2))。

结论

因为 (3n2+4n+53n^2 + 4n + 5 ) 同时是 (O(n2)O(n^2)) 和 (Ω(n2)\Omega(n^2)),所以它是 (Θ(n2)\Theta(n^2))。

希望这个详细的例子可以帮助你理解 big-Θ 的概念及其证明方法。

详情

Big OBig Θ 是计算机科学中用来描述算法复杂性的符号。它们可以帮助我们理解算法在最坏、最好或平均情况下的性能。

  1. Big-O (大O表示法)

Big-O 表示上界,即算法的运行时间或空间复杂性的最坏情况。

要证明 f(n) = O(g(n)),你需要确保存在正常数 ( c ) 和 ( n0n_0 ),使得对于所有 ( nn0n \geq n_0 ),都有 ( f(n)c×g(n)f(n) \leq c \times g(n) )。

证明例子:

假设 ( f(n)=3n2+2n+5f(n) = 3n^2 + 2n + 5 ),我们想证明它是 ( O(n2)O(n^2) )。

选择 ( c=6c = 6 ) 和 ( n0=1n_0 = 1 )。

对于所有的 ( n1n \geq 1 ):

( f(n)=3n2+2n+5f(n) = 3n^2 + 2n + 5 )

( 3n2+2n2+5n2\leq 3n^2 + 2n^2 + 5n^2 )(这里我们故意使每个项都变大)

( =10n2= 10n^2 )

但 ( 10n26n210n^2 \leq 6n^2 ) 不成立。尝试其他常数,例如 ( c=11c = 11 )。

( f(n)11n2f(n) \leq 11n^2 ) 对于所有 ( n1n \geq 1 ) 是成立的,所以 ( f(n)=O(n2)f(n) = O(n^2) )。

  1. Big-Θ (大 Theta 表示法)

Big Θ 描述了算法的严格界限。如果 f(n) = Θ(g(n)),这意味着 f(n)O(g(n))Ω(g(n))(Ω 表示下界)。

要证明 f(n) = Θ(g(n)),你需要确保存在常数 ( c1c_1 )、( c2c_2 ) 和 ( n0n_0 ),使得对于所有 ( nn0n \geq n_0 ),都有 ( c1×g(n)f(n)c2×g(n)c_1 \times g(n) \leq f(n) \leq c_2 \times g(n) )。

证明例子:

对于之前的 ( f(n)=3n2+2n+5f(n) = 3n^2 + 2n + 5 ),我们想证明它是 ( Θ(n2)Θ(n^2) )。

已经证明了 ( f(n)11n2f(n) \leq 11n^2 ) 对于某个常数 ( c2c_2 )。

现在,让我们证明下界。为简单起见,选择 ( c1=3c_1 = 3 ) 和相同的 ( n0=1n_0 = 1 ):

对于所有的 ( n1n \geq 1 ):

( f(n)=3n2+2n+5f(n) = 3n^2 + 2n + 5 )

( 3n2\geq 3n^2 )(忽略其他较小的项)

因此,对于所有 ( n1n \geq 1 ),有 ( 3n2f(n)11n23n^2 \leq f(n) \leq 11n^2 )。

所以 ( f(n)=Θ(n2)f(n) = Θ(n^2) )。

总结:大 O 和大 Θ 证明都涉及到为给定的函数选择适当的常数,以确保函数的增长率与我们希望的复杂性类似。大 O 关心上界,而大 Θ 关心上界和下界都匹配给定的复杂性。

欢迎关注我公众号:AI悦创,有更多更好玩的等你发现!

公众号:AI悦创【二维码】

AI悦创·编程一对一

AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++ 辅导班、java 辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。当然,还有线下线上摄影课程、Photoshop、Premiere 一对一教学、QQ、微信在线,随时响应!微信:Jiabcdefh

C++ 信息奥赛题解,长期更新!长期招收一对一中小学信息奥赛集训,莆田、厦门地区有机会线下上门,其他地区线上。微信:Jiabcdefh

方法一:QQopen in new window

方法二:微信:Jiabcdefh

上次编辑于:
贡献者: AndersonHJB
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度