Adding self-loops #
Powering names a vertex within distance k ≤ h of v by a length-h walk that
takes k real steps and then stays put, so the graph it runs on must have a
self-loop at every vertex (RegGraph.Loops). This module adds them.
A self-loop at every vertex is itself a RegGraph — loopGraph, of degree one,
whose rotation map is the identity — so adding loops is just union with it,
and the spectral bound comes free from spectralBound_union: the loops
contribute their full weight 1 and the original graph its lam, giving
(1 + deg · lam) / (1 + deg), still below one.
On the constraint side the loops carry the trivially true constraint. They are
never violated, so the number of broken darts is unchanged while the number of
darts grows by a factor (deg + 1) / deg; the value is scaled by exactly
deg / (deg + 1), which unsatFrac_addLoops records.
Main definitions #
RegGraph.loopGraph— one self-loop at every vertexRegGraph.addLoops,RegGraph.addLoopsLoops— the graph with loops, and its canonicalLoopsRegCSP.addLoops— the constraint system with loops
Main results #
RegGraph.deg_addLoops,RegGraph.spectralBound_addLoopsRegCSP.unsatFrac_addLoops,unsatVal_addLoops— the value scales bydeg / (deg + 1)RegCSP.satisfiable_addLoops_iff
The graph with exactly one self-loop at each vertex.
Equations
- One or more equations did not get rendered due to their size.
Instances For
G with a self-loop added at every vertex.
Equations
- G.addLoops = (Complexity.RegGraph.loopGraph G.V).union G (Equiv.refl G.V)
Instances For
Adding loops keeps a spectral bound below one.
R with a trivially satisfied self-loop added at every vertex.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The broken darts are unchanged: only the original constraints can fail.