关于时间复杂度的几个典型证明
发布日期:2021-06-29 16:00:23 浏览次数:2 分类:技术文章

本文共 5068 字,大约阅读时间需要 16 分钟。

0x01 证明 O ( f ) + O ( g ) = O ( f + g ) O(f)+O(g) = O(f+g) O(f)+O(g)=O(f+g)

F ( n ) = O ( f ) F(n)=O(f) F(n)=O(f),则存在自然数 n 1 n_1 n1、正数 c 1 c_1 c1,使得任意自然数 n ≥ n 1 n\geq n_1 nn1,有:

  • F ( n ) ≤ c 1 f ( n ) F(n)\leq c_1f(n) F(n)c1f(n)

同理,令 G ( n ) = O ( g ) G(n)=O(g) G(n)=O(g),存在自然数 n 2 n_2 n2,正数 c 2 c_2 c2,使得对任意自然数 n ≥ n 2 n\geq n_2 nn2,有:

  • G ( n ) ≤ c 2 g ( n ) G(n)\leq c_2g(n) G(n)c2g(n)

c 3 = m a x ( c 1 , c 2 ) c_3=max(c_1,c_2) c3=max(c1,c2) n 3 = m a x ( n 1 , n 2 ) n_3=max(n_1,n_2) n3=max(n1,n2),则对所有的 n ≥ n 3 n\geq n_3 nn3,有:

  • F ( n ) ≤ c 1 f ( n ) ≤ c 3 f ( n ) F(n)\leq c_1f(n)\leq c_3f(n) F(n)c1f(n)c3f(n)
  • G ( n ) ≤ c 2 g ( n ) ≤ c 3 g ( n ) G(n)\leq c_2g(n) \leq c_3g(n) G(n)c2g(n)c3g(n)

故:

  • O ( f ) + O ( g ) = F ( n ) + G ( n ) ≤ c 3 f ( n ) + c 3 g ( n ) = c 3 ( f ( n ) + g ( n ) ) O(f)+O(g)=F(n)+G(n)\leq c_3f(n)+c_3g(n)=c_3(f(n)+g(n)) O(f)+O(g)=F(n)+G(n)c3f(n)+c3g(n)=c3(f(n)+g(n))

即得证。

0x02 证明 θ ( f ) + θ ( g ) = θ ( f + g ) \theta(f)+\theta(g) = \theta(f+g) θ(f)+θ(g)=θ(f+g)

F ( n ) = θ ( f ) F(n)=\theta (f) F(n)=θ(f),则存在自然数 n 1 n_1 n1和正数 c 1 c_1 c1 c 2 c_2 c2,使得任意自然数 n ≥ n 1 n\geq n_1 nn1,有:

  • c 1 f ( n ) ≤ F ( n ) ≤ c 2 f ( n ) c_1f(n)\leq F(n)\leq c_2f(n) c1f(n)F(n)c2f(n)

同理,令 G ( n ) = θ ( g ) G(n)=\theta (g) G(n)=θ(g),存在自然数 n 2 n_2 n2和正数 c 3 c_3 c3 c 4 c_4 c4,使得对任意自然数 n ≥ n 2 n\geq n_2 nn2,有:

  • c 3 g ( n ) ≤ G ( n ) ≤ c 4 g ( n ) c_3g(n)\leq G(n)\leq c_4g(n) c3g(n)G(n)c4g(n)

得:

  • c 1 f ( n ) + c 3 g ( n ) ≤ F ( n ) + G ( n ) ≤ c 2 f ( n ) + c 4 g ( n ) c_1 f(n)+c_3 g(n) \leq F(n) + G(n) \leq c_2 f(n) + c_4 g(n) c1f(n)+c3g(n)F(n)+G(n)c2f(n)+c4g(n)

