在下面,假设我们正在使用无限磁带的图灵机。
在向某人解释时间复杂性的概念以及为什么要相对于实例的输入大小对其进行度量时,我偶然发现了以下说法:
[..]例如,很自然,与将两个整数与3位相乘相比,您需要更多的步骤来将两个整数与100000位相乘。
这项主张令人信服,但不知何故。在我遇到的所有算法中,输入大小越大,您需要的步骤就越多。换句话说,时间复杂度是输入大小的单调递增函数。
时间复杂度始终是输入大小增加的函数吗?如果是这样,为什么会这样呢?除了挥舞手外,还有其他证据吗?
在下面,假设我们正在使用无限磁带的图灵机。
在向某人解释时间复杂性的概念以及为什么要相对于实例的输入大小对其进行度量时,我偶然发现了以下说法:
[..]例如,很自然,与将两个整数与3位相乘相比,您需要更多的步骤来将两个整数与100000位相乘。
这项主张令人信服,但不知何故。在我遇到的所有算法中,输入大小越大,您需要的步骤就越多。换句话说,时间复杂度是输入大小的单调递增函数。
时间复杂度始终是输入大小增加的函数吗?如果是这样,为什么会这样呢?除了挥舞手外,还有其他证据吗?
Answers:
时间复杂度始终是输入大小增加的函数吗?如果是这样,为什么会这样呢?除了挥舞手外,还有其他证据吗?
令表示输入大小。要读取整个输入,图灵机已经需要步。因此,如果您假设某个算法必须读取其整个输入(或者对于某个常量,则为),那么您最终总是会获得至少线性运行时间。
用“单调递减的运行时间函数”定义算法的问题是,您必须以某种方式定义的运行时间。您必须将其设置为某个有限值。但是对于,存在无限可能的值,因此最终得到的函数对于无限多个值都是常数。n > 1
亚线性算法可能对您很感兴趣,因为它不会读取整个输入。参见例如http://www.dcs.warwick.ac.uk/~czumaj/PUBLICATIONS/DRAFTS/Sublinear-time-Survey-BEATCS.pdf。
关系是有根据的,即自然数中没有无限的下降序列。由于(最坏情况)运行时函数映射到自然数,因此所有运行时函数都必须位于,也就是说,所有运行时函数(在限制范围内)都不得减少。Ω (1 )
就是说,平均运行时可以包含振荡组件,例如Mergesort。