【问题标题】:relationship between density of edges to the number of vertices in graph边密度与图中顶点数之间的关系
【发布时间】:2012-02-20 16:32:59
【问题描述】:

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

【问题讨论】:

    标签: graph-algorithm


    【解决方案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|)

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

    注意,如果图形不简单,则不能将|E||V|的任何函数绑定。

    【讨论】:

    • 我在理解密集图的公式时遇到问题:|E| = (|V|-1) + (|V| -2) + ... + 1
    • @iralight:是的,它是sum of arithmetic progression。看看随附的链接。
    【解决方案2】:

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

    请注意,如果边数少得多,例如O(lg |V|),那么它仍然是 O(|V|)。可以想象一个带有 |E| 的“半稀疏”类图。 = O(|V| lg |V|) 之类的,但我个人在实践中从未遇到过这样的类。

    【讨论】:

    • 谢谢,我忘记了自循环!现在有道理了:)
    • @iralight:感谢您的接受,但自循环不是问题。即使在没有自环的完全无向图中,边数也是 |V|×(|V|-1)/2,即 O(|V|²)。
    • 明白了......从概念上讲,我可以通过自循环完全填充 V^2 邻接矩阵。感谢您的澄清
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2012-10-09
    • 1970-01-01
    • 2015-03-27
    相关资源
    最近更新 更多