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.blockOf,Cslib.Circuits.Frontier.Multigraph.Compression.external: the block of a vertex and the external edges between distinct blocks.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 #
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
Every vertex belongs to its assigned block.
A vertex belongs to a block B if and only if c.blockOf v = B.
An edge lies in the cut of a block B exactly when only one of its endpoints lies in B.
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 source of an external edge in the quotient is the block of its source in G.
The target of an external edge in the quotient is the block of its target in G.
The quotient multigraph is loopless.
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.
Every block in the quotient multigraph has degree at most d.
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|.