[英]Asymptotic Notation
这是从MIT开放式课程算法简介的分配中得出的关于渐近符号的问题:
对于以下每个陈述,确定对于渐近非负函数f和g ,它是始终为true , 从不为true或有时为true 。 如果它始终是对或永远都不是 ,请说明原因。 如果有时为true ,请提供一个示例为true,为假。
f(n) ≠ O(g(n)) and g(n) ≠ O(f(n)) (both are Big-O notes)
我认为那永远都不是真的 。 这是我的证明:
f(n) ≠ O(g(n))
=> f(n) = w(g(n)) (little-omega note)
=> g(n) = o(f(n)) (little-o note)
=> g(n) = O(f(n)) (big-O note)
结果与g(n) ≠ O(f(n)) (Big-O note)
相矛盾。 同样
g(n) ≠ O(f(n))
=> g(n) = w(f(n)) (little-omega note)
=> f(n) = o(g(n)) (little-o note)
=> f(n) = O(g(n)) (big-O note)
这与f(n) ≠ O(g(n)) (Big-O note)
相矛盾。
该解决方案说有时是正确的 :
For f(n) = 1 and g(n) = ||n*sin(n)|| it is true,
while for any f(n) = O(g(n)), e.g. f(n) = g(n) = 1, it is not true.
我的证明在哪里做错了? 另外,我无法理解解决方案。 ||n*sin(n)||
在我看来像是矢量规范 。
我认为n*sin(n)
只是表明它是不断变得大于&小的函数f(n) = 1
为正偶数为用于定义大O&从而恒定乘数的所有选择后续值f(n) ≠ O(g(n)) and g(n) ≠ O(f(n))
天真的选择的函数(例如g(n) = 2*sin(n)
在这里效果不好。 有人可能会认为这也会在f(n) = 1
周围保持交替,但是g(n) = O(f(n)) : M*f(n) > g(n) for M = 3
等
第一个是不正确的:从这个f(n) ≠ O(g(n))
出发,它并不遵循: f(n) = w(g(n))
。 这两个功能可能在某个点相交,然后拍打,另一个则变得更大(如果我使用简单的话)。
他们选择的函数就是这种情况:对于n <= 1,第一个f(n)> g(n),并且存在ns,其中g(n)> f(n)(例如pi / 2)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.