微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

证明复杂度证明的顺序

如何解决证明复杂度证明的顺序

表明如果f(n)为Ω(n ∗ g(n)),则f(n)并非O(g(n)。

假设f(n)为Ω(n * g(n)),f(n)为O(g(n))。要表现出矛盾。该方法是找到违反定义的n值。 证明:f(n)为Ω(n * g(n))表示存在正值C和k,使得n> k表示f(n)≥C ∗ n ∗ g(n)。 f(n)为O(g(n))表示存在正值C'和k',使得n> k'表示f(n)≤C ∗ g(n)。

解决方法

假设如下:Omega表示下限复杂度,Big Oh表示上限复杂度,此问题可以通过两者的定义解决。

如果f(n)是Omega(n * g(n)),则这(从定义上)意味着存在n 0 和M 0 ,这样对于所有n> n 0 ,f(n)> M 0 * n * g(n)。

如果f(n)为O(g(n)),则这(从定义上)意味着存在n 1 和M 1 ,例如对于所有n> n 1 ,f(n) 1 * g(n)。

让n 2 = max(n 0 ,n 1 ),然后对所有n> n 2 ,M 1 * g(n)> f(n)> M 0 * n * g(n)。

我们现在将重点放在没有功能的两个复杂性上。我们有M 1 * g(n)> M 0 * n * g(n),因此M 1 > M 0 * n,因此n 1 / M 0

现在,无论M 1 和M 0 取什么值,n 1 / M 0 并非对所有n> n 2 都是正确的,如果我们假设两个复杂度都是正确的,则这是必需的。

因此,我们陷入了矛盾,所以两种复杂性不可能一次就成立。

祝你学习顺利。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。