Compressions of multigraphs #
Laying out a multigraph of bounded degree reduces to laying out a smaller multigraph, its
quotient by a compression. Fix a budget d, at least the maximum degree. Partition the
vertices into blocks, each listing its vertices in order, starting from single vertices. Two
distinct blocks joined by an edge may be merged when at most d edges leave their union; the
merged block lists the longer block first. A Compression records the invariants of this
process:
- at most
dedges leave a block; - at most
d log₂ |B|edges leave a proper prefix of a blockB. A proper prefix of a merged block is a proper prefix of its first part, or all of its first part followed by a proper prefix of its second part, which has at most half as many vertices; - there are at least as many blocks and edges inside blocks as vertices, since a merge loses one block and moves at least one edge inside.
Each merge loses a block, so merging ends in a saturated compression, to which no merge
applies (Compression.exists_saturated).
The quotient of a compression is the multigraph whose vertices are the blocks and whose edges
are the edges of the original multigraph between distinct blocks. By the counting invariant its
cycle rank is at most that of the original multigraph (Compression.card_add_card_external_le).
A layout of the quotient expands to a layout of the original multigraph, block by block and
each block in its own order; the frontiers of the expanded layout exceed those of the layout of
the quotient by at most d log₂ |V| edges (Compression.exists_width_le).
Main definitions #
Cslib.Circuits.Frontier.Multigraph.Compression: a partition into ordered blocks, with the invariants of merging.Cslib.Circuits.Frontier.Multigraph.Compression.Saturated: no merge applies.Cslib.Circuits.Frontier.Multigraph.Compression.quotient: the multigraph on the blocks.
Main results #
Cslib.Circuits.Frontier.Multigraph.Compression.exists_saturated: merging terminates.Cslib.Circuits.Frontier.Multigraph.Compression.ncard_edgeCut_preimage: the cut of a union of whole blocks is the cut of the quotient.Cslib.Circuits.Frontier.Multigraph.Compression.card_add_card_external_le: the cycle rank of the quotient is at most that of the multigraph.Cslib.Circuits.Frontier.Multigraph.Compression.exists_width_le: expanding a layout of the quotient.
A compression of G with budget d: a partition of its vertices into blocks, each
listing its vertices in order, with the invariants maintained by merging. A block B is
identified with its vertex set {v | v ∈ B}.
The blocks.
Every vertex lies in a block.
Blocks sharing a vertex are equal.
A block lists each of its vertices once.
Blocks are nonempty.
At most
dedges leave a block.- ncard_edgeCut_take_le (B : List V) : B ∈ self.blocks → ∀ k < B.length, (G.edgeCut {v : V | v ∈ List.take k B}).ncard ≤ d * Nat.log 2 B.length
At most
d log₂ |B|edges leave a proper prefix of a blockB. - card_le : Nat.card V ≤ self.blocks.card + {e : E | ∃ B ∈ self.blocks, G.src e ∈ B ∧ G.tgt e ∈ B}.ncard
There are at least as many blocks and edges inside blocks as vertices.
Instances For
Merging #
The compression into single vertices.
Instances For
Merging. Two distinct blocks joined by an edge, with at most d edges leaving their
union, may be replaced by their union, listing the longer block first.
A compression is saturated when no merge applies: more than d edges leave the union of
any two distinct blocks joined by an edge.
Instances For
Merging terminates. Every finite multigraph of maximum degree d has a saturated
compression with budget d: one with the fewest blocks.
The quotient #
The block containing a vertex.
Instances For
An edge leaving a block leaves another block too.
In a connected multigraph, some edge leaves each block, unless there is only one.
The external edges: those between distinct blocks.
Instances For
The quotient of a compression: the multigraph whose vertices are the blocks and whose edges are the external edges, each joining the blocks of its endpoints.
Instances For
The cut of a union of whole blocks consists of the edges of the cut of the quotient.
Cuts of unions of whole blocks are cuts of the quotient.
The edges at a block of the quotient are the edges leaving the block.
The cuts of the blocks count every external edge twice.
The quotient is no more cyclic than the multigraph: |V| - |B| ≤ |E| - |E_B|, where
B is the set of blocks and E_B the set of external edges.
Expansion #
Expansion. Lay out the vertices block by block, ordering the blocks by a layout σ of
the quotient and each block by its list. Each frontier consists of whole blocks, which are cut
by a frontier of σ, and a proper prefix of one more block. So the width exceeds that of σ
by at most d log₂ |V|.