我在完全理解如何证明以下某些陈述时遇到了问题。
例如,我有一个声明:n^2logn = O(n^2)
。
如果我错了,请纠正我,但这表明n^2
是bigO
的{{1}}。这意味着n^2logn
的增长速度超过n^2
。现在我们将如何证明这一点?我假设我需要使用感应证明,我试图使用但是在这个过程中卡住了。我可以将此声明重写为n^2logn
吗?
是否可以使用归纳法反驳某些内容?例如,反驳n^2logn <= n^2
。或者通过简单地表明任意值(例如大于2)不满足该陈述来反驳该陈述是否有效?
最后为了清楚起见,bigTheta声明方程在增长正确时是等价的吗?
答案 0 :(得分:5)
n^2logn
声明O(n^2)
在n^2
中直观地表示n ^ 2logn的增长速度最快与n>N
一样快 - (这种说法是错误的)。
根据定义,这意味着有一些常数c,N,对于每个c*n^2logn <= n^2
:N,c
通过矛盾反驳非常简单。
假设(错误地)声明是真的,让c*n^2logn <= n^2
c*logn <= 1
logn <= 1/c
成为我们的常数:
c
但是n>N
是不变的,并且有一些logn > 1/c
使n! < n^n
- 矛盾。
您可以通过展示其他内容来反感,例如 - 如果您通过归纳显示n! = n^n
- 您实际上反驳了声明{{1}}
关于大theta,我试图在帖子Big Theta Notation - what exactly does big Theta represent?
中详细解释这个问题答案 1 :(得分:0)
我现在正在学习算法课程,所以我可以回答其中的一些问题,当我回家看看我的笔记时,我可以回答其余的问题。
例如我有一个声明:n ^ 2logn = O(n ^ 2)。如果我错了,请纠正我,但是这表明n ^ 2是n ^ 2logn的bigO。意味着n ^ 2比n ^ 2logn增长得快。
你是对的。
现在我们将如何证明这一点?我假设我需要使用感应证明,我试图使用但是在这个过程中卡住了。我可以将此语句重写为n ^ 2logn&lt; = n ^ 2?
是否可以使用归纳法反驳某些内容?例如,反驳n!= O(n ^ n)。或者通过简单地显示一个任意值让大于2不满足该陈述来反驳该陈述是否有效?
我会在几个小时内回复你。
最后为了清楚起见,bigTheta声明方程在增长正确时是等价的吗?
这意味着它们只是一个常数不同。换句话说,如果将它乘以常数,它将始终低于它所界定的函数,如果将它乘以另一个常数,它将始终高于它所界定的函数。
编辑:
为了测试大O,你在数学上表明代表算法增长的函数小于或等于一个常数乘以大O函数。
Big Omega显示该算法大于或等于大的Omega函数。
Big Theta可以通过两种方式证明:
证明大O和大欧米茄。
假设算法为f(n)且大Theta函数为g(n)。为了证明大的θ,你必须证明当n接近无穷大时f(n)/ g(n)的极限是一些常数,即,它既不是0也不是无穷大。
我希望有所帮助。如果您有更多问题,请告诉我,我们非常乐意为您提供帮助。