From c6e2c3e1a50132cfcf89f190eb362a11eb0027e8 Mon Sep 17 00:00:00 2001 From: didericis Date: Fri, 12 Jun 2026 22:36:15 -0400 Subject: [PATCH] Add even-level-cycle colouring program harness Constructive route: surger G so every level cycle is even (two-vertex leaf gadget on terminal triangles -> 4-wheel, no defect; diamond on odd internal seams), take the canonical even colouring of M(G') (no 4CT used), Kempe-remove the planted degree-4/3 vertices to reach a proper 3-colouring of M(G). Pipeline runs end to end on synthetic ring triangulations: surgery, canonical colouring, and gadget removal all work; the program lands on the CYCLE LAYER (39/60 ok, rest fail:diamond-switch). Diagnostic: a descendable colouring always EXISTS (M(G) is 3-colourable), so failures are Kempe-reachability from the canonical even colouring, not non-existence -- the entire difficulty is localised there. Greedy per-diamond switching is insufficient because diamonds share vertical {1,3}-Kempe cycles; the principled solve is joint (bipartiteness of the diamond / side-cycle constraint graph), which is the identified next step. Includes the leaf gadget figure and a findings note. Co-Authored-By: Claude Opus 4.8 --- .../experiments/draw_evened_leaf.py | 144 +++ .../experiments/even_program_findings.md | 76 ++ .../experiments/evened_leaf.png | Bin 0 -> 143209 bytes .../experiments/kempe_even_program_harness.py | 847 ++++++++++++++++++ 4 files changed, 1067 insertions(+) create mode 100644 papers/medial_tire_decompositions_of_plane_triangulations/experiments/draw_evened_leaf.py create mode 100644 papers/medial_tire_decompositions_of_plane_triangulations/experiments/even_program_findings.md create mode 100644 papers/medial_tire_decompositions_of_plane_triangulations/experiments/evened_leaf.png create mode 100644 papers/medial_tire_decompositions_of_plane_triangulations/experiments/kempe_even_program_harness.py diff --git a/papers/medial_tire_decompositions_of_plane_triangulations/experiments/draw_evened_leaf.py b/papers/medial_tire_decompositions_of_plane_triangulations/experiments/draw_evened_leaf.py new file mode 100644 index 0000000..c5a3bc2 --- /dev/null +++ b/papers/medial_tire_decompositions_of_plane_triangulations/experiments/draw_evened_leaf.py @@ -0,0 +1,144 @@ +"""Picture: evening a terminal (leaf) triangle by the two-vertex operation: +add y at the midpoint of uv and z at the centroid of uvt, delete uv, add edges +xy, uy, vy, zy, zu, zv, zt. The leaf becomes a 4-wheel tread with hub z. + +Panels: + A before: terminal face uvt, level cycle C_k = the 3-cycle (odd seam) + B after: seam u-y-v-t (length 4, even); leaf = 4-wheel with hub z (level k+1) + C medial overlay with the canonical colouring: seam apexes mono-3, + leaf annular 4-cycle alternating 1,2 -- proper, no ears, no defect. +""" + +import os +import matplotlib +matplotlib.use("Agg") +import matplotlib.pyplot as plt + +HERE = os.path.dirname(os.path.abspath(__file__)) +PAL = {0: "#e6550d", 1: "#3182bd", 2: "#31a354"} # colours "1","2","3" +GRAY = "#999999" + +u, v, t, x = (-1.0, 0.0), (1.0, 0.0), (0.0, -1.6), (0.0, 1.0) +y = (0.0, 0.0) # midpoint of uv +z = (0.0, -1.6 / 3) # centroid of uvt + + +def mid(a, b): + return ((a[0] + b[0]) / 2, (a[1] + b[1]) / 2) + + +def vertex(ax, p, name, dx, dy, color="black"): + ax.plot(*p, "o", color=color, ms=5.5, zorder=6) + ax.annotate(name, p, textcoords="offset points", xytext=(dx, dy), + fontsize=10, fontweight="bold", zorder=6) + + +def panel_before(ax): + ax.fill([u[0], v[0], t[0]], [u[1], v[1], t[1]], color="#fde9d9") + for a, b in [(u, v), (v, t), (t, u)]: + ax.plot([a[0], b[0]], [a[1], b[1]], color="black", lw=2.4) + for p in (u, v): + ax.plot([x[0], p[0]], [x[1], p[1]], color=GRAY, lw=0.9) + ax.annotate("terminal face\n(leaf of tire tree)", (0, -0.62), ha="center", + fontsize=8, color="#b06030") + vertex(ax, u, "u", -12, -2); vertex(ax, v, "v", 8, -2) + vertex(ax, t, "t", 0, -14); vertex(ax, x, "x", 8, 2) + ax.annotate("(apex in tread above)", x, textcoords="offset points", + xytext=(16, -2), fontsize=7, color=GRAY) + + +def panel_after(ax, faint=1.0): + # wheel faces + for tri, c in [((u, y, z), "#fde9d9"), ((y, v, z), "#fdf3d9"), + ((v, t, z), "#fde9d9"), ((t, u, z), "#fdf3d9")]: + ax.fill([p[0] for p in tri], [p[1] for p in tri], color=c, alpha=faint) + # seam (level cycle) bold: u-y, y-v, v-t, t-u + for a, b in [(u, y), (y, v), (v, t), (t, u)]: + ax.plot([a[0], b[0]], [a[1], b[1]], color="black", lw=2.4, alpha=faint) + # parent spokes xu, xy, xv + for p in (u, y, v): + ax.plot([x[0], p[0]], [x[1], p[1]], color=GRAY, lw=0.9, alpha=faint) + # leaf spokes zu, zy, zv, zt + for p in (u, y, v, t): + ax.plot([z[0], p[0]], [z[1], p[1]], color="black", lw=1.0, alpha=faint) + vertex(ax, u, "u", -12, -2); vertex(ax, v, "v", 8, -2) + vertex(ax, t, "t", 0, -14); vertex(ax, x, "x", 8, 2) + vertex(ax, y, "y", 6, 6); vertex(ax, z, "z", 7, -4) + + +def panel_medial(ax): + panel_after(ax, faint=0.35) + apexes = {"uy": mid(u, y), "yv": mid(y, v), "vt": mid(v, t), "tu": mid(t, u)} + leaf_ann = {"zu": mid(z, u), "zy": mid(z, y), "zv": mid(z, v), "zt": mid(z, t)} + par_ann = {"ux": mid(u, x), "xy": mid(x, y), "xv": mid(x, v)} + # leaf annular 4-cycle (faces uyz, yvz, vtz, tuz) + ring = ["zu", "zy", "zv", "zt"] + for i in range(4): + a, b = leaf_ann[ring[i]], leaf_ann[ring[(i + 1) % 4]] + ax.plot([a[0], b[0]], [a[1], b[1]], color="#555555", lw=1.6, zorder=4) + # parent annular path m_ux - m_xy - m_xv (faces xuy, xyv) + for a, b in [("ux", "xy"), ("xy", "xv")]: + ax.plot([par_ann[a][0], par_ann[b][0]], [par_ann[a][1], par_ann[b][1]], + color="#555555", lw=1.6, zorder=4) + # apex spokes: each seam apex to its two leaf-annular and two parent nbrs + spokes = [("uy", "zu"), ("uy", "zy"), ("yv", "zy"), ("yv", "zv"), + ("vt", "zv"), ("vt", "zt"), ("tu", "zt"), ("tu", "zu")] + for a, b in spokes: + pa, pb = apexes[a], leaf_ann[b] + ax.plot([pa[0], pb[0]], [pa[1], pb[1]], color="#aaaaaa", lw=1.0, zorder=3) + for a, b in [("uy", "ux"), ("uy", "xy"), ("yv", "xy"), ("yv", "xv")]: + pa, pb = apexes[a], par_ann[b] + ax.plot([pa[0], pb[0]], [pa[1], pb[1]], color="#aaaaaa", lw=1.0, zorder=3) + # off-picture parent stubs for m_vt, m_tu + for k, d in [("vt", (0.25, -0.18)), ("tu", (-0.25, -0.18))]: + p = apexes[k] + ax.plot([p[0], p[0] + d[0]], [p[1], p[1] + d[1]], color="#cccccc", + lw=0.9, linestyle=":", zorder=2) + # colours: apexes mono-3 (green); leaf ring alternating 1,2; parent 1,2,1 + col = {} + for k in apexes: col[("a", k)] = 2 + for k, c in zip(ring, (0, 1, 0, 1)): col[("l", k)] = c + for k, c in zip(("ux", "xy", "xv"), (0, 1, 0)): col[("p", k)] = c + for k, p in apexes.items(): + ax.plot(*p, "o", color=PAL[2], ms=11, markeredgecolor="black", zorder=5) + for k, p in leaf_ann.items(): + ax.plot(*p, "o", color=PAL[col[("l", k)]], ms=9, + markeredgecolor="black", zorder=5) + for k, p in par_ann.items(): + ax.plot(*p, "o", color=PAL[col[("p", k)]], ms=9, + markeredgecolor="black", zorder=5) + lbl = {"uy": (-26, 4), "yv": (12, 4), "vt": (12, -2), "tu": (-30, -2)} + for k, p in apexes.items(): + ax.annotate(f"m_{k}", p, textcoords="offset points", xytext=lbl[k], + fontsize=7, zorder=6) + + +fig, axes = plt.subplots(1, 3, figsize=(14, 4.8)) +for ax in axes: + ax.set_xlim(-1.7, 1.7) + ax.set_ylim(-2.1, 1.45) + ax.set_aspect("equal") + ax.axis("off") + +panel_before(axes[0]) +axes[0].set_title("A. before: leaf = terminal face uvt\nseam C_k = 3-cycle (odd)", + fontsize=9) +panel_after(axes[1]) +axes[1].set_title("B. add y = mid(uv), z = centroid; delete uv;\n" + "add xy, uy, vy, zy, zu, zv, zt\n" + "seam u-y-v-t (even); leaf = 4-wheel, hub z (level k+1)", + fontsize=9) +panel_medial(axes[2]) +axes[2].set_title("C. medial + canonical colouring:\nseam apexes all 3 (green), " + "leaf ring alternates 1,2 — proper, no ears", fontsize=9) + +fig.suptitle( + "Evening a terminal leaf with the two-vertex operation (y splits uv under x; " + "z stellates the leaf as a wheel hub).\n" + "Both new vertices have degree 4; the leaf tread is a 4-wheel with an even " + "annular cycle, so the monochromatic-3 seam is VALID — no leaf defect.", + fontsize=10) +fig.tight_layout(rect=(0, 0, 1, 0.86)) +out = os.path.join(HERE, "evened_leaf.png") +fig.savefig(out, dpi=170) +print("wrote", out) diff --git a/papers/medial_tire_decompositions_of_plane_triangulations/experiments/even_program_findings.md b/papers/medial_tire_decompositions_of_plane_triangulations/experiments/even_program_findings.md new file mode 100644 index 0000000..32dc052 --- /dev/null +++ b/papers/medial_tire_decompositions_of_plane_triangulations/experiments/even_program_findings.md @@ -0,0 +1,76 @@ +# The even-level-cycle colouring program + +A constructive route distinct from the `R_T` composition line. Idea: surger a +triangulation `G` so that **every level cycle is even**, take the resulting +*canonical even colouring* of `M(G')` (no 4CT used), then **remove the planted +vertices** by Kempe switches, landing on a proper 3-colouring of `M(G)` — i.e. a +Tait/4CT colouring of `G`. + +Scripts: `kempe_even_program_harness.py`, `draw_evened_leaf.py` (`evened_leaf.png`). + +## The two surgeries + +- **Leaf gadget (two vertices).** On a terminal triangle `uvt` with outer apex + `x`: add `y = mid(uv)` and hub `z`; delete `uv`; add `xy, uy, vy, zy, zu, zv, + zt`. Both new vertices have degree 4; the seam becomes `u-y-v-t` (even) and the + leaf becomes a **4-wheel** with hub `z`. No ears, no chord — the monochromatic-3 + seam stays valid, so **leaves create no colouring defect**. (Earlier one-vertex + chord version forced a `{0011,0101}` defect; this is strictly better.) +- **Diamond.** On an odd internal seam edge `uv` with apexes `x,t`: delete `uv`, + add `w ~ u,v,x,t` (degree 4). Flips that seam's parity. + +By `n_T = p + Σq_i + 2b`, evening every internal seam makes every annular cycle +even **except the root** (the outer triangle's odd charge `Σ_T n_T ≡ 3 (mod 2)` is +invariant — confirmed; the root is handled as the one unavoidable defect region, +solved by local backtracking). + +## Canonical even colouring (constructive, no 4CT) + +Every level-edge medial vertex → colour 3; every non-root annular cycle alternates +1,2; the root region solved by DFS. Proper because each apex is forced 3 between +two `{1,2}` pairs and (in the non-degenerate tread model) no two level edges are +consecutive around a vertex or face. + +## Removal conditions (degree-4 Kempe reduction — the historically *safe* case) + +- **Diamond** `w` (quad `u-x-v-t`, restore diagonal `uv`): removable iff the pair + `(m_ux,m_xv)` is distinct, `(m_vt,m_tu)` is distinct, ≤2 colours total; then + `m_uv` takes the third. +- **Gadget**: collapse `z` then `y` (or `y` then `z`), ending in a degree-3 + unstellation needing a rainbow triangle. Two orders = free choice. + +## Status (synthetic ring triangulations, the clean-level-structure domain) + +Pipeline runs end to end. Surgery, canonical colouring, and gadget removal all +work. The program now lands squarely on the **cycle layer**: + +``` +60 random ring triangulations: 39 ok, 21 fail:diamond-switch +``` + +**Crucial diagnostic:** for a failing case, a simultaneously-removable proper +3-colouring of `M(G')` was shown to **exist** (it must — `M(G)` is 3-colourable). +So `fail:diamond-switch` is **not** non-existence; it is **Kempe-reachability** — +whether switches carry the *canonical even* colouring to a descendable one. That is +exactly the conjecture's core, and the harness has localised the entire program +difficulty to it, with everything upstream constructive. + +**Why greedy fails (and what's next).** Diamonds on different odd seams share +*vertical* `{1,3}`-Kempe cycles, so per-diamond local switching cannot satisfy them +simultaneously. The principled solve is joint: vertices = `{1,3}`-Kempe cycles, +one edge per diamond joining its two side cycles; removability for all diamonds at +once = a consistent XOR assignment = **bipartiteness** of that graph (no self-loop = +the side cycles differ; no odd cycle = no three diamonds whose side cycles form a +triangle). Insertion-site choice (which seam edge) and tread phase are the control +knobs. Building this joint solver — and finding the smallest configuration, if any, +forcing a self-loop or odd cycle — is the next step and the exact thing a proof +would need to rule out. + +## Caveats / domain + +- Real plantri triangulations mostly `skip:chord-level-edge` under BFS-from-outer + level structure — a reflection of how restrictive the clean nested-tire level + structure is, not a harness bug. The synthetic concentric-ring generator produces + the clean domain the program is stated for. +- Root defect and the (deferred) outer-face handling are localised; the user has a + separate idea for the outer face. diff --git a/papers/medial_tire_decompositions_of_plane_triangulations/experiments/evened_leaf.png b/papers/medial_tire_decompositions_of_plane_triangulations/experiments/evened_leaf.png new file mode 100644 index 0000000000000000000000000000000000000000..54023a926301531079547780ef7781e68ff18fb2 GIT binary patch literal 143209 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%0AB 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

FbWsjH0DLal0Gqf7S( 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 / fail:. + +Run: python3 kempe_even_program_harness.py --min-n 6 --max-n 10 +""" + +from __future__ import annotations + +import argparse +import os +import subprocess +import sys +from collections import defaultdict, deque +from itertools import combinations + +HERE = os.path.dirname(os.path.abspath(__file__)) +PLANTRI = os.path.join(HERE, "..", "..", "..", "plantri", "plantri") + +Edge = frozenset + + +def e(a, b): + return Edge((a, b)) + + +# --------------------------------------------------------------------------- +# Plane triangulation with rotation system. +# --------------------------------------------------------------------------- + +class Tri: + def __init__(self, rot: dict[int, list[int]]): + self.rot = rot # vertex -> neighbours in cyclic (embedding) order + + def copy(self): + return Tri({v: list(ns) for v, ns in self.rot.items()}) + + def vertices(self): + return list(self.rot) + + def edges(self): + return {e(u, v) for u in self.rot for v in self.rot[u]} + + def faces(self): + """All faces as vertex triples (cyclic), via next-in-rotation walk.""" + seen = set() + out = [] + for u in self.rot: + for v in self.rot[u]: + if (u, v) in seen: + continue + face = [] + cu, cv = u, v + while (cu, cv) not in seen: + seen.add((cu, cv)) + face.append(cu) + ns = self.rot[cv] + cw = ns[(ns.index(cu) + 1) % len(ns)] + cu, cv = cv, cw + out.append(tuple(face)) + return out + + def check(self): + nv = len(self.rot) + ne = len(self.edges()) + fs = self.faces() + assert ne == 3 * nv - 6, f"edge count {ne} != {3*nv-6}" + assert all(len(f) == 3 for f in fs), "non-triangular face" + assert len(fs) == 2 * nv - 4, f"face count {len(fs)}" + + def apexes_of(self, u, v): + """The two third-vertices of the faces on edge uv.""" + out = [] + for f in (self._face_from(u, v), self._face_from(v, u)): + out.append(next(w for w in f if w not in (u, v))) + return out # [apex left of u->v, apex left of v->u] + + def _face_from(self, u, v): + face = [] + cu, cv = u, v + for _ in range(3): + face.append(cu) + ns = self.rot[cv] + cw = ns[(ns.index(cu) + 1) % len(ns)] + cu, cv = cv, cw + return face + + # -- surgeries ---------------------------------------------------------- + + def _new_vertex(self): + return max(self.rot) + 1 + + def insert_diamond(self, u, v): + """Delete uv; add w adjacent to u, v and both apexes. Returns + (w, u, v, x, t) with x, t the two apexes.""" + x, t = self.apexes_of(u, v) + w = self._new_vertex() + for ordering in ([u, x, v, t], [u, t, v, x]): + trial = self.copy() + trial.rot[u][trial.rot[u].index(v)] = w + trial.rot[v][trial.rot[v].index(u)] = w + for a in (x, t): + i, j = trial.rot[a].index(u), trial.rot[a].index(v) + # insert w between u and v (they are cyclically adjacent at a) + k = i if (i + 1) % len(trial.rot[a]) == j else j + trial.rot[a].insert(k + 1, w) + trial.rot[w] = ordering + try: + trial.check() + except AssertionError: + continue + self.rot = trial.rot + return (w, u, v, x, t) + raise RuntimeError("diamond insertion failed both orientations") + + def insert_leaf_gadget(self, u, v, t): + """Terminal face (u,v,t): add y on uv (under outer apex x) and hub z; + delete uv; add xy,uy,vy,zy,zu,zv,zt. Returns (y, z, u, v, x, t).""" + aps = self.apexes_of(u, v) + x = next(a for a in aps if a != t) + y, z = self._new_vertex(), self._new_vertex() + 1 + base = self.copy() + for uord in ([y, z], [z, y]): + for yord in ([x, v, z, u], [x, u, z, v]): + for zord in ([y, v, t, u], [y, u, t, v]): + trial = base.copy() + iu = trial.rot[u].index(v) + trial.rot[u][iu:iu + 1] = uord + iv = trial.rot[v].index(u) + trial.rot[v][iv:iv + 1] = list(reversed(uord)) + ix, jx = trial.rot[x].index(u), trial.rot[x].index(v) + k = ix if (ix + 1) % len(trial.rot[x]) == jx else jx + trial.rot[x].insert(k + 1, y) + it_, jt = trial.rot[t].index(u), trial.rot[t].index(v) + k = it_ if (it_ + 1) % len(trial.rot[t]) == jt else jt + trial.rot[t].insert(k + 1, z) + trial.rot[y] = yord + trial.rot[z] = zord + try: + trial.check() + # the gadget must create the four wheel faces + fs = {frozenset(f) for f in trial.faces()} + need = [{u, y, z}, {y, v, z}, {v, t, z}, {t, u, z}, + {x, u, y}, {x, y, v}] + if not all(frozenset(s) in fs for s in need): + continue + except AssertionError: + continue + self.rot = trial.rot + return (y, z, u, v, x, t) + raise RuntimeError("leaf gadget insertion failed") + + def remove_degree4(self, w, a, c): + """Remove degree-4 w, restoring diagonal ac (a, c opposite in rot[w]).""" + ns = self.rot[w] + assert len(ns) == 4 and a in ns and c in ns + assert (ns.index(a) - ns.index(c)) % 4 == 2, "diagonal not opposite" + for p in ns: + i = self.rot[p].index(w) + if p == a: + self.rot[p][i] = c + elif p == c: + self.rot[p][i] = a + else: + del self.rot[p][i] + del self.rot[w] + + def remove_degree3(self, w): + for p in self.rot[w]: + self.rot[p].remove(w) + del self.rot[w] + + +# --------------------------------------------------------------------------- +# plantri reader. +# --------------------------------------------------------------------------- + +def plantri_triangulations(n, limit=None): + raw = subprocess.run([PLANTRI, str(n)], capture_output=True).stdout + assert raw.startswith(b">>planar_code<<") + data = raw[len(b">>planar_code<<"):] + i = 0 + out = [] + while i < len(data) and (limit is None or len(out) < limit): + nv = data[i] + i += 1 + rot = {} + for v in range(1, nv + 1): + ns = [] + while data[i] != 0: + ns.append(data[i]) + i += 1 + i += 1 + rot[v] = ns + out.append(Tri(rot)) + return out + + +# --------------------------------------------------------------------------- +# Level / seam analysis. +# --------------------------------------------------------------------------- + +class Analysis: + def __init__(self, g: Tri, outer: tuple[int, int, int]): + self.g = g + self.outer = outer + self.level = self._levels() + self.faces = g.faces() + self.face_min = {frozenset(f): min(self.level[v] for v in f) + for f in self.faces} + self.degenerate = None + self._classify() + + def _levels(self): + lev = {v: None for v in self.g.rot} + q = deque() + for v in self.outer: + lev[v] = 0 + q.append(v) + while q: + u = q.popleft() + for w in self.g.rot[u]: + if lev[w] is None: + lev[w] = lev[u] + 1 + q.append(w) + return lev + + def _classify(self): + g, lev = self.g, self.level + outer_face = frozenset(self.outer) + self.flat_faces = [] # all-equal-level faces (excluding outer) + for f in self.faces: + ls = [lev[v] for v in f] + if ls[0] == ls[1] == ls[2] and frozenset(f) != outer_face: + self.flat_faces.append(tuple(f)) + # seam edges per depth k>=1: level-k edges with exactly one face of + # min-level k-1 + self.seam_edges = defaultdict(set) # k -> set of edges + self.fins = set() + for edge in g.edges(): + a, b = tuple(edge) + if lev[a] != lev[b]: + continue + k = lev[a] + if k == 0: + continue # outer triangle + x, t = g.apexes_of(a, b) + mins = sorted([min(lev[x], k), min(lev[t], k)]) + above = sum(1 for ap in (x, t) if lev[ap] == k - 1) + if above == 1: + self.seam_edges[k].add(edge) + elif above == 2: + self.fins.add(edge) + else: + self.degenerate = "chord-level-edge" + return + # seams must decompose into disjoint simple cycles + self.seams = [] # list of (k, [edges], [vertices in cyclic order]) + for k, es in self.seam_edges.items(): + deg = defaultdict(list) + for edge in es: + a, b = tuple(edge) + deg[a].append(b) + deg[b].append(a) + if any(len(ns) != 2 for ns in deg.values()): + self.degenerate = "non-simple-seam" + return + left = set(es) + while left: + a0, b0 = tuple(next(iter(left))) + cyc = [a0, b0] + left.discard(e(a0, b0)) + while True: + nxt = next(c for c in deg[cyc[-1]] if c != cyc[-2]) + if nxt == cyc[0]: + break + cyc.append(nxt) + left.discard(e(cyc[-2], cyc[-1])) + left.discard(e(cyc[-1], cyc[0])) + self.seams.append((k, cyc)) + # terminal triangles: flat faces whose 3 edges are all seam edges + self.terminal = [] + for f in self.flat_faces: + a, b, c = f + k = self.level[a] + es = [e(a, b), e(b, c), e(c, a)] + if all(x in self.seam_edges.get(k, ()) for x in es): + self.terminal.append(f) + else: + self.degenerate = "non-terminal-flat-face" + return + + +# --------------------------------------------------------------------------- +# Medial graph + canonical colouring. +# --------------------------------------------------------------------------- + +def medial_adj(g: Tri): + adj = defaultdict(set) + for v, ns in g.rot.items(): + d = len(ns) + for i in range(d): + a, b = e(v, ns[i]), e(v, ns[(i + 1) % d]) + adj[a].add(b) + adj[b].add(a) + return adj + + +def annular_cycles(g: Tri, level): + """Spoke medial vertices grouped into annular cycles (per tread).""" + spokes = [ed for ed in g.edges() if abs(level[min(ed)] - level[max(ed)]) == 1 + or True] + spokes = [ed for ed in g.edges() + if level[tuple(ed)[0]] != level[tuple(ed)[1]]] + adj = medial_adj(g) + sset = set(spokes) + comp = [] + seen = set() + for s in spokes: + if s in seen: + continue + stack, cur = [s], set() + seen.add(s) + while stack: + a = stack.pop() + cur.add(a) + for b in adj[a]: + if b in sset and b not in seen: + seen.add(b) + stack.append(b) + comp.append(cur) + return comp, adj + + +def order_cycle(verts, adj): + """Order a vertex set known to induce a cycle.""" + v0 = next(iter(verts)) + cyc = [v0] + prev = None + while True: + nbrs = [w for w in adj[cyc[-1]] if w in verts and w != prev] + if not nbrs: + return None + prev = cyc[-1] + nxt = nbrs[0] + if nxt == cyc[0]: + return cyc if len(cyc) == len(verts) else None + cyc.append(nxt) + if len(cyc) > len(verts): + return None + + +def canonical_coloring(g: Tri, level, outer, rng=None): + """Canonical colouring of M(g): level-edge medials -> 2 ("colour 3"), + non-root annuli alternate 0,1 (random phases), root region solved by DFS. + Returns (coloring dict, adj) or (None, reason).""" + adj = medial_adj(g) + col = {} + level_edges = [ed for ed in g.edges() + if level[tuple(ed)[0]] == level[tuple(ed)[1]]] + outer_es = {e(outer[0], outer[1]), e(outer[1], outer[2]), + e(outer[2], outer[0])} + for ed in level_edges: + if ed not in outer_es: + col[ed] = 2 + comps, _ = annular_cycles(g, level) + root_comp = None + free = set(outer_es) + for comp in comps: + cyc = order_cycle(comp, adj) + if cyc is None: + return None, "annulus-not-cycle" + depth = min(level[v] for ed in comp for v in ed) + if depth == 0: # root annulus (spokes touching level 0) + if root_comp is not None: + return None, "multiple-root-annuli" + root_comp = cyc + free |= set(cyc) + continue + if len(cyc) % 2 != 0: + return None, f"odd-non-root-annulus(len {len(cyc)})" + phase = rng.randint(0, 1) if rng else 0 + for i, m in enumerate(cyc): + col[m] = (i + phase) % 2 + if root_comp is None: + return None, "no-root-annulus" + # solve the free region (root annulus + outer trio) by DFS; if that + # fails, grow the defect region one level at a time. + max_level = max(level.values()) + for grow in range(0, max_level + 1): + free_now = set(free) + if grow: + for ed in g.edges(): + a, b = tuple(ed) + if min(level[a], level[b]) < grow: + free_now.add(ed) + trial = {m: c for m, c in col.items() if m not in free_now} + order = sorted(free_now, + key=lambda m: -sum(1 for x in adj[m] if x in trial)) + colorder = [0, 1, 2] + if rng: + rng.shuffle(colorder) + + def ok(m, c): + return all(trial.get(x) != c for x in adj[m]) + + def dfs(i): + if i == len(order): + return True + m = order[i] + for c in colorder: + if ok(m, c): + trial[m] = c + if dfs(i + 1): + return True + del trial[m] + return False + + if dfs(0): + for m, c in trial.items(): + for x in adj[m]: + assert trial.get(x) != c, "canonical colouring improper" + return trial, None + if len(free_now) > 60: # defect region growing unmanageable + break + return None, "root-unsolvable" + + +# --------------------------------------------------------------------------- +# Kempe switching + removal conditions. +# --------------------------------------------------------------------------- + +def kempe_component(col, adj, start, pair): + if col[start] not in pair: + return None + comp = {start} + stack = [start] + while stack: + a = stack.pop() + for b in adj[a]: + if b in col and col[b] in pair and b not in comp: + comp.add(b) + stack.append(b) + return frozenset(comp) + + +def switch(col, comp, pair): + a, b = pair + for m in comp: + col[m] = b if col[m] == a else a + + +def diamond_condition(col, w_quad): + """w_quad = (a, b, c, d) cyclic rot of planted vertex, diagonal (a, c). + Quad edges ab, bc, cd, da; new faces a-b-c and a-c-d.""" + a, b, c, d = w_quad + p, q, r, s = col[e(a, b)], col[e(b, c)], col[e(c, d)], col[e(d, a)] + if p == q or r == s: + return None + used = {p, q, r, s} + if len(used) > 2: + return None + return ({0, 1, 2} - used).pop() + + +def rainbow_condition(col, tri): + a, b, c = tri + cols = {col[e(a, b)], col[e(b, c)], col[e(c, a)]} + return len(cols) == 3 + + +def try_establish(col, adj, support, test, max_switch=3): + """Bounded search: switch <= max_switch Kempe components (any pair) + anchored at the support medials (and their coloured neighbours) to make + test(col) true. Mutates col on success; restores on failure.""" + if test(col): + return True + anchors = set(support) + for m in support: + anchors.update(adj[m]) + cands = [] + seenc = set() + for m in anchors: + if m not in col: + continue + for pair in ((0, 1), (0, 2), (1, 2)): + comp = kempe_component(col, adj, m, pair) + if comp and (comp, pair) not in seenc: + seenc.add((comp, pair)) + cands.append((comp, pair)) + for k in range(1, max_switch + 1): + for subset in combinations(range(len(cands)), k): + # only co-switch components that are pairwise vertex-disjoint + verts = set() + clash = False + for idx in subset: + if verts & cands[idx][0]: + clash = True + break + verts |= cands[idx][0] + if clash: + continue + for idx in subset: + switch(col, *cands[idx]) + if test(col): + return True + for idx in subset: + switch(col, *cands[idx]) + return False + + +# --------------------------------------------------------------------------- +# The per-graph pipeline. +# --------------------------------------------------------------------------- + +def quad_of(g, w, diag_a, diag_c): + ns = g.rot[w] + i = ns.index(diag_a) + if ns[(i + 2) % 4] != diag_c: + return None + return (ns[i], ns[(i + 1) % 4], ns[(i + 2) % 4], ns[(i + 3) % 4]) + + +def collapse_degree4(g, col, w, a, c): + """Remove planted degree-4 w restoring diagonal ac; col gets col[ac].""" + quad = quad_of(g, w, a, c) + third = diamond_condition(col, quad) + assert third is not None + for p in g.rot[w]: + col.pop(e(w, p), None) + g.remove_degree4(w, a, c) + col[e(a, c)] = third + + +def collapse_degree3(g, col, w): + for p in g.rot[w]: + col.pop(e(w, p), None) + g.remove_degree3(w) + + +def verify_proper(g, col): + adj = medial_adj(g) + for m in adj: + assert m in col, f"uncoloured medial {m}" + for b in adj[m]: + if col[m] == col[b]: + return False + return True + + +def run_graph(g0: Tri, outer=None, verbose=False, attempts=4): + import random + g0.check() + if outer is None: + outer = tuple(g0.faces()[0]) + an0 = Analysis(g0.copy(), outer) + if an0.degenerate: + return f"skip:{an0.degenerate}" + last = "fail:unknown" + for att in range(attempts): + rng = random.Random(1000 + att) + last = _attempt(g0, outer, rng, verbose) + if last == "ok" or last.startswith("skip"): + return last + return last + + +def _attempt(g0: Tri, outer, rng, verbose=False): + g = g0.copy() + an = Analysis(g, outer) + if an.degenerate: + return f"skip:{an.degenerate}" + + # --- surgeries ------------------------------------------------------- + diamonds = [] # (w, quad(a,b,c,d) with diagonal (u,v)) for removal + gadgets = [] # (y, z, u, v, x, t) + for f in an.terminal: + a, b, c = f + y, z, u, v, x, t = g.insert_leaf_gadget(a, b, c) + gadgets.append((y, z, u, v, x, t)) + # re-analyse (gadgets change seams) + an = Analysis(g, outer) + if an.degenerate: + return f"skip:post-gadget-{an.degenerate}" + for k, cyc in an.seams: + if len(cyc) % 2 == 0: + continue + # choose a seam edge whose below-apex is strictly deeper + choice = None + for i in range(len(cyc)): + a, b = cyc[i], cyc[(i + 1) % len(cyc)] + x, t = g.apexes_of(a, b) + lx, lt = an.level[x], an.level[t] + if {lx, lt} == {k - 1, k + 1}: + choice = (a, b) + break + if choice is None: + return "skip:no-diamond-site" + w, u, v, x, t = g.insert_diamond(*choice) + diamonds.append((w, u, v, x, t)) + an = Analysis(g, outer) + if an.degenerate: + return f"skip:post-diamond-{an.degenerate}" + if any(len(cyc) % 2 for _, cyc in an.seams): + return "fail:seam-evening" + + # --- canonical colouring ---------------------------------------------- + col, reason = canonical_coloring(g, an.level, outer, rng=rng) + if col is None: + return f"fail:canonical-{reason}" + + # --- descent ----------------------------------------------------------- + level = an.level + # diamonds: remove each (diagonal uv) + for w, u, v, x, t in diamonds: + adj = medial_adj(g) + quad = quad_of(g, w, u, v) + if quad is None: + return "fail:diamond-quad" + support = [e(quad[i], quad[(i + 1) % 4]) for i in range(4)] + if not try_establish(col, adj, support, + lambda c: diamond_condition(c, quad) is not None): + return "fail:diamond-switch" + collapse_degree4(g, col, w, u, v) + if not verify_proper(g, col): + return "fail:improper-after-diamond" + # gadgets: try order A (z then y) else order B (y then z) + for y, z, u, v, x, t in gadgets: + done = False + for first, second, tri in ((z, y, (x, u, v)), (y, z, (u, v, t))): + gtrial, ctrial = g.copy(), dict(col) + adj = medial_adj(gtrial) + quad = quad_of(gtrial, first, u, v) + if quad is None: + continue + support = [e(quad[i], quad[(i + 1) % 4]) for i in range(4)] + if not try_establish(ctrial, adj, support, + lambda c: diamond_condition(c, quad) is not None): + continue + collapse_degree4(gtrial, ctrial, first, u, v) + if not verify_proper(gtrial, ctrial): + continue + adj2 = medial_adj(gtrial) + a_, b_, c_ = tri + support2 = [e(a_, b_), e(b_, c_), e(c_, a_)] + if not try_establish(ctrial, adj2, support2, + lambda c: rainbow_condition(c, tri)): + continue + collapse_degree3(gtrial, ctrial, second) + if not verify_proper(gtrial, ctrial): + continue + g, col = gtrial, ctrial + done = True + break + if not done: + return "fail:gadget-removal" + + # --- final check -------------------------------------------------------- + if set(g.rot) != set(g0.rot): + return "fail:vertex-mismatch" + if not verify_proper(g, col): + return "fail:final-improper" + return "ok" + + +# --------------------------------------------------------------------------- +# Driver. +# --------------------------------------------------------------------------- + +# --------------------------------------------------------------------------- +# Synthetic clean ring triangulations (the programme's natural domain). +# --------------------------------------------------------------------------- + +def tri_from_faces(faces): + """Build a Tri from a consistently oriented face list covering the sphere + (every directed edge used exactly once).""" + succ = defaultdict(dict) + for a, b, c in faces: + succ[a][b] = c + succ[b][c] = a + succ[c][a] = b + rot = {} + for v, nx in succ.items(): + start = next(iter(nx)) + cyc = [start] + for _ in range(len(nx)): + w = nx.get(cyc[-1]) + if w is None or w == start: + break + cyc.append(w) + if len(cyc) != len(nx) or nx.get(cyc[-1]) != start: + return None + rot[v] = cyc + return Tri(rot) + + +def ring_triangulation(ring_sizes, leaf, rng): + """Concentric ring triangulation: ring_sizes[0] must be 3 (outer + triangle); annuli between consecutive rings get random tooth words; + leaf in {'hub','face'} ('face' needs innermost size 3).""" + assert ring_sizes[0] == 3 + rings = [] + nid = 0 + for r in ring_sizes: + rings.append(list(range(nid, nid + r))) + nid += r + faces = [] + for k in range(len(rings) - 1): + A, B = rings[k], rings[k + 1] + a, b = len(A), len(B) + for _ in range(50): # reject words that revisit a spoke + word = ["A"] * a + ["B"] * b + rng.shuffle(word) + spokes = {(0, 0)} + i = j = 0 + good = True + for mv in word[:-1]: + if mv == "A": + i += 1 + else: + j += 1 + if (i % a, j % b) in spokes: + good = False + break + spokes.add((i % a, j % b)) + if good: + break + else: + return None, None + i = j = 0 + for mv in word: + if mv == "A": + faces.append((A[i % a], A[(i + 1) % a], B[j % b])) + i += 1 + else: + faces.append((B[(j + 1) % b], B[j % b], A[i % a])) + j += 1 + inner = rings[-1] + if leaf == "hub": + h = nid + for j in range(len(inner)): + faces.append((inner[j], inner[(j + 1) % len(inner)], h)) + else: + assert len(inner) == 3 + faces.append((inner[0], inner[1], inner[2])) + outer = rings[0] + faces.append((outer[2], outer[1], outer[0])) # the unbounded face + for variant in (faces, [tuple(reversed(f)) for f in faces]): + g = tri_from_faces(variant) + if g is None: + continue + try: + g.check() + return g, tuple(outer) + except AssertionError: + continue + return None, None + + +def random_profile(rng): + depth = rng.randint(2, 4) + sizes = [3] + [rng.randint(3, 8) for _ in range(depth)] + leaf = "face" if (sizes[-1] == 3 and rng.random() < 0.5) else "hub" + if leaf == "face" and sizes[-1] != 3: + leaf = "hub" + return sizes, leaf + + +def main(): + ap = argparse.ArgumentParser(description=__doc__) + ap.add_argument("--min-n", type=int, default=6) + ap.add_argument("--max-n", type=int, default=10) + ap.add_argument("--limit", type=int, default=None) + ap.add_argument("--synthetic", type=int, default=0, + help="number of random ring triangulations to test") + ap.add_argument("--seed", type=int, default=1) + ap.add_argument("--verbose", action="store_true") + args = ap.parse_args() + + import random + grand = defaultdict(int) + if args.synthetic: + rng = random.Random(args.seed) + tally = defaultdict(int) + for idx in range(args.synthetic): + sizes, leaf = random_profile(rng) + g, outer = ring_triangulation(sizes, leaf, rng) + if g is None: + tally["error:construction"] += 1 + continue + try: + res = run_graph(g, outer=outer, verbose=args.verbose) + except Exception as ex: # noqa: BLE001 + res = f"error:{type(ex).__name__}" + tally[res] += 1 + grand[res] += 1 + if args.verbose and not res.startswith("ok"): + print(f" synth #{idx} sizes={sizes} leaf={leaf}: {res}") + line = " ".join(f"{k}={v}" for k, v in sorted(tally.items())) + print(f"synthetic ({args.synthetic}): {line}") + else: + for n in range(args.min_n, args.max_n + 1): + tally = defaultdict(int) + gs = plantri_triangulations(n, args.limit) + for idx, g in enumerate(gs): + try: + res = run_graph(g, verbose=args.verbose) + except Exception as ex: # noqa: BLE001 + res = f"error:{type(ex).__name__}" + tally[res] += 1 + grand[res] += 1 + if args.verbose and not res.startswith(("ok", "skip")): + print(f" n={n} #{idx}: {res}") + line = " ".join(f"{k}={v}" for k, v in sorted(tally.items())) + print(f"n={n} ({len(gs)} graphs): {line}") + sys.stdout.flush() + print("\nTOTAL: " + " ".join(f"{k}={v}" for k, v in sorted(grand.items()))) + + +if __name__ == "__main__": + main()