【问题标题】:Number of Edges and Cycle Detection?边缘数和循环检测?
【发布时间】:2015-02-12 08:03:51
【问题描述】:

我遇到了一个具有挑战性的问题:当我们知道 O(|V|) 而不是 O(|V|+|E|) 的边数时,我们可以检测一个简单的无向图是否有环。

我知道有一个O(|V|) 算法可以找出循环是否存在。但是上面这句话说,知道边数?!谁能形容它的真假?

【问题讨论】:

    标签: graph tree graph-algorithm shortest-path depth-first-search


    【解决方案1】:

    在无向图中,如果图是连通的,并且有比使图连通所需的边多,则它包含一个循环。换句话说,有 V 个顶点的图需要连接 V-1 条边。任何额外的边都必须连接已经在同一个组件中的两个顶点,从而创建一个循环。

    换句话说,如果图包含多于 V-1 条边,则它包含一个循环。

    【讨论】:

    • 如果我们对连通图或非连通图一无所知?
    • 我们只能确定图是否有超过 V-1 条边(并且图是连通的或不连通的)。如果它是断开的并且包含少于 V-2 个边,它可能包含一个循环,但这种方法没有帮助。总而言之,如果图,无论是连接的还是断开的,都有超过 V-1 条边,它包含一个循环。如果它是断开的并且包含超过 V-2 个边,则它包含一个循环。如果它包含少于 V-2 条边,它可能包含一个环。
    • 所以你的意思是知道边的数量并计算 O(|V|) 中的顶点并将其与 V-2 进行比较,那么我们确定它是否有循环? (任何简单的无向图)?
    • “计算 O(|V|) 中的顶点”是什么意思?对连通性一无所知,任何简单的无向图如果包含多于 V-1 条边,则必须包含一个环。为了证明这一点,请考虑一组 V 点。连接所有这些 V 点的 MST 具有 V-1 条边。如果添加另一条边,则连接两个已经在同一个组件中的顶点,从而创建一个循环。
    • 所以你的意思是我上面问题的第一句话是真的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    • 2016-09-12
    相关资源
    最近更新 更多