A cloud, by counting #
Degree reduction rotates inside a cloud through the cloud's enumeration: the
half-edge it starts from is located by List.idxOf, and the one it lands on is
read off by position. Neither operation is available to an algorithm, which can
only count. This module replaces both by counts of half-edge numbers.
The cloud is enumerated in order of those numbers, so a half-edge's position is the number of smaller numbers in the cloud, and the half-edge at a position is the one whose number has that many smaller numbers below it.
Main definitions #
Complexity.ConstraintGraph.cloudCodes— the numbers of a cloud's half-edges
Main results #
Complexity.ConstraintGraph.idxOf_cloudList— the position is a countComplexity.ConstraintGraph.halfCode_getElem_cloudList— and the entry at a position is named by the count that reaches it
The numbers of the half-edges attached to a vertex.
Equations
- G.cloudCodes v = Finset.image G.halfCode (G.cloud v)
Instances For
Counting the smaller numbers of a cloud is counting its smaller half-edges.
A half-edge's position in its cloud is a count.
The half-edge at a position is named by the count that reaches it.