relationship between density of edges to the number of vertices in graph

StackOverflow https://stackoverflow.com/questions/9364677

  •  28-10-2019
  •  | 
  •  

Вопрос

I want to understand how to compute big-O for a dense versus sparse graph. "Algorithms in a nutshell" says that for sparse graph, O(E) is O(V) and for dense graph O(E) is closer to O(V^2). Does anyone know how is that derived?

Это было полезно?

Решение

It's not derived, it's a definition. In a fully connected (directed) graph with self-loops, the number of edges |E| = |V|² so the definition of a dense graph is reasonable. The definition of a sparse graph is one where O(|E|) = O(|V|), so there's a constant maximum number of edges per vertex.

Note that if the number of edges is much smaller, e.g. O(lg |V|), then it's still O(|V|) as well. One could imagine a "semi-sparse" class of graphs with |E| = O(|V| lg |V|) or something like that, but I personally have never encountered such a class in practice.

Другие советы

Assuming the graph is simple - at the worst case every node can be connected to all |V|-1 other nodes, resulting in [in not directed graph:] |E| = (|V|-1) + (|V| -2) + ... + 1 <= |V| * (|V| -1) = O(|V|^2). And in directed graph: |E| = |V| * (|V|-1) = O(|V|^2).

A good example for a dense graph is a clique - which have all the edges.

For sparsed graph - we assume the number of edges connected to each vertex is bounded by a constant. Let this constant be k. Thus: |E| <= k* |V|, and we get |E| = O(|V|)

A good example for a sparsed graph is the internet, where every URL is a node and every link is an edge.

Note that if the graph is not simple, you cannot bound |E| with any function of |V|.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top