【问题标题】:adjacency-list representation of a directed graph有向图的邻接表表示
【发布时间】:2013-08-06 03:59:18
【问题描述】:

给定一个有向图的邻接表表示,需要多长时间 计算每个顶点的出度?计算需要多长时间 度数?

谢谢

【问题讨论】:

    标签: algorithm graph adjacency-list


    【解决方案1】:

    有向图的邻接表表示:

    每个顶点的出度

    1. 顶点u的出度等于Adj[u]的长度。

    2. Adj中所有邻接表的长度之和为|E|。

    3. 因此计算每个顶点的出度的时间是Θ(V + E)

    每个顶点的入度

    1. 顶点 u 的入度等于它在 Adj 的所有列表中出现的次数。

    2. 如果我们搜索每个顶点的所有列表,计算每个顶点入度的时间是 Θ(VE)

    3. 或者,我们可以分配一个大小为 |V| 的数组 T并将其条目初始化为零。

    4. 我们只需要扫描 Adj 中的列表一次,当我们在列表中看到 'u' 时增加 T[u]。

    5. T 中的值将是每个顶点的入度。

    6. 这可以在 Θ(V + E) 时间内通过 Θ(V) 额外的存储空间完成。

    【讨论】:

    • 这应该是最好的答案了。
    【解决方案2】:

    两者都是O(m + n),其中m 是边数,n 是顶点数。

    启动一组计数器,一个用于每个顶点,一个用于入度,一个用于出度。

    扫描边缘。对于每条边的出顶点,将该顶点的出度计数器加一。对于每条边的入顶点,将该顶点的入度计数器加一。这是O(m) 操作。

    输出每个顶点的出度和入度计数器,即O(n)

    这就是你得到O(m + n)的方式。

    【讨论】:

    • 是的,我之前在网上看到过...会不会和 O(V+E) 一样...还是 O(E+V)
    • 完全一样。
    • 对不起 V 代表顶点,E 代表边
    • 在()中按顺序排列有关系吗
    • @user2558869 考虑查找定义:en.wikipedia.org/wiki/Big_O_notation#Formal_definition。如果您不熟悉该符号并且尽管您已尽最大努力仍无法弄清楚,请在单独的 math.stackexchange 帖子中发布任何符号问题
    【解决方案3】:

    out-degree 对应每个vertex:theta(E)

    in-degree 对应每个vertex:O(E)

    E是图的边数

    【讨论】:

      【解决方案4】:

      因为它是一个有向图,并且只给出了邻接表。

      计算出度数所需的时间为 theta (M+N),其中 M 是顶点数,N 是指边数。

      而对于入度数的计数,对于任何节点,您必须计算该节点在所有其他(其余顶点)邻接列表中出现的次数。所以,它需要 theta(MN)。

      但是,如果您维护一个大小为 M 的数组,那么您可以在 theta(M+N) 中计算入度数,并额外存储 theta(M) 空间

      【讨论】:

        【解决方案5】:

        对于具有 m 个顶点和 n 个边的图,计算入度和出度需要 theta(m + n)。它是 theta(m+n) 而不是 O(m + n) 的原因,因为无论图形是什么,它都必须经过每个顶点 m 和每个边 n。

        【讨论】:

          【解决方案6】:

          给定一个有向图的邻接表表示 Adj,顶点 u 的出度等于 Adj[u] 的长度, Adj 中所有邻接表的长度之和为|E|。因此计算每个顶点的出度的时间是Θ(|V| + |E|)。

          顶点 u 的入度等于它在 Adj 中所有列表中出现的次数。如果我们在所有列表中搜索每个 顶点,计算每个顶点的入度的时间是Θ(|V|.|E|)。

          (或者,我们可以分配一个大小为 |V| 的数组 T 并将其条目初始化为零。然后我们只需要扫描 调整一次,当我们在列表中看到 u 时增加 T[u]。 T 中的值将是每个顶点的入度。这可以是 在 Θ(|V| + |E|) 时间内完成,额外的存储空间为 Θ(|V|)。)

          【讨论】:

            猜你喜欢
            • 2018-07-14
            • 1970-01-01
            • 2013-07-04
            • 1970-01-01
            • 2012-07-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多