【问题标题】:Algorithm: Find if a there's a path from a vertex to every other vertices in a directed graph?算法:查找是否存在从一个顶点到有向图中的所有其他顶点的路径?
【发布时间】:2015-12-07 04:40:27
【问题描述】:

给定一个有向图。我想要一个算法来发现,如果顶点 v 到图中的所有其他顶点之间存在路径?时间复杂度(|V| + |E|)。

我不确定如何处理这个问题。一点帮助将不胜感激。

谢谢。

【问题讨论】:

  • 做一个递归算法,一步一步: 1.- 取起始顶点v,标记为Checked。 2.- 检索所有连接到它的顶点并调用相同的函数,如果已经检查了顶点,则停止递归调用。 3.- 检查是否所有节点都被检查。
  • 添加为答案,如果您使用所需语言向问题添加语言标记,我可以在代码上做一个示例(如果我知道,首选:c++、python、haskell、java)

标签: graph


【解决方案1】:

检查连接顶点伪代码的递归版本:

Object Vertex {position, list_of_connected_vertex, already_checked}
Object Graph  {list_of_all_vertex}

function checkConnected(initial_vertex):
    if initial_vertex is already_checked:
        return
    else:
        initial_vertex.already_checked = true
        for vertex in initial_vertex.list_of_connected_vertex:
            checkConnected(vertex)

if all_are_checked(Graph.list_of_all_vertex) then Vertex is connected.

(清除已经检查的标志以进行其他顶点和图形检查)

这是一种自然的思考问题的方式,而不是可能的最佳性能方式。

【讨论】:

    【解决方案2】:

    如果问题只是找出一对顶点之间是否存在路径,可以使用depth-first search。如果存在特定固定图的路径,但要重复各种顶点组合,则connected component analysis 可能更合适。

    【讨论】:

    • 问题是图中的给定顶点是否连接到其上的所有其他顶点。
    猜你喜欢
    • 2019-08-09
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多