存在 c 1 = c 3 c_1=c_3 c1=c3 c 2 = c 4 c_2=c_4 c2=c4,使得:

  • c 1 ( f ( n ) + g ( n ) ) ≤ F ( n ) + G ( n ) ≤ c 2 ( f ( n ) + g ( n ) ) c_1 (f(n)+g(n)) \leq F(n) + G(n) \leq c_2 (f(n) + g(n)) c1(f(n)+g(n))F(n)+G(n)c2(f(n)+g(n))

即得证。

0x03 证明 m a x ( θ ( f ) , θ ( g ) ) = θ ( f + g ) max(\theta (f),\theta (g))=\theta (f+g) max(θ(f),θ(g))=θ(f+g)

网上看到的一些类似证明,我觉得都不是很合理,可能本人智商欠费的原因QAQ

F ( n ) = θ ( f ) F(n)=\theta (f) F(n)=θ(f),则存在自然数 n 1 n_1 n1和正数 c 1 c_1 c1 c 2 c_2 c2,使得任意自然数 n ≥ n 1 n\geq n_1 nn1,有:

  • c 1 f ( n ) ≤ F ( n ) ≤ c 2 f ( n ) c_1f(n)\leq F(n)\leq c_2f(n) c1f(n)F(n)c2f(n)

同理,令 G ( n ) = θ ( g ) G(n)=\theta (g) G(n)=θ(g),存在自然数 n 2 n_2 n2和正数 c 3 c_3 c3 c 4 c_4 c4,使得对任意自然数 n ≥ n 2 n\geq n_2 nn2,有:

  • c 3 g ( n ) ≤ G ( n ) ≤ c 4 g ( n ) c_3g(n)\leq G(n)\leq c_4g(n) c3g(n)G(n)c4g(n)

得:

  • c 1 f ( n ) + c 3 g ( n ) ≤ F ( n ) + G ( n ) ≤ c 2 f ( n ) + c 4 g ( n ) c_1 f(n)+c_3 g(n) \leq F(n) + G(n) \leq c_2 f(n) + c_4 g(n) c1f(n)+c3g(n)F(n)+G(n)c2f(n)+c4g(n)

存在 c 1 = c 3 c_1=c_3 c1=c3 c 2 = c 4 c_2=c_4 c2=c4,使得:

  • c 1 ( f ( n ) + g ( n ) ) ≤ F ( n ) + G ( n ) ≤ c 2 ( f ( n ) + g ( n ) ) c_1 (f(n)+g(n)) \leq F(n) + G(n) \leq c_2 (f(n) + g(n)) c1(f(n)+g(n))F(n)+G(n)c2(f(n)+g(n))

显然的

  • c 1 ′ ( f ( n ) + g ( n ) ) ≤ m a x ( F ( n ) , G ( n ) ) ≤ F ( n ) + G ( n ) ≤ c 2 ( f ( n ) + g ( n ) ) c_1' (f(n)+g(n)) \leq max(F(n), G(n)) \leq F(n) + G(n) \leq c_2 (f(n) + g(n)) c1(f(n)+g(n))max(F(n),G(n))F(n)+G(n)c2(f(n)+g(n))

这里 c 1 ′ c_1' c1 1 2 c 1 \frac {1}{2}c_1 21c1即可。

0x04 证明 θ ( f ) ⋅ θ ( g ) = θ ( f ⋅ g ) \theta(f)\cdot \theta(g) = \theta(f\cdot g) θ(f)θ(g)=θ(fg)

F ( n ) = θ ( f ) F(n)=\theta (f) F(n)=θ(f),则存在自然数 n 1 n_1 n1和正数 c 1 c_1 c1 c 2 c_2 c2,使得任意自然数 n ≥ n 1 n\geq n_1 nn1,有:

  • c 1 f ( n ) ≤ F ( n ) ≤ c 2 f ( n ) c_1f(n)\leq F(n)\leq c_2f(n) c1f(n)F(n)c2f(n)

