algorithm - 逆指数算法的大 O 表示法
问题描述
假设您有一个具有 n^(-1/2) 复杂度的算法,例如一个科学算法,其中一个样本没有提供太多信息,因此需要很长时间来处理它,但是要交叉引用的许多样本使它更快。你会把它表示为 O(n^(-1/2)) 吗?这在理论上是可能的吗?Tldr 你能有一个反指数时间复杂度吗?
解决方案
您可以使用此集合定义 O(n^(-0.5)) :
O(n^(-0.5)) := {g(n) : 存在正常数 c 和 N 使得 0<=g(n)<=cn^(-0.5),对于 n > N}。
例如,函数 n^(-1) 就属于这个集合。
然而,上述集合中的任何元素都不能成为算法运行时间的上限。
请注意,对于任何常数 c:
如果:n>c^2 那么:n^(-0.5)*c < 1。
这意味着您的算法对足够大的输入执行的简单操作少于一个。由于它必须执行自然数的简单操作,因此我们认为它只执行 0 次操作——什么都没有。
推荐阅读
- c# - 如何使用 c# 找到 GCD 和 LCM?
- c# - 在访问成员之前检查对象是否为空,或者分配非空替代
- c - c Open() 函数
- c# - 使用 .Net Core 从 SCCM 集合中添加/删除设备
- c# - 从交叉点获取实例
- widget - KIVY 根据另一个小部件位置更改小部件大小
- amazon-redshift - 临时表上的 distkey 和 sortkey - Redshift
- docker - 进程终止后如何停止docker-compose
- python - 使用来自另一台计算机的 python 脚本在新计算机上安装 Python?
- python-3.x - 将字符串添加到数组中会分别添加所有字符