嘿,我有一个问题。
说t(n) = O(n log(n))
,你知道这是真的。
然后你给出这些陈述并告诉他们是否必须是真或假。 t(n) = n^4
和t(n) = O(N^4)
语句t(n) = n^4
为false,而语句t(n) = O(N^4)
为true。为什么呢?
答案 0 :(得分:1)
您必须记住,当您撰写t(n) = O(n log(n))
和t(n) = O(N^4)
时,其实际含义是t(n)
O(...)
中的它等于它(因为O(...)
是一组函数,函数不能等于一组函数)。但是,当您撰写f(n) = n^4
时,这意味着f(n)
等于n^4
。
现在f(n)
位于O(n log n)
,O(n^4)
也位于O(n^4)
,因为O(n log n)
是n^4
的超集。但是,它不能等于n^4
,因为O(n log n)
不在{{1}}中。
答案 1 :(得分:0)
Big O表示法的概念是它表示时间的抽象函数,它关注算法中最慢的部分并忽略影响执行时间的事情(即t(n))但实际上并没有做出巨大的影响差。
例如,如果你的函数在一组大小为n的项目上运行并且只是循环执行它们执行一些计算,那么你会说t(n)= O(n)。假设您根据某些标准仅对少数元素执行了某些操作,您仍然会说t(n)= O(n)但实际所用时间t(n)不会直接与n的函数关系,因此t (n)= nx不成立。
答案 2 :(得分:0)
查看this中的第二个等式。根据这个等式,t(n)= n ^ 4 = O(n ^ 4)是显而易见的。
t(n)= O(n log n)是假的,因为∀M> 0,x,∃n> x,t(n)= n ^ 4> M(n log n)。 (如果n> log n且n> M,n ^ 4> M * n ^ 3 = M(n * n ^ 2)> M(n * log n)= M(n log n),并且n> ;当(大致)n> 5)
时记录n