使用 Big O 排序函数列表

Ordering a list of Functions using Big O

我目前正在做一些算法作业,我有几个问题想澄清一下,以便我可以确保我所做的工作是正确的。

其中一个问题要求我们用大 O 符号比较 ~20 个函数,然后将彼此为 big-theta 的函数组合在一起。为了订购它们,我从 0 到 100 绘制了每一个图表,并比较了这些图表以找出哪个比其他图表更好。这是比较的正确方法吗?如果有更简单的方法,我该怎么办?我如何判断一个函数是否是另一个函数的 big-theta?例如,我目前拥有的一小部分列表是这样的:

1/n

2^100

log(log(n))

n^.5 , 3n^.5  

这两个是分组的,但我不确定如何发现一个是另一个的 big-theta.. 是我的 class 伙伴向我建议的

2^(log(n)), 5n

感谢任何和所有的帮助。我正在努力思考 Big O、Theta 和类似的东西。

这个符号与时间复杂度理论有关,以及问题大小(即 'solution' space 的大小)是输入参数大小的函数。

你的问题更像是一道数学题,更适合数学交流。话虽如此,this Wikipedia article 对您来说是一个很好的起点。

一般问题分为(从最简单到最复杂):

  • 常数时间可解 - O(1)
  • 对数时间可解 - O(log(n))
  • 多项式时间可解 - O(n^2)
  • 超多项式时间可解(大于多项式)
  • 指数时间可解 - O(2^poly(n))

如果您想确定它们的排名方式,请选择一个集合 N = {1...n} 并将该集合的每个元素插入每个函数并绘制它们各自增加大小的速度。