时间复杂度的可加性?
Additivity of time complexity?
我目前正在为学校做一个项目,我在这个项目中有时间复杂度限制。我还在开始学习编程,所以对这个问题的道歉是愚蠢的。
本质上,假设我有一个约束,即我的程序必须满足时间复杂度 O(n^2 + mlogm),其中 n 和 m 是输入的一些大小。这是否意味着这是我程序的任何特定组件可以 运行 的最大时间复杂度?也就是说,如果我有很多 O(n^2 + m) 函数,但是 O(n^2 + mlogm) 中最复杂的函数 运行s,我是否仍然满足这个时间限制?例如,如果我的程序 运行 按顺序
执行以下功能
函数A
功能B
函数C
函数D
而函数A、B、C都是O(n^2 + m)或者小于时间复杂度限制的东西,但是最后一个函数是O(n^2 + mlogm),我的程序会不会在时间限制?总的复杂度会不会是 O(n^2 + m ^ n^2 + m ^ n^2 + m + n^2 + mlogm)?
我仍在学习时间复杂度,因此非常感谢对此的任何帮助。非常感谢。
如果您按顺序执行不同的函数,您只需选择最差的复杂度,这就是整体复杂度。
例如,如果 fnA
是 O(n)
而 fnB
是 O(<sup>n<sup>n!</sup></sup>)
,那么 fnA
的任何影响都会被 fnB
完全 淹没 ,假设它们是 运行顺序(不嵌套)。
你的情况,你的函数final满足要求,前三个更好,所以整体复杂度是final的。
我目前正在为学校做一个项目,我在这个项目中有时间复杂度限制。我还在开始学习编程,所以对这个问题的道歉是愚蠢的。
本质上,假设我有一个约束,即我的程序必须满足时间复杂度 O(n^2 + mlogm),其中 n 和 m 是输入的一些大小。这是否意味着这是我程序的任何特定组件可以 运行 的最大时间复杂度?也就是说,如果我有很多 O(n^2 + m) 函数,但是 O(n^2 + mlogm) 中最复杂的函数 运行s,我是否仍然满足这个时间限制?例如,如果我的程序 运行 按顺序
执行以下功能函数A
功能B
函数C
函数D
而函数A、B、C都是O(n^2 + m)或者小于时间复杂度限制的东西,但是最后一个函数是O(n^2 + mlogm),我的程序会不会在时间限制?总的复杂度会不会是 O(n^2 + m ^ n^2 + m ^ n^2 + m + n^2 + mlogm)?
我仍在学习时间复杂度,因此非常感谢对此的任何帮助。非常感谢。
如果您按顺序执行不同的函数,您只需选择最差的复杂度,这就是整体复杂度。
例如,如果 fnA
是 O(n)
而 fnB
是 O(<sup>n<sup>n!</sup></sup>)
,那么 fnA
的任何影响都会被 fnB
完全 淹没 ,假设它们是 运行顺序(不嵌套)。
你的情况,你的函数final满足要求,前三个更好,所以整体复杂度是final的。