Search code examples
rigraphtidygraph

How to get the "articulation edges" in igraph?


I am trying to identify the edges between articulation points using igraph (and tidygraph) and its function articulation_points. In other words, I'm looking for the edges in my graph which if cut would split the graph in two. My first guess was that all I needed to do was filter the edges to those where both from and to vertices were articulation points. Unfortunately, I quickly discovered this was insufficient since this approach flags edges which would not split up the network if cut when they are next to each other. Is there another route to this "articulation edge" list?

Here was my (incorrect) logic.

mygraph %N>%
  mutate(apoint = name %in% as.character(igraph::articulation_points(.G()))) %E>%
  mutate(aedge = .N()$apoint[from] & .N()$apoint[to])

I'll try and come up with a minimal network which has the property of failing with this logic. Stay tuned.


Solution

  • Such edges are called "bridges". Finding bridges is implemented in the C core of igraph, but not (yet) in the R interface I'm afraid. Perhaps it will be included in a new release.

    By the way, there is also a new support forum for igraph: https://igraph.discourse.group/