Interactive Graph Theory Learning
Interactive Graph Theory Learning
Guest User
Using app without sign in
Cut-vertex finder
Finds vertices whose removal increases connected components
Select an algorithm and generate steps to begin visualization
An articulation point (or cut vertex) is a vertex whose removal disconnects the graph or increases its number of connected components. Finding articulation points identifies single points of failure in a network.
Tarjan's DFS-based method visits every vertex once, tracking each vertex's discovery time and low-link value, the earliest discovered vertex reachable from its subtree via back edges. A non-root vertex v is an articulation point when some child subtree cannot reach above v, that is low[child] >= disc[v]. The DFS root is an articulation point when it has two or more DFS children. The whole analysis runs in O(V + E).
Articulation points expose critical routers in communication networks, key intersections in road systems, vulnerable servers in distributed infrastructure, and influential brokers in social networks. Reliability engineering uses them to prioritize redundancy. They also appear in harder interview rounds together with bridges.
One DFS, two numbers per vertex. The discovery time says when a vertex was first seen; the low-link says the earliest vertex its subtree can reach through a back edge.
dfs(u, parent):
disc[u] = low[u] = ++time
children = 0
for each neighbor v of u:
if v == parent: continue
if v is visited:
low[u] = min(low[u], disc[v]) // back edge
else:
children++
dfs(v, u)
low[u] = min(low[u], low[v])
if parent != NONE and low[v] >= disc[u]:
mark u as an articulation point
if parent == NONE and children > 1:
mark u as an articulation point // root ruleThe condition low[v] >= disc[u] says the subtree rooted at the child v has no back edge climbing above u. So every route out of that subtree passes through u, and deleting u strands it. The root is a special case because it has no parent to be cut off from: the root is an articulation point exactly when it has two or more DFS children, since those subtrees can only reach each other through the root.
Run the DFS from A on a graph made of a triangle with a two-node tail, taking neighbors alphabetically.
Example graph: Undirected edges A-B, B-C, C-A forming a triangle, plus C-D and D-E hanging off it.
The articulation points are C and D. The triangle A-B-C has no articulation point among A and B because every vertex in a cycle has an alternative route, while the tail C-D-E is a chain in which every internal vertex is critical. That contrast is the intuition: articulation points live on chains, not inside cycles.
Time: O(V + E) · Space: O(V)
This is a single depth-first search with constant extra work per edge, so it costs the same as the traversal itself. Every vertex is visited once and every edge is examined twice, once from each endpoint. The extra state is two integers per vertex, the discovery time and the low-link, plus the recursion stack, all O(V). The naive alternative, removing each vertex in turn and testing connectivity, costs O(V times (V + E)), so the low-link method turns a quadratic check into a linear one in a single pass.
Articulation points, bridges and biconnected components all come out of the same DFS. Which you want depends on whether the fragile thing is a vertex or an edge.
| Alternative | Prefer it when | Cost |
|---|---|---|
| Bridge finding | The critical thing is a link rather than a node. Same DFS, with the strict test low[v] > disc[u]. | O(V + E) |
| Biconnected components | You want the maximal chunks that survive any single vertex removal, not just the cut vertices themselves. | O(V + E) |
| 2-vertex-connectivity check | You only need a yes or no answer on whether any single failure can disconnect the graph. | O(V + E) |
| Tarjan SCC | The graph is directed. Articulation points are defined for undirected graphs only. | O(V + E) |
Read the full article: Applications of Graph Theory in the Real World
Related algorithms: Bridge Finding, Depth-First Search, Tarjan's SCC Algorithm