边缘密度与图形中顶点数量之间的关系

时间:2012-02-20 16:33:00

标签: graph-algorithm

我想了解如何计算密集与稀疏图形的大O. “简而言之算法”说,对于稀疏图,O(E)是O(V),而密集图O(E)更接近O(V ^ 2)。有谁知道这是如何衍生出来的?

2 个答案:

答案 0 :(得分:1)

假设图表为simple - 在最坏的情况下,每个节点都可以连接到所有|V|-1个其他节点,从而导致[在非有向图中:] |E| = (|V|-1) + (|V| -2) + ... + 1 <= |V| * (|V| -1) = O(|V|^2)。并在有向图中:|E| = |V| * (|V|-1) = O(|V|^2)

密集图的一个很好的例子是clique - 它具有所有边缘。

对于稀疏图 - 我们假设连接到每个顶点的边数由一个常数限定。让这个常数为k。因此:|E| <= k* |V|,我们得到|E| = O(|V|)

sparsed图的一个很好的例子是互联网,其中每个URL都是一个节点,每个链接都是边缘。

请注意,如果图表不简单,则无法将|E||V|的任何函数绑定。

答案 1 :(得分:0)

它不是派生的,而是一个定义。在具有自循环的完全连接(有向)图中,边数| E | = | V |²因此密集图的定义是合理的。稀疏图的定义是O(| E |)= O(| V |)的定义,因此每个顶点有一个恒定的最大边数。

注意,如果边缘的数量要小得多,例如, O(lg | V |),那么它仍然是O(| V |)。人们可以想象一个“半稀疏”类的图,其中包含| E | = O(| V | lg | V |)或类似的东西,但我个人从未在实践中遇到过这样的课程。