我对渐近符号进行了测试,并且有一个问题:
请考虑以下事项:
O(o(f(n))= o(f(n))
我弄错了(不记得我写的是什么),但我认为是这样的:
对于任何函数g(n)= o(f(n)),那里 是函数h(n)= o(f(n))所以 h(n)= O(f(n))。
这是对的吗?
而对于(2),我并不完全确定。有人可以帮我这个吗?
提前致谢。
答案 0 :(得分:1)
我认为他们试图提出一个关于Big O和小o渐近符号之间关系的问题。
A)Little O bounded函数的大O边界减少到/实现了该函数的Little O界限。
B)是的。 Big O是一个不那么“严格”的界限,因为它规定有一个M和一个x0使得f(n)<= M * g(n)对于x> = x0,而Little O规定所有正M,有一个x0,使得f(n)由M * g(n)上界。
因此,大O的“an M”是小O的“全M”的子集,因此O(o(f(n))等价于o(f(n))。
对于实际的数学而不是我的弱ascii,请参阅wikipedia page
答案 1 :(得分:0)
简明英文的含义: 严格大于f(n)的函数的上界严格大于f(n) 您的陈述可以写成:对于任何函数g(n)= o(f(n)),存在h(n)= O(g(n)),这意味着h(n)也是o(f(n) ))=&gt; O(g(n))= o(f(n))=&gt; O(o(f(n)))= o(f(n)) 是的,声明是正确的。 (当然上面的陈述假设所有正确的常量和“严格更大的使用是可读性和理解:它应该是”严格的上限“)
答案 2 :(得分:0)
对不起,如果这看起来有点偏僻,但我认为这是一个狡猾的问题(正如亚历山大C提到的那样),因为这是一个相当大的滥用符号。
通常教授big-O符号的方式(特别是在计算机科学课中)就好像O(f(n))是一个函数。这应引起一些警钟,因为语句“n = O(n)”和“2n = O(n)”都是正确的,但“n = 2n”则不是。如果我们想说“f(n)是g(n)的大-O”,我们技术上不应该说“f(n)= O(g(n))”,而应该说“f(n) )是 O(g(n))“的元素。前者只是一种方便的简写。
回到实际的问题,O(o(f(n)))并不是真正的意义(或者至少我从未见过一组函数的大O的正式定义) 。但我想解释它的合理方式是按照enjay的答案,g(n)= o(f(n))。