逆指数算法的Big O表示法

时间:2019-10-31 14:53:45

标签: algorithm time-complexity big-o

假设您有一个算法,其复杂度为n ^(-1/2),是一种科学算法,其中一个样本提供的信息不多,因此处理起来需要一定的时间,但要进行交叉引用却需要很多样本它更快。您可以将其表示为O(n ^(-1/2))吗?从理论上讲甚至可能吗? Tldr可以具有反指数的时间复杂度吗?

2 个答案:

答案 0 :(得分:1)

您可以使用以下集合定义O(n ^(-0.5)):

O(n ^(-0.5)):= {g(n):存在正常数c和N,使得对于n> N,0 <= g(n)<= cn ^(-0.5)

例如,函数n ^(-1)属于此集合。

但是,以上集合的所有元素都不是算法运行时间的上限。

请注意,对于任何常数c:

如果:n> c ^ 2然后:n ^(-0.5)* c <1。

这意味着对于足够大的输入,您的算法需要执行的操作少于一个简单操作。由于它必须执行自然次数的简单操作,因此我们只能执行0次操作-根本不执行任何操作。

答案 1 :(得分:0)

减少运行时间实际上没有任何意义(如果减少为零,甚至更少)。如果存在,您将找到添加虚拟元素并人为增加N的方法。

但是大多数算法至少具有O(N)复杂度(每一个数据元素都会影响最终解决方案);即使不是,只是N的表示形式变得越来越长,这最终会增加运行时间(如O(Log N))。