Big o 大O表示法

Big o 大O表示法,big-o,Big O,嘿,我有个问题。 假设t(n)=O(n log(n))你知道这是真的 然后你给出了这些陈述,告诉他们是真是假t(n)=n^4和t(n)=O(n^4) 语句t(n)=n^4为假,而语句t(n)=O(n^4)为真。为什么?大O表示法的思想是,它代表了时间的抽象函数,它关注算法中最慢的部分,忽略了影响执行时间的因素(即t(n)),但实际上并没有造成很大的差异 对于exmaple,如果您的函数处理一组大小为n的项,并且只是在它们之间循环执行一些计算,那么您会说t(n)=O(n)。假设您根据某些标准仅对少

嘿,我有个问题。 假设t(n)=O(n log(n))你知道这是真的

然后你给出了这些陈述,告诉他们是真是假<代码>t(n)=n^4和
t(n)=O(n^4)


语句
t(n)=n^4
为假,而语句
t(n)=O(n^4)
为真。为什么?

大O表示法的思想是,它代表了时间的抽象函数,它关注算法中最慢的部分,忽略了影响执行时间的因素(即t(n)),但实际上并没有造成很大的差异


对于exmaple,如果您的函数处理一组大小为n的项,并且只是在它们之间循环执行一些计算,那么您会说t(n)=O(n)。假设您根据某些标准仅对少数元素执行了某些操作,您仍然会说t(n)=O(n),但实际花费的时间t(n)不会直接是n的函数,因此t(n)=nx不会成立。

大O表示法的思想是它代表了时间的抽象函数,它关注于算法中最慢的部分,忽略了影响执行时间的因素(例如t(n)),但实际上并没有造成很大的差异


对于exmaple,如果您的函数处理一组大小为n的项,并且只是在它们之间循环执行一些计算,那么您会说t(n)=O(n)。假设您根据某些标准仅对少数元素执行了某些操作,您仍然会说t(n)=O(n),但实际花费的时间t(n)不会是n的直接函数,因此t(n)=nx将不成立。

查看中的第二个等式。从这个方程中,t(n)=n^4=O(n^4)是显而易见的

t(n)=O(n log n)为假,因为∀M> 0,x,∃n> x,t(n)=n^4>M(n对数n)。
(如果n>logn和n>M,n^4>M*n^3=M(n*n^2)>M(n*logn)=M(n logn),当n>5时n>logn)

查看中的第二个等式。从这个方程中,t(n)=n^4=O(n^4)是显而易见的

t(n)=O(n log n)为假,因为∀M> 0,x,∃n> x,t(n)=n^4>M(n对数n)。
(如果n>logn和n>M,n^4>M*n^3=M(n*n^2)>M(n*logn)=M(n logn),并且n>logn(大致)n>5)

你必须记住,当你写
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 logn)
中,它也在
O(n^4)
中,因为
O(n^4)
O(n logn)
的超集。但是它不能等于
n^4
,因为
n^4
不在
O(n logn)

t(n)=O(n^4)
,它的实际意思是
t(n)
O(…)
中是,而不是等于它(因为
O(…)
是一组函数,一个函数不能等于一组函数)。然而,当你写
f(n)=n^4
时,这意味着
f(n)
等于
n^4


现在如果
f(n)
O(n logn)
中,它也在
O(n^4)
中,因为
O(n^4)
O(n logn)
的超集。但是它不能等于
n^4
,因为
n^4
不在
O(n logn)

中。这个问题没有意义。你问为什么O(n^4)!=NlogN说什么?
“堆栈溢出是一个免费的编程问答网站。”
这个问题毫无意义。你是在问为什么O(N^4)!=O(NlogN)说什么?
“堆栈溢出是一个免费的编程问答网站。”