FCBLOK's blog

By FCBLOK, 11 years ago, In English

recently i have been studying graph theory from competitive programming book ,in applications of DFS there was articulation points and bridges . He defines other than visited array a another one here is the statement.

[This algorithm maintains two numbers: dfs_num(u) and dfs_low(u). Here, dfs_num(u) stores the iteration counter when the vertex u is visited for the first time and not just for distinguishing DFS_WHITE versus DFS_GRAY/DFS_BLACK. The other number dfs_low(u) stores the lowest dfs_num reachable from DFS spanning sub tree of u. Initially dfs_low(u) = dfs_num(u) when vertex u is first visited. Then, dfs_low(u) can only be made smaller if there is a cycle (some back edges exist). Note that we do not update dfs_low(u) with back edge (u, v) if v is a direct parent of u. ]

please anyone give an explanation for this part.

  • Vote: I like it
  • +3
  • Vote: I do not like it

| Write comment?
»
11 years ago, # |
Rev. 2   Vote: I like it 0 Vote: I do not like it

You have to keep an array low[] where low[node] is the smallest level you can acces from node using no matter how many direct edges and only a back edge(this edge must not be the edge to the node's parent). Now, a node is an articulation point if and only there exist a "child" of the node in the dfs tree for which low[child]>=the level of the node. A special case is the root of the tree -> it is an articulation point if it has at least two children.

»
7 years ago, # |
  Vote: I like it 0 Vote: I do not like it

CAN U HELP ME WHICH BOOK CURRENTLY USED FOR PROGRAMMING

  • »
    »
    7 years ago, # ^ |
      Vote: I like it +16 Vote: I do not like it

    For programming I'd recommend using a computer