同理,令 G ( n ) = θ ( g ) G(n)=\theta (g) G(n)=θ(g),存在自然数 n 2 n_2 n2和正数 c 3 c_3 c3 c 4 c_4 c4,使得对任意自然数 n ≥ n 2 n\geq n_2 nn2,有:

  • c 3 g ( n ) ≤ G ( n ) ≤ c 4 g ( n ) c_3g(n)\leq G(n)\leq c_4g(n) c3g(n)G(n)c4g(n)

得:

  • c 1 f ( n ) ⋅ c 3 g ( n ) ≤ F ( n ) ⋅ G ( n ) ≤ c 2 f ( n ) ⋅ c 4 g ( n ) c_1 f(n)\cdot c_3 g(n) \leq F(n) \cdot G(n) \leq c_2 f(n) \cdot c_4 g(n) c1f(n)c3g(n)F(n)G(n)c2f(n)c4g(n)

即得证。

0x05 证明 θ ( m a x ( f ( n ) , g ( n ) ) ) = θ ( f + g ) \theta(max(f(n), g(n)))=\theta (f+g) θ(max(f(n),g(n)))=θ(f+g)

F ( n ) = θ ( f ) F(n)=\theta (f) F(n)=θ(f),则存在自然数 n 1 n_1 n1和正数 c 1 c_1 c1 c 2 c_2 c2,使得任意自然数 n ≥ n 1 n\geq n_1 nn1,有:

  • c 1 f ( n ) ≤ F ( n ) ≤ c 2 f ( n ) c_1f(n)\leq F(n)\leq c_2f(n) c1f(n)F(n)c2f(n)

同理,令 G ( n ) = θ ( g ) G(n)=\theta (g) G(n)=θ(g),存在自然数 n 2 n_2 n2和正数 c 3 c_3 c3 c 4 c_4 c4,使得对任意自然数 n ≥ n 2 n\geq n_2 nn2,有:

  • c 3 g ( n ) ≤ G ( n ) ≤ c 4 g ( n ) c_3g(n)\leq G(n)\leq c_4g(n) c3g(n)G(n)c4g(n)

得:

  • c 1 f ( n ) + c 3 g ( n ) ≤ F ( n ) + G ( n ) ≤ c 2 f ( n ) + c 4 g ( n ) c_1 f(n)+c_3 g(n) \leq F(n) + G(n) \leq c_2 f(n) + c_4 g(n) c1f(n)+c3g(n)F(n)+G(n)c2f(n)+c4g(n)

存在 c 1 = c 3 c_1=c_3 c1=c3 c 2 = c 4 c_2=c_4 c2=c4,使得:

  • c 1 ( f ( n ) + g ( n ) ) ≤ F ( n ) + G ( n ) ≤ c 2 ( f ( n ) + g ( n ) ) c_1 (f(n)+g(n)) \leq F(n) + G(n) \leq c_2 (f(n) + g(n)) c1(f(n)+g(n))F(n)+G(n)c2(f(n)+g(n))

显然的

  • c 1 ′ ( f ( n ) + g ( n ) ) ≤ θ ( m a x ( f ( n ) , g ( n ) ) ) ≤ F ( n ) + G ( n ) ≤ c 2 ( f ( n ) + g ( n ) ) c_1' (f(n)+g(n)) \leq \theta(max(f(n), g(n))) \leq F(n) + G(n) \leq c_2 (f(n) + g(n)) c1(f(n)+g(n))θ(max(f(n),g(n)))F(n)+G(n)c2(f(n)+g(n))

这里 c 1 ′ c_1' c1 1 2 c 1 \frac {1}{2}c_1 21c1即可。

转载地址:https://coordinate.blog.csdn.net/article/details/79425139 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:棋盘缺一角问题
下一篇:Python Pickle任意代码执行漏洞

发表评论

最新留言

能坚持,总会有不一样的收获!
[***.219.124.196]2024年04月23日 16时17分16秒