【问题标题】:Additivity of time complexity?时间复杂度的可加性?
【发布时间】:2021-03-10 16:49:03
【问题描述】:

我目前正在为一个有时间复杂度限制的学校项目工作。我还在开始学习编程,所以对这个问题道歉是愚蠢的。

基本上,假设我有一个约束,即我的程序必须满足时间复杂度 O(n^2 + mlogm),其中 n 和 m 是一些输入大小。这是否意味着这是我的程序的任何特定组件可以运行的最大时间复杂度?也就是说,如果我有很多,比如说,O(n^2 + m) 函数,但最复杂的函数在 O(n^2 + mlogm) 中运行,我还能满足这个时间限制吗?例如,如果我的程序按顺序运行以下函数

函数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) 吗?

我仍在学习时间复杂度,因此非常感谢您对此提供任何帮助。非常感谢。

【问题讨论】:

标签: c time time-complexity


【解决方案1】:

如果您按顺序执行不同的功能,您只需选择最差的复杂度,这就是整体复杂度。

例如,如果 fnAO(n) 并且 fnBO(<sup>n<sup>n!</sup></sup>),那么 fnA 的任何影响都将完全淹没 fnB,假设它们是顺序运行(非嵌套)。

在你的情况下,你的函数最终满足要求,前三个更好,所以整体复杂度是最后一个。

【讨论】:

  • 非常感谢!
  • @tmako 请不要在收到回答后删除问题,这是对 paxdiablo 的不尊重,更不用说对网站的破坏性行为了。
猜你喜欢
  • 1970-01-01
  • 2014-04-29
  • 2016-02-13
  • 2012-08-14
  • 1970-01-01
  • 2013-09-12
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多