Edge reachability and edge connectivity of multigraphs #
Two points x, y of a multigraph G : Graph α β are k-edge-reachable, G.IsEdgeReachable k x y,
when they remain reachable after deleting any set of fewer than k edges, and G is
k-edge-connected, G.IsEdgeConnected k, when any two of its actual vertices are
k-edge-reachable. Deleted edges are counted as edge identities, so parallel edges count
separately: two vertices joined by n parallel edges are n-edge-reachable. The thresholds are
natural numbers, and G.edgeReachability x y and G.edgeConnectivity are the suprema in ℕ∞ of
the thresholds at which the predicates hold. These supremum definitions and the bounds by incident
edge counts follow mathlib4#42494.
The predicates follow Mathlib's SimpleGraph.IsEdgeReachable and SimpleGraph.IsEdgeConnected,
and agree with them on Graph.ofSimpleGraph. Unlike a simple graph, a multigraph has actual
vertices V(G) inside its ambient vertex type, and reachability requires actual endpoints. So
for k ≠ 0 a point is k-edge-reachable from itself exactly when it is an actual vertex, and
k-edge-reachability is an equivalence relation on V(G). Global edge connectivity only
quantifies over actual vertices, so it is monotone along inclusions of multigraphs with the same
actual vertex set.
Main results #
Graph.isEdgeReachable_one,Graph.isEdgeConnected_one: the threshold1is reachability.Graph.isEdgeConnected_iff_forall_connected: a multigraph with an actual vertex isk-edge-connected exactly when it stays connected after deleting fewer thankedges.Graph.IsLink.isBridge_iff_not_isEdgeReachable_two: an edge is a bridge exactly when its ends are not2-edge-reachable.Graph.isEdgeConnected_two_iff_forall_reachable_and_forall_not_isBridge: a multigraph is2-edge-connected exactly when its actual vertices are pairwise reachable and it has no bridge.Graph.forall_reachable_isEdgeReachable_two_iff_forall_not_isBridgeis the componentwise form, andGraph.preconnected_and_forall_not_isBridge_ofSimpleGraph_iffcompares the criterion onGraph.ofSimpleGraphwith Mathlib'sSimpleGraph.isEdgeConnected_two_iff_forall_not_isBridge.Graph.isEdgeReachable_ofSimpleGraph_iff,Graph.isEdgeConnected_ofSimpleGraph_iff: agreement with the simple-graph predicates.Graph.isEdgeReachable_iff_le_edgeReachability,Graph.isEdgeConnected_iff_le_edgeConnectivity: the numerical invariants record exactly the thresholds at which the predicates hold.Graph.edgeConnectivity_ofSimpleGraph: agreement with the simple-graph edge connectivity.Graph.edgeConnectivity_eq_iInf_edgeReachability: edge connectivity is the least local edge reachability between actual vertices.Graph.edgeReachability_le_nonloopIncidenceCount: local edge reachability between distinct vertices is bounded by the number of nonloop edges at the first vertex.Graph.edgeConnectivity_eq_top_iff: when the actual edge set is finite, edge connectivity is⊤exactly when there is at most one actual vertex.Graph.edgeReachability_banana,Graph.edgeConnectivity_banana: two distinct vertices joined bynparallel edges have local edge reachability and edge connectivityn.
Edge reachability #
Only actual edges need to be deleted in the definition of edge reachability.
Reachability is 1-edge-reachability.
Edge reachability at a smaller threshold follows from edge reachability at a larger one.
Edge reachability is monotone under inclusion of multigraphs.
An actual vertex is k-edge-reachable from itself, since deleting edges keeps every
vertex.
For every threshold, edge reachability is an equivalence relation on the actual vertices.
Edge connectivity #
Edge connectivity is monotone under inclusions of multigraphs with the same actual vertices. Without equal vertex sets this fails: the larger graph may have additional, isolated vertices.
A multigraph with at most one actual vertex is k-edge-connected for every k.
Bridges #
The ends of a link of a bridge are not 2-edge-reachable.
An edge joining x and y is a bridge exactly when x and y are not 2-edge-reachable.
In a multigraph without bridges, any two vertices reachable from each other are
2-edge-reachable.
Any two vertices of a multigraph reachable from each other are 2-edge-reachable exactly when
the multigraph has no bridge; that is, every connected component is 2-edge-connected exactly when
there is no bridge.
A multigraph is 2-edge-connected exactly when any two of its actual vertices are reachable
from each other and it has no bridge. No finiteness is assumed; when there is no actual vertex,
both sides hold.
The graph traced by a cycle is 2-edge-connected.
Graphs from simple graphs #
Edge reachability in Graph.ofSimpleGraph H is simple-graph edge reachability in H.
Edge connectivity of Graph.ofSimpleGraph H is simple-graph edge connectivity of H.
On Graph.ofSimpleGraph H, the multigraph bridge criterion for 2-edge-connectivity agrees
with Mathlib's simple-graph criterion SimpleGraph.isEdgeConnected_two_iff_forall_not_isBridge.
The simple-graph criterion needs no separate reachability condition because
SimpleGraph.IsBridge also holds for a non-edge joining distinct components, whereas multigraph
bridges are actual edges.
Numerical invariants #
Local edge reachability records exactly the thresholds at which edge reachability holds.
Edge connectivity records exactly the thresholds at which edge connectivity holds.
The edge connectivity of Graph.ofSimpleGraph H is the edge connectivity of H.
Edge connectivity is the infimum of the local edge reachabilities between actual vertices.
A multigraph with at most one actual vertex has edge connectivity ⊤.
Bounds by incident edges #
If distinct points are k-edge-reachable, then the first one has at least k incident
nonloop edges, provided it has finitely many nonloop incident edges.
The local edge reachability between distinct points is at most the number of nonloop edges incident with the first, provided it has finitely many nonloop incident edges.
The edge connectivity of a multigraph with two distinct actual vertices is at most the number of nonloop edges at the first, provided it has finitely many nonloop incident edges.
Two vertices joined by parallel edges #
The local edge reachability of two distinct vertices joined by the parallel edges of F is
the number of these edges.
The edge connectivity of two distinct vertices joined by the parallel edges of F is the
number of these edges; in particular a single edge gives edge connectivity 1.