使用Big O排序函数列表

时间:2015-02-03 02:47:25

标签: algorithm big-o analysis big-theta

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

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

1/n

2^100

log(log(n))

n^.5 , 3n^.5  

这两个是分组的,但我不确定如何发现一个是另一个的大...这是我的同伴向我建议

2^(log(n)), 5n

任何和所有的帮助都表示赞赏。我正在努力绕过Big O,Theta和其他人。

1 个答案:

答案 0 :(得分:0)

这种表示法与时间复杂度理论有关,问题大小(即“解决方案”空间的大小)是输入参数大小的函数。

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

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

  • 可解决的恒定时间 - O(1)
  • 可解决的日志时间 - O(log(n))
  • 多项式时间可解 - O(n ^ 2)
  • 可以求解的超多项式时间(多于多项式)
  • 可解决的指数时间 - O(2 ^ poly(n))

如果您想确定它们的排名方式,请选择一组N = {1 ... n}并将此组的每个元素插入到每个函数中,并绘制它们单独增加的速度。