坚持我的作业证明或反驳h(f(n))= O(h(g(n)))

时间:2012-04-09 00:18:35

标签: algorithm big-o big-theta

我理解大哦和theta。问题如下, 证明或反证:如果h(n)是递增函数,则f(n)= theta(g(n)=> h(f(n))= O(h(g(n)))h(n1)当n1> n2时,> h(n2)

所以,在上面的问题中,我被困在了解增加功能的点上。如果我试图找到一些功能来反驳它,比如说,n和2n这是可以接受的吗?因为大哦代表快速增长,而不仅仅是一个常数因素,但没有定义h(n)函数的这种条件(我的意思是,我认为>字面意义上大于这里,是错误的吗?)

另外,即使我发现h(f(n))之类的东西以与h(g(n))相同的速率增长,这意味着它们本质上是theta,它们仍然是大的哦。因为theta的松散束缚很大哦,在这种情况下,我永远不能反驳上述陈述。

如果我的理解在通过序列的某个时刻偏离,请纠正我。谢谢!

2 个答案:

答案 0 :(得分:0)

我总是通过重新阅读然后写下Theta(f)和O(f)的定义来开始这样的问题。如果你能找到一个反驳断言的简单例子,你就不必证明什么。我喜欢非常快速增长的h(x)的想法,例如h(x)= 2 ^ x。如果你有例如f(x)= 2x,g(x)= x,h(f(x))= 2 ^(2x),h(g(x))= 2 ^ x和h(f(x))/ h( g(x))= 2 ^ x - 尝试将这些插入到您的定义中,看看会发生什么。请注意,由于f(x)= 2g(x),至少按照我的定义,你有f(x)= Theta(g(x))和g(x)= Theta(f(x))

答案 1 :(得分:0)

通过采用满足给定f(n) = 2n的{​​{1}}和g(n) = n,我找到了一个解决此问题的矛盾示例。

现在,让f(n) = theta(g(n)),这意味着h(x) = 2^xh(f(n)) = 2^2n = 4^n

根据定义,这意味着h(g(n)) = 2^n。因此反驳了。

我从来不知道矛盾的例子足以反驳。我正在尝试一种更正式的方式来证明它并且弄乱了细节。

感谢。