时间复杂度O(n)和O(kn)如何相等?

时间:2014-05-21 05:00:21

标签: time-complexity

在处理时间复杂性时,我认为O(n)O(kn)相等。将常数k视为整数> 1.任何方式kn > n,对吗?

有人可以解释一下。我不是来自计算机科学背景。

2 个答案:

答案 0 :(得分:2)

Big O符号来自极限观点,它有一个非常具体的定义。

我们说一个函数f(x) is O(g(x))当且仅当x|f(x)| <= M * |g(x)|的值很大,其中M是常量且M > 0

此定义基本上意味着O(kn)O(n)的子集。当然,O(2n)中的算法总是比O(3n)中的另一个算法快,但它们都属于O(n)算法的大家族。

它们被认为是等价的,因为在处理无限大数时,没有人关心常数

Wikipedia link

答案 1 :(得分:1)

我已经评论过这应该迁移到cs.stackexchange.com(你会在那里找到关于Big O分析的更多细节),但以下是一个简短的答案:

Big O,Big Theta和Big Omega都处理随着输入大小增长而增长的事情。这是对事物的全貌。

高常数会影响运行时间,但增长率仍然是线性的。为了查看大图,常量被删除,即这种增长类型或功能族属于什么类型。在你的情况下,它是线性增长家庭。