even_level: add "Toward a characterization of bridge-derived graphs"

Record the partition sweep on the n=24 Fig 2.10 dual. New subsection +
experiments/bridge_partition_sweep.py.

Findings:
- A bridge switch is a constrained diagonal flip; bridge-derived via L
  means lying in an Even-Level-Graph component of the restricted flip
  graph. So the question is which flip-components contain an ELG.
- Identity: every 4-coloring of a triangulation has e_cross = 2n-4 (each
  face has one within-pair edge), so total parity-subgraph Betti =
  (c_A+c_B)-2; intertwining trees are the Betti-0 case.
- Of T's 333 valid partitions, total Betti splits 288/42/3 over 1/2/3;
  min is 1 (T not intertwining). All 27 partitions found bridge-derived
  (depth 2-3) have the minimum Betti 1 -> necessary.
- But not sufficient: only 27 of 288 Betti-1 partitions yield a witness;
  the rest have flip-orbits >1.5e5 with no ELG, and a 12x budget increase
  found none. The discriminator is flip-component structure (sharp
  orbit-size dichotomy), not a numerical invariant. Characterizing which
  Betti-minimal partitions sit in an ELG component is left open.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-22 17:41:13 -04:00
parent 435f055d82
commit 36ed7bac38
6 changed files with 168 additions and 24 deletions
@@ -0,0 +1,89 @@
"""Probe which valid parity partitions of the Fig. 2.10 dual T (24-vertex
5-connected triangulation) make it bridge-derived, and what distinguishes
them.
For every valid parity partition L of T we record:
- e_cross, e_A, e_B and the total first Betti number of the two parity
subgraphs (which equals (c_A + c_B) - 2, since e_A + e_B = n - 2 for
every 4-coloring of a triangulation: each triangle has exactly one
within-colour-pair edge, 2n-4 triangles, each such edge in 2 faces);
- whether L is the BFS-level parity of T from some source;
- the outcome of a backward bridge-orbit search (found / capped).
Finding: minimal total Betti (= 1 here, since T is not intertwining) is
necessary for the bridge-derived partitions we locate, but far from
sufficient -- the bridge-derivable partitions form a small, sharply
separated subset distinguished by tiny flip-orbit size, not by any simple
count. See the paper subsection "Toward a characterization of
bridge-derived graphs".
"""
import sys
import os
import time
from collections import defaultdict
sys.path.insert(0, '/Users/didericis/Code/math-research/papers/'
'level_resolutions_of_maximal_planar_graphs/experiments')
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
import networkx as nx
from sage.all import Graph # type: ignore
from tutte_dual_treecolor import dual_triangulation
from test_tutte_bridge import valid_parity_partitions_via_coloring, search_partition
from test_fig210_dual_bridge import sage_to_nx
from fast_bridge import EdgeCode
HERE = os.path.dirname(os.path.abspath(__file__))
def parity_stats(T, labels):
A = [v for v in T if labels[v] == 0]
B = [v for v in T if labels[v] == 1]
GA, GB = T.subgraph(A), T.subgraph(B)
cA = nx.number_connected_components(GA)
cB = nx.number_connected_components(GB)
bA = GA.number_of_edges() - len(A) + cA
bB = GB.number_of_edges() - len(B) + cB
ecross = T.number_of_edges() - GA.number_of_edges() - GB.number_of_edges()
realiz = any(
all((nx.single_source_shortest_path_length(T, s)[v] % 2) == labels[v] for v in T)
or all((nx.single_source_shortest_path_length(T, s)[v] % 2) != labels[v] for v in T)
for s in T
)
return dict(eA=GA.number_of_edges(), eB=GB.number_of_edges(), ecross=ecross,
betti=bA + bB, cA=cA, cB=cB, realiz=realiz)
def main(cap=12000, time_limit=6.0):
g6 = open(os.path.join(HERE, 'fig210_dual.g6')).read().strip()
T, _ = dual_triangulation(sage_to_nx(Graph(g6)))
n = T.number_of_nodes()
parts, _ = valid_parity_partitions_via_coloring(T)
code = EdgeCode(T.nodes())
code.state0 = code.state_of(T)
print('T: n=%d, e_cross should be 2n-4=%d; %d valid partitions'
% (n, 2 * n - 4, len(parts)), flush=True)
by_betti = defaultdict(lambda: [0, 0]) # betti -> [found, not_found]
ecross_vals = set()
t0 = time.time()
for k, labels in enumerate(parts):
st = parity_stats(T, labels)
ecross_vals.add(st['ecross'])
status, sz, depth = search_partition(code, labels, n, cap, time_limit)
slot = 0 if status == 'found' else 1
by_betti[st['betti']][slot] += 1
if status == 'found':
print(' found k=%d betti=%d depth=%s orbit=%d realiz=%s'
% (k, st['betti'], depth, sz, st['realiz']), flush=True)
if (k + 1) % 50 == 0:
print(' ...%d/%d (%.0fs)' % (k + 1, len(parts), time.time() - t0), flush=True)
print('\ne_cross values over all partitions: %s (constant = identity check)'
% sorted(ecross_vals), flush=True)
print('betti -> [bridge-derived, not-found-at-cap=%d]:' % cap, flush=True)
for b in sorted(by_betti):
print(' betti=%d : %s' % (b, by_betti[b]), flush=True)
print('(%.0fs)' % (time.time() - t0), flush=True)
if __name__ == '__main__':
main()
+6 -5
View File
@@ -49,15 +49,16 @@
\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces The six Holton--McKay duals at $n = 21$, the first triangulations that are not intertwining trees. Each is a bridge-derived level graph: duals $1$ and $2$ are Even Level Graphs outright (zero switches), and the remaining four reach an Even Level Graph in $1$--$4$ bridge switches. All witnesses are step-verified.}}{8}{table.2}\protected@file@percent }
\newlabel{tab:n21}{{2}{8}{The six Holton--McKay duals at $n = 21$, the first triangulations that are not intertwining trees. Each is a bridge-derived level graph: duals $1$ and $2$ are Even Level Graphs outright (zero switches), and the remaining four reach an Even Level Graph in $1$--$4$ bridge switches. All witnesses are step-verified}{table.2}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{}{The cyclically-$5$-connected case: $n = 24$}}{8}{section*.3}\protected@file@percent }
\bibcite{holton-mckay}{1}
\@writefile{lof}{\contentsline {figure}{\numberline {5}{\ignorespaces The six Holton--McKay duals, drawn as crossing-free planar graphs and coloured by parity (blue even, orange odd, with respect to the fixed level-parity labelling). The solid green edges are the bridge edges introduced by the bridge switches from each dual's witness Even Level Graph. Each green edge is a bridge of its parity subgraph, so no new cycle -- and in particular no odd cycle -- is created; duals $1$ and $2$ coincide with their Even Level Graphs and have no added edge.}}{9}{figure.5}\protected@file@percent }
\newlabel{fig:n21-duals}{{5}{9}{The six Holton--McKay duals, drawn as crossing-free planar graphs and coloured by parity (blue even, orange odd, with respect to the fixed level-parity labelling). The solid green edges are the bridge edges introduced by the bridge switches from each dual's witness Even Level Graph. Each green edge is a bridge of its parity subgraph, so no new cycle -- and in particular no odd cycle -- is created; duals $1$ and $2$ coincide with their Even Level Graphs and have no added edge}{figure.5}{}}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces The $24$-vertex dual $T$ of the unique $44$-vertex non-Hamiltonian cyclically $5$-connected cubic planar graph (Holton--McKay Fig.\nonbreakingspace 2.10), drawn crossing-free and coloured by the fixed parity labelling (blue even, orange odd). $T$ is $5$-connected and not an intertwining tree, yet is a bridge-derived level graph: the two solid green edges $\{6,19\}$ and $\{20,22\}$ are the bridge edges introduced by the two bridge switches carrying its witness Even Level Graph (source $19$) to $T$. Each green edge is a bridge of its parity subgraph -- $\{6, 19\}$ in the even subgraph, $\{20,22\}$ in the odd -- so no new cycle, and in particular no odd cycle, is created.}}{10}{figure.6}\protected@file@percent }
\newlabel{fig:n24-dual}{{6}{10}{The $24$-vertex dual $T$ of the unique $44$-vertex non-Hamiltonian cyclically $5$-connected cubic planar graph (Holton--McKay Fig.~2.10), drawn crossing-free and coloured by the fixed parity labelling (blue even, orange odd). $T$ is $5$-connected and not an intertwining tree, yet is a bridge-derived level graph: the two solid green edges $\{6,19\}$ and $\{20,22\}$ are the bridge edges introduced by the two bridge switches carrying its witness Even Level Graph (source $19$) to $T$. Each green edge is a bridge of its parity subgraph -- $\{6, 19\}$ in the even subgraph, $\{20,22\}$ in the odd -- so no new cycle, and in particular no odd cycle, is created}{figure.6}{}}
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{}{Toward a characterization of bridge-derived graphs}}{10}{section*.4}\protected@file@percent }
\bibcite{holton-mckay}{1}
\newlabel{tocindent-1}{0pt}
\newlabel{tocindent0}{14.69437pt}
\newlabel{tocindent1}{17.77782pt}
\newlabel{tocindent2}{0pt}
\newlabel{tocindent3}{0pt}
\@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces The $24$-vertex dual $T$ of the unique $44$-vertex non-Hamiltonian cyclically $5$-connected cubic planar graph (Holton--McKay Fig.\nonbreakingspace 2.10), drawn crossing-free and coloured by the fixed parity labelling (blue even, orange odd). $T$ is $5$-connected and not an intertwining tree, yet is a bridge-derived level graph: the two solid green edges $\{6,19\}$ and $\{20,22\}$ are the bridge edges introduced by the two bridge switches carrying its witness Even Level Graph (source $19$) to $T$. Each green edge is a bridge of its parity subgraph -- $\{6, 19\}$ in the even subgraph, $\{20,22\}$ in the odd -- so no new cycle, and in particular no odd cycle, is created.}}{10}{figure.6}\protected@file@percent }
\newlabel{fig:n24-dual}{{6}{10}{The $24$-vertex dual $T$ of the unique $44$-vertex non-Hamiltonian cyclically $5$-connected cubic planar graph (Holton--McKay Fig.~2.10), drawn crossing-free and coloured by the fixed parity labelling (blue even, orange odd). $T$ is $5$-connected and not an intertwining tree, yet is a bridge-derived level graph: the two solid green edges $\{6,19\}$ and $\{20,22\}$ are the bridge edges introduced by the two bridge switches carrying its witness Even Level Graph (source $19$) to $T$. Each green edge is a bridge of its parity subgraph -- $\{6, 19\}$ in the even subgraph, $\{20,22\}$ in the odd -- so no new cycle, and in particular no odd cycle, is created}{figure.6}{}}
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{10}{section*.4}\protected@file@percent }
\gdef \@abspage@last{10}
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{11}{section*.5}\protected@file@percent }
\gdef \@abspage@last{11}
+19 -18
View File
@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 22 MAY 2026 16:17
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 22 MAY 2026 17:40
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@@ -355,23 +355,23 @@ e
))
[1{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
[2]
<fig_levels.png, id=70, 454.21695pt x 391.34206pt>
<fig_levels.png, id=74, 454.21695pt x 391.34206pt>
File: fig_levels.png Graphic file (type png)
<use fig_levels.png>
Package pdftex.def Info: fig_levels.png used on input line 213.
(pdftex.def) Requested size: 198.0011pt x 170.59666pt.
<fig_level_cycle.png, id=72, 452.04884pt x 391.34206pt>
<fig_level_cycle.png, id=76, 452.04884pt x 391.34206pt>
File: fig_level_cycle.png Graphic file (type png)
<use fig_level_cycle.png>
Package pdftex.def Info: fig_level_cycle.png used on input line 227.
(pdftex.def) Requested size: 198.0011pt x 171.40878pt.
[3 <./fig_levels.png> <./fig_level_cycle.png>]
<fig_edge_switch.png, id=85, 859.65166pt x 378.33345pt>
<fig_edge_switch.png, id=89, 859.65166pt x 378.33345pt>
File: fig_edge_switch.png Graphic file (type png)
<use fig_edge_switch.png>
Package pdftex.def Info: fig_edge_switch.png used on input line 246.
(pdftex.def) Requested size: 341.9989pt x 150.51671pt.
<fig_parity_subgraph.png, id=87, 1076.46165pt x 319.79475pt>
<fig_parity_subgraph.png, id=91, 1076.46165pt x 319.79475pt>
File: fig_parity_subgraph.png Graphic file (type png)
<use fig_parity_subgraph.png>
Package pdftex.def Info: fig_parity_subgraph.png used on input line 264.
@@ -408,7 +408,7 @@ Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `math shift' on input line 489.
[7]
<figures/n21_duals.png, id=129, 1373.13pt x 867.24pt>
<figures/n21_duals.png, id=133, 1373.13pt x 867.24pt>
File: figures/n21_duals.png Graphic file (type png)
<use figures/n21_duals.png>
Package pdftex.def Info: figures/n21_duals.png used on input line 549.
@@ -431,23 +431,24 @@ Package hyperref Warning: Token not allowed in a PDF string (Unicode):
(hyperref) removing `math shift' on input line 562.
[8]
<figures/fig210_dual.png, id=137, 542.025pt x 542.025pt>
<figures/fig210_dual.png, id=141, 542.025pt x 542.025pt>
File: figures/fig210_dual.png Graphic file (type png)
<use figures/fig210_dual.png>
Package pdftex.def Info: figures/fig210_dual.png used on input line 611.
(pdftex.def) Requested size: 251.9989pt x 251.99767pt.
[9 <./figures/n21_duals.png>] [10 <./figures/fig210_dual.png>] (./paper.aux)
[9 <./figures/n21_duals.png>] [10 <./figures/fig210_dual.png>] [11]
(./paper.aux)
Package rerunfilecheck Info: File `paper.out' has not changed.
(rerunfilecheck) Checksum: A0B582009EF9672D6DFFA8A6FC189E33;1351.
(rerunfilecheck) Checksum: 07795806A5B77195784AD505FD598897;1669.
)
Here is how much of TeX's memory you used:
9774 strings out of 478268
151348 string characters out of 5846347
9778 strings out of 478268
151395 string characters out of 5846347
454738 words of memory out of 5000000
27666 multiletter control sequences out of 15000+600000
27668 multiletter control sequences out of 15000+600000
475834 words of font info for 54 fonts, out of 8000000 for 9000
1302 hyphenation exceptions out of 8191
69i,9n,76p,822b,508s stack positions out of 10000i,1000n,20000p,200000b,200000s
69i,9n,76p,822b,450s stack positions out of 10000i,1000n,20000p,200000b,200000s
</usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb
></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmex10.pfb>
@@ -463,10 +464,10 @@ ive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/local/texli
ve/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb></usr/local/texlive
/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/local/texlive/
2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb>
Output written on paper.pdf (10 pages, 1236887 bytes).
Output written on paper.pdf (11 pages, 1245166 bytes).
PDF statistics:
226 PDF objects out of 1000 (max. 8388607)
170 compressed objects within 2 object streams
42 named destinations out of 1000 (max. 500000)
95 words of extra memory for PDF output out of 10000 (max. 10000000)
236 PDF objects out of 1000 (max. 8388607)
179 compressed objects within 2 object streams
44 named destinations out of 1000 (max. 500000)
103 words of extra memory for PDF output out of 10000 (max. 10000000)
+2 -1
View File
@@ -5,4 +5,5 @@
\BOOKMARK [2][-]{section*.1}{\376\377\000E\000n\000u\000m\000e\000r\000a\000t\000i\000o\000n\000\040\000f\000o\000r\000\040\000s\000m\000a\000l\000l\000\040\000n}{section.4}% 5
\BOOKMARK [2][-]{section*.2}{\376\377\000T\000h\000e\000\040\000b\000o\000u\000n\000d\000a\000r\000y\000\040\000c\000a\000s\000e\000\040\000n\000\040\000=\000\040\0002\0001}{section.4}% 6
\BOOKMARK [2][-]{section*.3}{\376\377\000T\000h\000e\000\040\000c\000y\000c\000l\000i\000c\000a\000l\000l\000y\000-\0005\000-\000c\000o\000n\000n\000e\000c\000t\000e\000d\000\040\000c\000a\000s\000e\000:\000\040\000n\000\040\000=\000\040\0002\0004}{section.4}% 7
\BOOKMARK [1][-]{section*.4}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 8
\BOOKMARK [2][-]{section*.4}{\376\377\000T\000o\000w\000a\000r\000d\000\040\000a\000\040\000c\000h\000a\000r\000a\000c\000t\000e\000r\000i\000z\000a\000t\000i\000o\000n\000\040\000o\000f\000\040\000b\000r\000i\000d\000g\000e\000-\000d\000e\000r\000i\000v\000e\000d\000\040\000g\000r\000a\000p\000h\000s}{section.4}% 8
\BOOKMARK [1][-]{section*.5}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 9
Binary file not shown.
@@ -622,6 +622,58 @@ in particular no odd cycle, is created.}
\label{fig:n24-dual}
\end{figure}
\subsection*{Toward a characterization of bridge-derived graphs}
A bridge switch is a diagonal flip of the quadrilateral around a level
edge, constrained so the flipped-in edge enters no parity subgraph as a
cycle edge. Fixing a valid parity partition $L$, the bridge switches
therefore act on the triangulations whose two $L$-parity subgraphs are
both bipartite, and $G$ is a bridge-derived level graph via $L$ exactly
when $G$ lies in the same connected component as an Even Level Graph in
this restricted flip graph. So the question ``which triangulations are
bridge-derived?'' is really ``which flip-components contain an Even Level
Graph?'', quantified over $L$. We probed this on the $24$-vertex dual $T$
of Figure~\ref{fig:n24-dual}, sweeping all of its valid parity partitions;
the experiment is recorded in \texttt{experiments/bridge\_partition\_sweep.py}.
One coordinate organises the picture. For any proper $4$-coloring of a
triangulation, group the colours as $\{1,2\}\mid\{3,4\}$; then each
triangular face has exactly one within-pair edge, and since there are
$2n-4$ faces and each edge lies on two of them, the parity subgraphs carry
exactly $n-2$ edges between them. Hence $e_{\mathrm{cross}} = 2n-4$ for
\emph{every} valid partition (confirmed across all partitions of $T$), and
the total first Betti number of the two parity subgraphs equals
$(c_A + c_B) - 2$, where $c_A, c_B$ count their connected components. The
intertwining-tree case is precisely total Betti $0$ -- both parts trees,
$c_A = c_B = 1$ -- so for a triangulation that is not an intertwining tree
the total Betti is at least $1$.
The $333$ valid partitions of $T$ have total Betti $1$, $2$, $3$ for
$288$, $42$, $3$ of them respectively; the minimum is $1$, consistent with
$T$ not being an intertwining tree. A backward bridge-orbit search locates
Even Level Graph witnesses (at depth $2$--$3$) for $27$ partitions, and
\emph{every} one of them has the minimum total Betti $1$ -- one parity
class a tree, the other a tree plus a single even cycle. Minimal total
Betti is thus a necessary feature of the bridge-derived partitions we
find.
It is not sufficient, and the way it fails is informative. Of the $288$
Betti-$1$ partitions only those $27$ yield a witness; the rest exhibit
bridge-orbits exceeding $1.5\times 10^5$ states with no Even Level Graph,
and increasing the search budget twelvefold produced no further witnesses.
The bridge-derivable partitions are separated from the others not by any
of the simple invariants we measured -- total Betti, component counts,
class sizes, or BFS-level realizability (uniformly false here) -- but by a
sharp dichotomy in flip-orbit size: a tiny component containing an Even
Level Graph versus a vast one that appears not to. (We cannot yet certify
the latter, as no large orbit was exhausted; but a twelvefold budget
increase yielding nothing makes mere depth an unlikely explanation.) The
evidence therefore points away from a numerical characterization and
toward the component structure of the restricted flip graph: minimal total
Betti is a clean necessary condition, but characterizing \emph{which}
Betti-minimal partitions lie in an Even-Level-Graph component remains open
and is, on this evidence, the crux of deciding bridge-derivability.
\begin{thebibliography}{9}
\bibitem{holton-mckay}