Time complexity n在大oh复杂性中是什么意思?
在大Oh符号中,Time complexity n在大oh复杂性中是什么意思?,time-complexity,big-o,complexity-theory,Time Complexity,Big O,Complexity Theory,在大Oh符号中,n是什么意思?我看到了向量的输入大小和长度。如果是输入大小,是指计算机上的内存空间吗?我看到n经常与输入大小互换使用 大的例子哦, O(n)是线性运行时间 O(logn)是对数运行时间 代码复杂性分析示例,(我正在将输入n更改为m) 这是O(n)。n是什么意思?它需要多少内存?可能n向量中元素的平均数?那么,当n=3是单个数字时,您如何解释 n通常表示输入数据量 例如,以10个元素的数组为例。要迭代所有元素,需要十次迭代n为10 在您的示例中,n也是描述输入数据大小的值。如您所见
n
是什么意思?我看到了向量的输入大小和长度。如果是输入大小,是指计算机上的内存空间吗?我看到n
经常与输入大小互换使用
大的例子哦,
O(n)
是线性运行时间O(logn)
是对数运行时间
代码复杂性分析示例,(我正在将输入n
更改为m
)
这是O(n)。
n
是什么意思?它需要多少内存?可能n
向量中元素的平均数?那么,当n=3
是单个数字时,您如何解释 n
通常表示输入数据量
例如,以10个元素的数组为例。要迭代所有元素,需要十次迭代<在这种情况下,代码>n为10
在您的示例中,n
也是描述输入数据大小的值。如您所见,阶乘实现将需要n+1
迭代,因此此实现的渐进复杂性大约为O(n)
(注意:我省略了1,因为它不会对图片有太大的改变)。如果要增加传递给函数的变量n
,则需要更多的迭代来计算结果。O(1)描述了一种算法,该算法将始终在同一时间(或空间)内执行,而不管输入数据集的大小
O(N)描述了一种算法,其性能将线性增长,并与输入数据集的大小成正比
O(N^2)表示一种算法,其性能与输入数据集大小的平方成正比。这在涉及对数据集进行嵌套迭代的算法中很常见
我希望这能有所帮助。当有人说O(n)
时,n
可以根据上下文引用不同的东西。当n
所指内容不明显时,理想情况下人们会明确指出,但有几种约定:
n
的变量,O(n)
将引用该变量n
的变量且n
是O
符号中使用的唯一变量时,n
通常指输入的总大小n
开始,然后继续字母表(例如O(n*m)
),n
通常指第一个参数的大小,m
指第二个参数的大小,依此类推。然而,在我看来,在实际参数名称周围使用类似|
或len()
的东西通常更为清晰(例如O(| l1 |*| l2 |)
或O(len(l1)*len len(l2))
如果调用了l1
和l2
)v
通常用于表示顶点的数量,e
用于表示边的数量n
的变量,因此语句“This isO(n)
”几乎肯定是指参数n
的值。如果我们进一步假设我们只计算乘法的次数或循环体执行的次数(或者我们测量时间并假设乘法需要恒定的时间),那么该语句是正确的
在编辑的代码中,不再有名为
n
的变量。所以现在“这是O(n)
”这句话肯定是指其他东西。通常情况下,我们会假设它是指输入的大小(即m
中的位数,即log m
)。但是,该语句显然是错误的(它应该是O(2^n)
,而不是O(n)
),因此原始语句清楚地引用了n
的值,您通过编辑代码来打破它。在这种情况下,代码中实际上有一个名为n
的变量,我想说,假设它引用的是那个变量是安全的。这里更令人困惑的是,它们都是n
。但是我认为函数中的O(n)
和n
是不同的东西?您发布的代码的运行时在参数值上是线性的,而不是它的大小。因此,如果您将O(n)
解释为在本例中引用输入的大小,则“this is O(n)”语句将为false。等等,什么?为什么运行时依赖于参数的值,比如n=3或n=5?它不应该取决于它的大小,也就是输入向量中元素的数量吗?什么输入向量?函数的参数为单个整数。运行时取决于该值,因为迭代次数直接取决于该值。什么是“输入数据量”,“输入数据大小”?它只是指列表、矩阵或张量中的元素数吗?@user13985是的,比如要处理的文件的大小、数组中的元素数或文本的长度。我倾向于将大小视为内存大小,我想这就是我的困惑所在。也许他们应该更直截了当地称之为元素数(我认为在大Oh符号中没有类似于O(2n)的东西。我们总是去掉前导常数,在这种情况下只使用有效项n。它是O(n)而不是O(2n)。
def factorial(m):
product = 1
for i in range(1, m+1):
product = product*i
return product