Compressing a degree-three multigraph to a simple cubic graph #
A connected loopless multigraph of maximum degree three is compressed by
repeatedly merging two adjacent vertices when one of them has degree at most
two or they are joined by parallel edges. A Compression records the current
state as a set of blocks, each block being an ordered list of original
vertices, together with the invariants the process maintains:
- every block has at most three edges leaving it, its current degree;
- every proper prefix of a block has boundary at most
3 ⌈log₂ |block|⌉, because merges place the larger block first; - the number of blocks plus the number of edges inside blocks is at least the number of original vertices, so the quotient's edge excess never grows.
When no merge applies and there are at least two blocks, the quotient graph
Compression.quotient is simple and 3-regular (quotient_isRegularOfDegree),
and its vertex count h satisfies h + 2 N ≤ 2 M (card_blocks_add_le).
A walk starting inside a set with empty cut stays inside it.
In a connected graph, every proper nonempty vertex set has a crossing edge.
Compressions #
The edges with both endpoints in a common block.
Instances For
A state of the compression process: an ordered partition of the vertices into blocks, with the invariants maintained by merging.
The blocks, each an ordered list of original vertices.
Each block lists distinct vertices.
Blocks are nonempty.
Distinct blocks are disjoint.
Every vertex lies in a block.
At most three edges leave a block.
- prefixBound (B : List V) : B ∈ self.blocks → ∀ k < B.length, (G.cut (List.take k B).toFinset).card ≤ 3 * Nat.clog 2 B.length
Proper prefixes of a block have logarithmically small boundary.
Blocks plus inside edges dominate the vertex count.
Instances For
Two blocks can be merged when they are adjacent and one has degree at most two or they are joined by parallel edges. The smaller block is listed second.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Merge two blocks, listing the larger first.
Equations
Instances For
The initial compression: every vertex is its own block.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The compression process terminates in a state where no merge applies.
The quotient graph #
The block containing a vertex.
Equations
- c.blockOf v = ⟨Classical.choose ⋯, ⋯⟩
Instances For
The quotient graph: two blocks are adjacent when an edge joins them.
Equations
Instances For
With no merge available, distinct blocks are joined by at most one edge.
With no merge available and at least two blocks, every block has degree three.
The quotient of a final compression with at least two blocks is 3-regular.
The quotient's edges are the edges between distinct blocks.
With h blocks, N vertices, and M edges, a final compression with at
least two blocks satisfies h + 2 N ≤ 2 M.