O(n log n)描述的函数类的名称是什么?


40

在“ Big O”中,通用符号具有通用名称(而不是说“某些常数的哦”):

O(1)为“常数”

O(log n)是“对数”

O(n)是“线性”

O(n ^ 2)是“二次方”

O(n * log n)是???

它只是“ n log n”还是像上面这样的特殊名称?


Answers:


52

这被称为线性时间,它是更一般的类(称为准线性)的特例。顾名思义,属于此类的算法几乎是线性运行的。事实上它们具有比其在运行算法复杂度较低ķ > 1O(nk)k>1


评论不作进一步讨论;此对话已转移至聊天
吉尔(Gilles)'所以


11

我一直听到O(n log n)被描述为“对数线性”,这对我来说似乎是正确的。


4
也就是说,一个或两个参考文献会很好。
拉斐尔

7

这个评论太长了,所以我写了一个答案。我没有将其添加到我的第一个答案中,因为很多人已经赞成我的第一个vanswer,并且我不确定他们也同意这个答案。

  • 我不认为线性方程组是一个公认的术语,正如对已接受答案的评论中所述。我用这个术语搜索了一些相当年轻的文章,一门CS课程以及Sedgewick的另一本书,其中使用了这个术语以及许多在线词典。
  • 我在两篇文章中找到了准线性一词:

    NQL
    CP Schnorr
    计算机器协会期刊,
    第25卷,第1期,1978年1月,第136-1,15页

并在Wikipedia中引用的一篇有关此Schorr文章的文章中。Schnorr引入了复杂度类别拟线性(QL)和不确定性拟线性(NQL)。
拟线性似乎也用于偏微分方程的理论中。

总而言之,似乎一个或多个维基百科希望为此功能提供名称,但该名称没有被广泛接受。但是即使到现在,在我看来,没有一个名字被广泛接受(除了我认为这是维基百科不应该进行的操纵)。我认为,如果有人将Wikipedia用于术语问题,则必须谨慎。并且对于此功能,它还不是足够的来源。我认为此函数唯一被广泛接受的名称是 n log n


1
虽然线性算术和对数线性的合法性值得商,,但我相信准线性是一个公认的术语。它似乎在研究论文中被广泛使用。
鲁卡

@Roukah是的,但这并不意味着完全相同的事情;拟线性的更普遍。—我看不出Wikipedia使用明确的名称,似乎没有更好的选择,并且在相当知名的来源中使用,即使它没有太多传播,也有什么问题。实际上,我想说的是,尽管它是非常普通的复杂性类,它仍然没有传播,这表明人们应该开始更多地使用它了!
大约

+1“此功能唯一广为接受的名称是n log n”-所有其他答案都很有趣且令人着迷,但我认为您可能是对的。我已经练习了几天的“线性运算”,但仍然没有成功。熟悉Big O的每个人都容易说,容易记住并且立即理解“登录”。我会考虑一下,但是我可能不得不接受这个答案。
GlenPeterson
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.