Блог пользователя FCBLOK

Автор FCBLOK, 10 лет назад, По-английски

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.

  • Проголосовать: нравится
  • +3
  • Проголосовать: не нравится

»
10 лет назад, # |
Rev. 2   Проголосовать: нравится 0 Проголосовать: не нравится

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.

»
6 лет назад, # |
  Проголосовать: нравится 0 Проголосовать: не нравится

CAN U HELP ME WHICH BOOK CURRENTLY USED FOR PROGRAMMING