具有 2 个变量的大 O 表示法。给定 m <= n,我们可以减少 O(nm) 吗?
Big-O notation with 2 variables. Given m <= n, can we reduce O(nm)?
假设m <= n
,你能把O(nm)
减少到O(n)
吗?
我认为不会,因为 m
可以等于 n
在 m < n
的情况下,我认为 O(nm)
可以减少到 O(n)
因为 m
严格小于 n
因此随着 n
接近无穷大
变得微不足道
我的上述假设是否正确?如果是这样,为什么?更正式的展示方式是什么?
如果m
是一个常量(例如:2
)或小于一个常量,你是对的:O(mn) = O(n)
.
但是因为你写了m < n
,我想m
也会无限大,但是比n
慢。
在这种情况下,你错了。
以m = log(n)
为例,一切都应该很清楚。
O(mn) = O(n*log(n))
不同于O(n)
。
O(m+n)
是这样,但 O(mn)
不是。
根本无法将 O(m*n)
减少到 O(n)
。如果m
上没有边界条件。
m < n
表示m可以是0
到n-1
之间的任何值。
假设 m
是有界的,它的值不会增长超过 C
m <= C
在这种情况下
O(m*n) can be reduced to O(n)
P.S :一定要读这个 plain english big o notaion
给定 m <= n
,关于 O(mn)
,你只能说它是最坏的 O(n**2)
。
如果 m
受常数限制,则 O(mn)
变为 O(n)
假设m <= n
,你能把O(nm)
减少到O(n)
吗?
我认为不会,因为 m
可以等于 n
在 m < n
的情况下,我认为 O(nm)
可以减少到 O(n)
因为 m
严格小于 n
因此随着 n
接近无穷大
我的上述假设是否正确?如果是这样,为什么?更正式的展示方式是什么?
如果m
是一个常量(例如:2
)或小于一个常量,你是对的:O(mn) = O(n)
.
但是因为你写了m < n
,我想m
也会无限大,但是比n
慢。
在这种情况下,你错了。
以m = log(n)
为例,一切都应该很清楚。
O(mn) = O(n*log(n))
不同于O(n)
。
O(m+n)
是这样,但 O(mn)
不是。
根本无法将 O(m*n)
减少到 O(n)
。如果m
上没有边界条件。
m < n
表示m可以是0
到n-1
之间的任何值。
假设 m
是有界的,它的值不会增长超过 C
m <= C
在这种情况下
O(m*n) can be reduced to O(n)
P.S :一定要读这个 plain english big o notaion
给定 m <= n
,关于 O(mn)
,你只能说它是最坏的 O(n**2)
。
如果 m
受常数限制,则 O(mn)
变为 O(n)