Back the 2^(n-2) floor with validated diverse-disk search

The stacked-only search missed non-stacked disks, and cocircular boundary
points gave degenerate Delaunay (invalid disks, spurious sub-floor |Phi|).
Add floor_diverse_disks.py: 1700+ validated disks per n (convex non-
cocircular boundary, face-count and boundary-edge checks) confirm min|Phi|
= 2^(n-2). Note records that interior structure tends to ENLARGE Phi
(wheel 5 vs fan 4) and that depth adds two faces per one constraint.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-17 02:22:41 -04:00
parent d2156f06ee
commit b70ea2c087
4 changed files with 113 additions and 9 deletions
@@ -0,0 +1,94 @@
"""
Robustness check for the 2^(n-2) constraint floor over DIVERSE (not just stacked)
triangulated disks.
maximally_constrain.py searches Apollonian-stacked disks only, which miss
non-stacked triangulations (e.g. a wheel with a high-degree center). Here we
generate disks from random interior points + Delaunay, with boundary points in
convex but NON-cocircular position (cocircular boundary points are a Delaunay
degeneracy that yields INVALID disks -- missing a boundary edge -- and spuriously
report sub-floor |Phi|). Every disk is validated (2k+n-2 faces, all n boundary
edges present) before Phi is computed.
Finding: min |Phi| over validated diverse disks is exactly 2^(n-2), attained by
the interior-free triangulation; deeper structure never goes below it (and the
central-apex wheel actually ENLARGES Phi: 5 vs the fan's 4 on the 4-cycle).
"""
import sys
from collections import Counter
from itertools import product
import numpy as np
from scipy.spatial import Delaunay
np.seterr(all="ignore")
def disk(n, k, rng):
ang = 2 * np.pi * np.arange(n) / n
rad = 1.0 + 0.15 * rng.random(n) # convex but not cocircular
bpts = np.c_[rad * np.cos(ang), rad * np.sin(ang)]
if k:
r = 0.75 * np.sqrt(rng.random(k)); t = 2 * np.pi * rng.random(k)
ipts = np.c_[r * np.cos(t), r * np.sin(t)]
pts = np.vstack([bpts, ipts])
else:
pts = bpts
tri = Delaunay(pts)
return [tuple(int(x) for x in s) for s in tri.simplices]
def valid(faces, n, k):
if len(faces) != 2 * k + n - 2:
return False
ec = Counter()
for a, b, c in faces:
for e in ((a, b), (b, c), (a, c)):
ec[frozenset(e)] += 1
return all(ec[frozenset((i, (i + 1) % n))] == 1 for i in range(n))
def phi(faces, n, k):
F = len(faces)
interior = list(range(n, n + k))
Bint = np.zeros((len(interior), F), dtype=np.int64)
Cinc = np.zeros((n, F), dtype=np.int64)
for j, (a, b, c) in enumerate(faces):
for v in (a, b, c):
if v >= n:
Bint[interior.index(v), j] = 1
else:
Cinc[v, j] = 1
labs = np.array(list(product((1, 2), repeat=F)), dtype=np.int64)
if interior:
labs = labs[np.all((labs @ Bint.T) % 3 == 0, axis=1)]
if labs.shape[0] == 0:
return set()
return set(map(tuple, np.unique((labs @ Cinc.T) % 3, axis=0)))
def main():
ns = [int(x) for x in sys.argv[1:]] or [4, 5, 6]
rng = np.random.default_rng(1)
print("Min |Phi| over validated diverse (Delaunay) disks\n")
for n in ns:
best = 10 ** 9; bk = None; nval = 0; max_seen = 0
for k in range(0, 7):
for _ in range(250):
faces = disk(n, k, rng)
if not valid(faces, n, k) or len(faces) > 20:
continue
nval += 1
P = phi(faces, n, k)
if P:
max_seen = max(max_seen, len(P))
if len(P) < best:
best = len(P); bk = k
print(f" n={n}: {nval} valid disks min|Phi|={best} (k={bk}) "
f"max|Phi|={max_seen} 2^(n-2)={2**(n-2)} "
f"below-floor={best < 2**(n-2)}")
if __name__ == "__main__":
main()
@@ -1,4 +1,4 @@
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 17 JUN 2026 02:12
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 17 JUN 2026 02:21
entering extended mode
restricted \write18 enabled.
%&-line parsing enabled.
@@ -175,7 +175,7 @@ File: l3backend-pdftex.def 2022-02-07 L3 backend support: PDF output (pdfTeX)
\l__color_backend_stack_int=\count278
\l__pdf_internal_box=\box52
)
No file boundary_restriction_structure.aux.
(./boundary_restriction_structure.aux)
\openout1 = `boundary_restriction_structure.aux'.
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 18.
@@ -192,6 +192,7 @@ LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 18.
LaTeX Font Info: ... okay on input line 18.
(/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
[Loading MPS to PDF converter (version 2006.09.02).]
\scratchcounter=\count279
@@ -263,9 +264,9 @@ File: umsb.fd 2013/01/14 v3.01 AMS symbols B
{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2]
(./boundary_restriction_structure.aux) )
Here is how much of TeX's memory you used:
3254 strings out of 478268
48506 string characters out of 5846347
347668 words of memory out of 5000000
3256 strings out of 478268
48576 string characters out of 5846347
348659 words of memory out of 5000000
21442 multiletter control sequences out of 15000+600000
480359 words of font info for 70 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
@@ -287,7 +288,7 @@ fonts/cm/cmsy8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfo
nts/cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfon
ts/cm/cmtt10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfont
s/symbols/msbm10.pfb>
Output written on boundary_restriction_structure.pdf (2 pages, 184212 bytes).
Output written on boundary_restriction_structure.pdf (2 pages, 185232 bytes).
PDF statistics:
91 PDF objects out of 1000 (max. 8388607)
54 compressed objects within 1 object stream
@@ -87,9 +87,18 @@ $2^{\,n-2}$ & $4$ & $8$ & $16$ & $32$\\
\end{tabular}
\end{center}
A search over random and deep-stacked disks (up to $8$ interior vertices)
never beat $2^{n-2}$, and the interior-free triangulation already
attains it. Thus:
A search over $1700{+}$ \emph{validated} triangulated disks per $n$
(boundary points in convex but non-cocircular position, random interior
points, Delaunay; each checked to have $2k+n-2$ faces and all $n$
boundary edges present), together with deep-stacked single-apex chains up
to $8$ interior vertices, never beat $2^{n-2}$, and the interior-free
triangulation already attains it. (Note: cocircular boundary points
produce degenerate Delaunay outputs --- invalid disks missing a boundary
edge --- which spuriously report sub-floor values; these are excluded by
the validity check.) Counterintuitively, adding interior structure tends
to \emph{enlarge} $\Phi$: e.g.\ on the $4$-cycle the central-apex wheel
realises $5$ sequences against the fan's $4$, since each interior vertex
contributes two faces but only one constraint. Thus:
\begin{obs}
The outer $n$-cycle cannot be constrained below $2^{n-2}$ achievable