让
假设图G(V,E)是无向并连通的。
我所做的是用(n *(n-1)/ 2)代替m,因为就节点数而言,这是最大可能的边缘。
所以,我发现它是真的,
但是,真正的答案是错误的。
有人可以从概念上解释与Big-Oh复杂性相比的意义吗?
答案 0 :(得分:3)
边缘m
的数量是否正确
m <= (n*(n-1)/2)
和
n*(n-1)/2 = (n^2-n)/2
这意味着问题中的推理产生了
m+n <= (n^2-n)/1+n = O(n^2)
与O(m)
具有相同的复杂性;然而,以明确考虑边数和节点数的方式说明算法的复杂性比使用(n^2-n)/2
的最坏情况边界更精确。
答案 1 :(得分:2)
答案: true
图表已连接=&gt; m >= n-1
=&gt; m = n-1+k
其中k >= 0
。
但m <= n(n-1)/2
因为如果每2个节点之间有一条边,则不需要更多边。 =&GT; n-1+k <= n(n-1)/2
=&gt; k <= (n-1)(n/2-1)
=&gt; k <= (n-1)(n-2)/2
。
所以,我们m = n - 1 + k
0 <= k <= (n-1)(n-2)/2
; k
表示超出连接所需最小数量的边数。
O(m+n) = O(n-1+k+n) = O(2n-1+k) = O(2n+k) = a
O(m) = O(n-1+k) = O(n+k) = b
现在,我们来看三种情况:
lim(n->inf) n/k = 0
a = O(k(2n/k + 1)) = O(k)
b = O(k(n/k + 1)) = O(k)
lim(n->inf) n/k = constant
a = O(2*constant*k + k) = O(another_constant * k) = O(k)
b = O(constant*k + k) = O(another_constant2 * k) = O(k)
lim(n->inf) n/k = inf
=&gt; lim(n->inf) k/n = 0
a = O(n(2 + k/n)) = O(2n) = O(n)
b = O(n(1 + k/n)) = O(n)
所以,在每种情况下都是如此。
答案 2 :(得分:1)
除了一个例外,你的想法对我来说似乎是正确的。
你能确定两个相同的顶点之间不能有两条或更多条边吗?那么图表不是多图?
否则m = X * (n*(n-1))/2
其中X
可以增长到无穷大,并且它是问题中的新变量。然后复杂性就像O(X*n*n)
。
无论如何,方程式仍然是正确的,因为第一个子句中的+n
仍然可以省略(因为二次函数&#34;过度充电&#34;线性一个)。