coloring_nested_tire_graphs: investigate chord case in O for tire face connectors
Companion to tire_fiber_data.tex. The chord case forces a modelling
choice for the surrounding G: Steiner-rich (each B_in edge gets its
own sub-triangle, chords are invisible to T'_{f'}) vs Steiner-poor
(each O-face is one G-face, chord set determines feasibility).
Under SP, a tire with k > 3 is infeasible unless O already contains
enough chords to keep every O-face at most 3 B_in edges. With chords:
support is positive but much smaller than SR — π_D never reaches 3^k,
and π_D's shrinkage is m-independent. More chords = smaller faces =
MORE support (each chord splits a hard constraint into easier ones).
Side-by-side data table for (m, k) ∈ {3,4,5,6,...}² with various
chord sets, plus 3-page note documenting the modelling choice and
implications for chain pigeonhole.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,191 @@
|
||||
"""Investigate fiber distributions when the inner outerplanar graph O
|
||||
has non-trivial chords.
|
||||
|
||||
A chord in O does NOT change the dual annular cycle T'_ann (which is
|
||||
still C_{m+k}). What it changes is the inside-O face structure: with
|
||||
j non-crossing chords, O has j+1 inside-O faces. Each face f dualizes
|
||||
to a single vertex u_f in G', whose degree in T'_{f'} equals the
|
||||
number of B_in edges on the boundary of f.
|
||||
|
||||
Concretely: if a face f contains B_in edges e_{a_1}, ..., e_{a_d},
|
||||
then u_f is incident in T'_{f'} to the d D-triangle positions
|
||||
p_{a_1}, ..., p_{a_d} on the dual cycle (one per B_in edge). Proper
|
||||
edge 3-coloring at u_f requires those d spoke colors to be pairwise
|
||||
distinct.
|
||||
|
||||
Feasibility constraint: at k=3 colors, a face with d > 3 incident
|
||||
B_in edges has no proper edge 3-coloring of u_f, so the tire admits
|
||||
no global coloring. All examples below satisfy d <= 3 per face.
|
||||
"""
|
||||
from collections import Counter
|
||||
from itertools import product
|
||||
|
||||
COLORS = (1, 2, 3)
|
||||
|
||||
|
||||
def d_positions_for(m: int, k: int) -> list[int]:
|
||||
"""Return cycle positions of D-triangles on the dual cycle C_{m+k}
|
||||
for a balanced (Bresenham-style) alternating triangulation, in
|
||||
the cyclic order matching B_in edges e_0, e_1, ..., e_{k-1}."""
|
||||
n = m + k
|
||||
return [round(i * n / k) % n for i in range(k)]
|
||||
|
||||
|
||||
def compute_faces_from_chords(k: int, chords: list[tuple[int, int]]) -> list[list[int]]:
|
||||
"""Compute face partition of B_in = C_k cut by non-crossing chords.
|
||||
|
||||
Each face is returned as a list of B_in edge indices belonging to
|
||||
it. For non-crossing chords: edge e_a belongs to the smallest
|
||||
enclosing chord-arc, where chord (i, j) with i < j encloses e_a
|
||||
iff i <= a < j. Edges not enclosed by any chord belong to the
|
||||
'outermost' face."""
|
||||
chords_norm = [tuple(sorted([a, b])) for (a, b) in chords]
|
||||
|
||||
def enclosing_chord(edge: int):
|
||||
candidates = [(j - i, i, j) for (i, j) in chords_norm if i <= edge < j]
|
||||
if not candidates:
|
||||
return None
|
||||
candidates.sort()
|
||||
_, i, j = candidates[0]
|
||||
return (i, j)
|
||||
|
||||
chord_to_face = {}
|
||||
next_face = 0
|
||||
edge_to_face = {}
|
||||
for a in range(k):
|
||||
ch = enclosing_chord(a)
|
||||
if ch not in chord_to_face:
|
||||
chord_to_face[ch] = next_face
|
||||
next_face += 1
|
||||
edge_to_face[a] = chord_to_face[ch]
|
||||
|
||||
faces = [[] for _ in range(next_face)]
|
||||
for a in range(k):
|
||||
faces[edge_to_face[a]].append(a)
|
||||
return faces
|
||||
|
||||
|
||||
def fiber_distribution(m: int, k: int, chords: list[tuple[int, int]]):
|
||||
"""Compute fiber distribution N(T'_{f'}; σ) over σ ∈ {1,2,3}^n for
|
||||
the tire with given m, k, and chord set in O.
|
||||
|
||||
Returns (fibers, d_positions, faces_as_cycle_positions).
|
||||
"""
|
||||
n = m + k
|
||||
d_positions = d_positions_for(m, k)
|
||||
o_faces = compute_faces_from_chords(k, chords)
|
||||
d_positions_by_face = [
|
||||
[d_positions[a] for a in face_edges]
|
||||
for face_edges in o_faces
|
||||
]
|
||||
|
||||
fibers: Counter[tuple[int, ...]] = Counter()
|
||||
for ce in product(COLORS, repeat=n):
|
||||
if not all(ce[i] != ce[(i + 1) % n] for i in range(n)):
|
||||
continue
|
||||
sigma = tuple(
|
||||
({1, 2, 3} - {ce[(i - 1) % n], ce[i]}).pop()
|
||||
for i in range(n)
|
||||
)
|
||||
ok = True
|
||||
for positions in d_positions_by_face:
|
||||
colors = [sigma[p] for p in positions]
|
||||
if len(set(colors)) != len(colors):
|
||||
ok = False
|
||||
break
|
||||
if ok:
|
||||
fibers[sigma] += 1
|
||||
return fibers, d_positions, d_positions_by_face
|
||||
|
||||
|
||||
def projection_support(fibers, positions: list[int]) -> set[tuple[int, ...]]:
|
||||
return {tuple(sigma[p] for p in positions) for sigma in fibers}
|
||||
|
||||
|
||||
CASES = [
|
||||
# (m, k, chords, label)
|
||||
(4, 4, [], "(4,4) no chord [baseline]"),
|
||||
(4, 4, [(0, 2)], "(4,4) chord (0,2) faces 2+2"),
|
||||
(5, 5, [], "(5,5) no chord [baseline]"),
|
||||
(5, 5, [(0, 2)], "(5,5) chord (0,2) faces 2+3"),
|
||||
(5, 5, [(0, 3)], "(5,5) chord (0,3) faces 3+2"),
|
||||
(6, 6, [], "(6,6) no chord [baseline]"),
|
||||
(6, 6, [(0, 3)], "(6,6) chord (0,3) antipodal faces 3+3"),
|
||||
(6, 6, [(0, 2), (3, 5)], "(6,6) chords (0,2)(3,5) faces 2+2+2"),
|
||||
# k=4 with smaller outer cycle:
|
||||
(3, 4, [], "(3,4) no chord"),
|
||||
(3, 4, [(0, 2)], "(3,4) chord (0,2)"),
|
||||
# larger n for k=4:
|
||||
(6, 4, [], "(6,4) no chord"),
|
||||
(6, 4, [(0, 2)], "(6,4) chord (0,2)"),
|
||||
]
|
||||
|
||||
|
||||
def u_positions_for(m: int, k: int) -> list[int]:
|
||||
"""U-positions (outer-spoke cycle positions) = complement of D-positions."""
|
||||
n = m + k
|
||||
d = set(d_positions_for(m, k))
|
||||
return [p for p in range(n) if p not in d]
|
||||
|
||||
|
||||
def spoke_only_fiber_distribution(n: int):
|
||||
"""Step-1 baseline: G_n = C_n + n independent pendants (Steiner-rich,
|
||||
each B_in edge gets its own inside-O sub-triangle). No chord
|
||||
constraints; every σ that comes from a proper cycle 3-coloring is
|
||||
realisable."""
|
||||
fibers: Counter[tuple[int, ...]] = Counter()
|
||||
for ce in product(COLORS, repeat=n):
|
||||
if not all(ce[i] != ce[(i + 1) % n] for i in range(n)):
|
||||
continue
|
||||
sigma = tuple(
|
||||
({1, 2, 3} - {ce[(i - 1) % n], ce[i]}).pop()
|
||||
for i in range(n)
|
||||
)
|
||||
fibers[sigma] += 1
|
||||
return dict(fibers)
|
||||
|
||||
|
||||
def main():
|
||||
print("Two models compared per (m, k, chord-set):")
|
||||
print(" STEINER-RICH: G triangulates each O-face using internal Steiner vertices,")
|
||||
print(" so each B_in edge dualizes to its own (degree-1) inside-O triangle.")
|
||||
print(" Chord set has NO effect on T'_{f'}; equivalent to step-1 baseline.")
|
||||
print(" STEINER-POOR: G does NOT further sub-triangulate O-faces beyond O itself.")
|
||||
print(" Each O-face becomes one G-face with degree = (B_in-edge count).")
|
||||
print(" Edge-3-colorable only if every O-face has ≤ 3 B_in edges.")
|
||||
print()
|
||||
print(f"{'case':<42s} {'n':>3s} "
|
||||
f"{'P_e SR':>7s} {'D SR':>7s} {'U SR':>7s} | "
|
||||
f"{'P_e SP':>7s} {'D SP':>7s} {'U SP':>7s} | "
|
||||
f"faces (cycle-position groups)")
|
||||
print("-" * 145)
|
||||
for m, k, chords, label in CASES:
|
||||
n = m + k
|
||||
# Steiner-poor (with chord-induced constraints):
|
||||
fibers_sp, d_pos, faces_cp = fiber_distribution(m, k, chords)
|
||||
u_pos = u_positions_for(m, k)
|
||||
pe_sp = sum(fibers_sp.values())
|
||||
d_proj_sp = projection_support(fibers_sp, d_pos)
|
||||
u_proj_sp = projection_support(fibers_sp, u_pos)
|
||||
|
||||
# Steiner-rich baseline (chord-set ignored):
|
||||
fibers_sr = spoke_only_fiber_distribution(n)
|
||||
pe_sr = sum(fibers_sr.values())
|
||||
d_proj_sr = projection_support(fibers_sr, d_pos)
|
||||
u_proj_sr = projection_support(fibers_sr, u_pos)
|
||||
|
||||
d_uni = 3 ** k
|
||||
u_uni = 3 ** m
|
||||
faces_str = " | ".join(
|
||||
"{" + ",".join(map(str, sorted(f))) + "}" for f in faces_cp
|
||||
)
|
||||
print(
|
||||
f"{label:<42s} {n:>3d} "
|
||||
f"{pe_sr:>7d} {len(d_proj_sr):>3d}/{d_uni:<3d} {len(u_proj_sr):>3d}/{u_uni:<3d} | "
|
||||
f"{pe_sp:>7d} {len(d_proj_sp):>3d}/{d_uni:<3d} {len(u_proj_sp):>3d}/{u_uni:<3d} | "
|
||||
f"{faces_str}"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
@@ -0,0 +1,22 @@
|
||||
Two models compared per (m, k, chord-set):
|
||||
STEINER-RICH: G triangulates each O-face using internal Steiner vertices,
|
||||
so each B_in edge dualizes to its own (degree-1) inside-O triangle.
|
||||
Chord set has NO effect on T'_{f'}; equivalent to step-1 baseline.
|
||||
STEINER-POOR: G does NOT further sub-triangulate O-faces beyond O itself.
|
||||
Each O-face becomes one G-face with degree = (B_in-edge count).
|
||||
Edge-3-colorable only if every O-face has ≤ 3 B_in edges.
|
||||
|
||||
case n P_e SR D SR U SR | P_e SP D SP U SP | faces (cycle-position groups)
|
||||
-------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
(4,4) no chord [baseline] 8 258 81/81 81/81 | 0 0/81 0/81 | {0,2,4,6}
|
||||
(4,4) chord (0,2) faces 2+2 8 258 81/81 81/81 | 144 36/81 54/81 | {0,2} | {4,6}
|
||||
(5,5) no chord [baseline] 10 1026 243/243 243/243 | 0 0/243 0/243 | {0,2,4,6,8}
|
||||
(5,5) chord (0,2) faces 2+3 10 1026 243/243 243/243 | 240 36/243 90/243 | {0,2} | {4,6,8}
|
||||
(5,5) chord (0,3) faces 3+2 10 1026 243/243 243/243 | 240 36/243 90/243 | {0,2,4} | {6,8}
|
||||
(6,6) no chord [baseline] 12 4098 729/729 729/729 | 0 0/729 0/729 | {0,2,4,6,8,10}
|
||||
(6,6) chord (0,3) antipodal faces 3+3 12 4098 729/729 729/729 | 408 36/729 90/729 | {0,2,4} | {6,8,10}
|
||||
(6,6) chords (0,2)(3,5) faces 2+2+2 12 4098 729/729 729/729 | 1536 216/729 456/729 | {0,2} | {4,10} | {6,8}
|
||||
(3,4) no chord 7 126 78/81 27/27 | 0 0/81 0/27 | {0,2,4,5}
|
||||
(3,4) chord (0,2) 7 126 78/81 27/27 | 48 36/81 24/27 | {0,2} | {4,5}
|
||||
(6,4) no chord 10 1026 81/81 549/729 | 0 0/81 0/729 | {0,2,5,8}
|
||||
(6,4) chord (0,2) 10 1026 81/81 549/729 | 480 36/81 342/729 | {0,2} | {5,8}
|
||||
@@ -0,0 +1,7 @@
|
||||
\relax
|
||||
\newlabel{obs:sp-empty}{{}{2}}
|
||||
\newlabel{obs:more-chords-more-support}{{}{2}}
|
||||
\newlabel{obs:pi-D-m-independent}{{}{2}}
|
||||
\newlabel{obs:u-shrinks}{{}{2}}
|
||||
\newlabel{obs:sp-chord-rule}{{}{3}}
|
||||
\gdef \@abspage@last{3}
|
||||
@@ -0,0 +1,320 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 26 MAY 2026 02:09
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
**tire_fiber_chords.tex
|
||||
(./tire_fiber_chords.tex
|
||||
LaTeX2e <2021-11-15> patch level 1
|
||||
L3 programming layer <2022-02-24>
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/article.cls
|
||||
Document Class: article 2021/10/04 v1.4n Standard LaTeX document class
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/base/size11.clo
|
||||
File: size11.clo 2021/10/04 v1.4n Standard LaTeX file (size option)
|
||||
)
|
||||
\c@part=\count185
|
||||
\c@section=\count186
|
||||
\c@subsection=\count187
|
||||
\c@subsubsection=\count188
|
||||
\c@paragraph=\count189
|
||||
\c@subparagraph=\count190
|
||||
\c@figure=\count191
|
||||
\c@table=\count192
|
||||
\abovecaptionskip=\skip47
|
||||
\belowcaptionskip=\skip48
|
||||
\bibindent=\dimen138
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
Package: amsmath 2021/10/15 v2.17l AMS math features
|
||||
\@mathmargin=\skip49
|
||||
|
||||
For additional information on amsmath, use the `?' option.
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
Package: amstext 2021/08/26 v2.01 AMS text
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
File: amsgen.sty 1999/11/30 v2.0 generic functions
|
||||
\@emptytoks=\toks16
|
||||
\ex@=\dimen139
|
||||
))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
Package: amsbsy 1999/11/29 v1.2d Bold Symbols
|
||||
\pmbraise@=\dimen140
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
Package: amsopn 2021/08/26 v2.02 operator names
|
||||
)
|
||||
\inf@bad=\count193
|
||||
LaTeX Info: Redefining \frac on input line 234.
|
||||
\uproot@=\count194
|
||||
\leftroot@=\count195
|
||||
LaTeX Info: Redefining \overline on input line 399.
|
||||
\classnum@=\count196
|
||||
\DOTSCASE@=\count197
|
||||
LaTeX Info: Redefining \ldots on input line 496.
|
||||
LaTeX Info: Redefining \dots on input line 499.
|
||||
LaTeX Info: Redefining \cdots on input line 620.
|
||||
\Mathstrutbox@=\box50
|
||||
\strutbox@=\box51
|
||||
\big@size=\dimen141
|
||||
LaTeX Font Info: Redeclaring font encoding OML on input line 743.
|
||||
LaTeX Font Info: Redeclaring font encoding OMS on input line 744.
|
||||
\macc@depth=\count198
|
||||
\c@MaxMatrixCols=\count199
|
||||
\dotsspace@=\muskip16
|
||||
\c@parentequation=\count266
|
||||
\dspbrk@lvl=\count267
|
||||
\tag@help=\toks17
|
||||
\row@=\count268
|
||||
\column@=\count269
|
||||
\maxfields@=\count270
|
||||
\andhelp@=\toks18
|
||||
\eqnshift@=\dimen142
|
||||
\alignsep@=\dimen143
|
||||
\tagshift@=\dimen144
|
||||
\tagwidth@=\dimen145
|
||||
\totwidth@=\dimen146
|
||||
\lineht@=\dimen147
|
||||
\@envbody=\toks19
|
||||
\multlinegap=\skip50
|
||||
\multlinetaggap=\skip51
|
||||
\mathdisplay@stack=\toks20
|
||||
LaTeX Info: Redefining \[ on input line 2938.
|
||||
LaTeX Info: Redefining \] on input line 2939.
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
Package: amssymb 2013/01/14 v3.01 AMS font symbols
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
|
||||
\symAMSa=\mathgroup4
|
||||
\symAMSb=\mathgroup5
|
||||
LaTeX Font Info: Redeclaring math symbol \hbar on input line 98.
|
||||
LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
|
||||
(Font) U/euf/m/n --> U/euf/b/n on input line 106.
|
||||
))
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsthm.sty
|
||||
Package: amsthm 2020/05/29 v2.20.6
|
||||
\thm@style=\toks21
|
||||
\thm@bodyfont=\toks22
|
||||
\thm@headfont=\toks23
|
||||
\thm@notefont=\toks24
|
||||
\thm@headpunct=\toks25
|
||||
\thm@preskip=\skip52
|
||||
\thm@postskip=\skip53
|
||||
\thm@headsep=\skip54
|
||||
\dth@everypar=\toks26
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
Package: graphicx 2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
|
||||
\KV@toks@=\toks27
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
Package: graphics 2021/03/04 v1.4d Standard LaTeX Graphics (DPC,SPQR)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
Package: trig 2021/08/11 v1.11 sin cos tan (DPC)
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
|
||||
)
|
||||
Package graphics Info: Driver file: pdftex.def on input line 107.
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
File: pdftex.def 2020/10/05 v1.2a Graphics/color driver for pdftex
|
||||
))
|
||||
\Gin@req@height=\dimen148
|
||||
\Gin@req@width=\dimen149
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/geometry/geometry.sty
|
||||
Package: geometry 2020/01/02 v5.9 Page Geometry
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/ifvtex.sty
|
||||
Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead.
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/generic/iftex/iftex.sty
|
||||
Package: iftex 2022/02/03 v1.0f TeX engine tests
|
||||
))
|
||||
\Gm@cnth=\count271
|
||||
\Gm@cntv=\count272
|
||||
\c@Gm@tempcnt=\count273
|
||||
\Gm@bindingoffset=\dimen150
|
||||
\Gm@wd@mp=\dimen151
|
||||
\Gm@odd@mp=\dimen152
|
||||
\Gm@even@mp=\dimen153
|
||||
\Gm@layoutwidth=\dimen154
|
||||
\Gm@layoutheight=\dimen155
|
||||
\Gm@layouthoffset=\dimen156
|
||||
\Gm@layoutvoffset=\dimen157
|
||||
\Gm@dimlist=\toks28
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/booktabs/booktabs.sty
|
||||
Package: booktabs 2020/01/12 v1.61803398 Publication quality tables
|
||||
\heavyrulewidth=\dimen158
|
||||
\lightrulewidth=\dimen159
|
||||
\cmidrulewidth=\dimen160
|
||||
\belowrulesep=\dimen161
|
||||
\belowbottomsep=\dimen162
|
||||
\aboverulesep=\dimen163
|
||||
\abovetopsep=\dimen164
|
||||
\cmidrulesep=\dimen165
|
||||
\cmidrulekern=\dimen166
|
||||
\defaultaddspace=\dimen167
|
||||
\@cmidla=\count274
|
||||
\@cmidlb=\count275
|
||||
\@aboverulesep=\dimen168
|
||||
\@belowrulesep=\dimen169
|
||||
\@thisruleclass=\count276
|
||||
\@lastruleclass=\count277
|
||||
\@thisrulewidth=\dimen170
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/caption/caption.sty
|
||||
Package: caption 2022/03/01 v3.6b Customizing captions (AR)
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/caption/caption3.sty
|
||||
Package: caption3 2022/03/17 v2.3b caption3 kernel (AR)
|
||||
\caption@tempdima=\dimen171
|
||||
\captionmargin=\dimen172
|
||||
\caption@leftmargin=\dimen173
|
||||
\caption@rightmargin=\dimen174
|
||||
\caption@width=\dimen175
|
||||
\caption@indent=\dimen176
|
||||
\caption@parindent=\dimen177
|
||||
\caption@hangindent=\dimen178
|
||||
Package caption Info: Standard document class detected.
|
||||
)
|
||||
\c@caption@flags=\count278
|
||||
\c@continuedfloat=\count279
|
||||
)
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
File: l3backend-pdftex.def 2022-02-07 L3 backend support: PDF output (pdfTeX)
|
||||
\l__color_backend_stack_int=\count280
|
||||
\l__pdf_internal_box=\box52
|
||||
)
|
||||
(./tire_fiber_chords.aux)
|
||||
\openout1 = `tire_fiber_chords.aux'.
|
||||
|
||||
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 15.
|
||||
LaTeX Font Info: ... okay on input line 15.
|
||||
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 15.
|
||||
LaTeX Font Info: ... okay on input line 15.
|
||||
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 15.
|
||||
LaTeX Font Info: ... okay on input line 15.
|
||||
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 15.
|
||||
LaTeX Font Info: ... okay on input line 15.
|
||||
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 15.
|
||||
LaTeX Font Info: ... okay on input line 15.
|
||||
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 15.
|
||||
LaTeX Font Info: ... okay on input line 15.
|
||||
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 15.
|
||||
LaTeX Font Info: ... okay on input line 15.
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
[Loading MPS to PDF converter (version 2006.09.02).]
|
||||
\scratchcounter=\count281
|
||||
\scratchdimen=\dimen179
|
||||
\scratchbox=\box53
|
||||
\nofMPsegments=\count282
|
||||
\nofMParguments=\count283
|
||||
\everyMPshowfont=\toks29
|
||||
\MPscratchCnt=\count284
|
||||
\MPscratchDim=\dimen180
|
||||
\MPnumerator=\count285
|
||||
\makeMPintoPDFobject=\count286
|
||||
\everyMPtoPDFconversion=\toks30
|
||||
) (/usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf
|
||||
Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4
|
||||
85.
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
*geometry* driver: auto-detecting
|
||||
*geometry* detected driver: pdftex
|
||||
*geometry* verbose mode - [ preamble ] result:
|
||||
* driver: pdftex
|
||||
* paper: <default>
|
||||
* layout: <same size as paper>
|
||||
* layoutoffset:(h,v)=(0.0pt,0.0pt)
|
||||
* modes:
|
||||
* h-part:(L,W,R)=(72.26999pt, 469.75502pt, 72.26999pt)
|
||||
* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt)
|
||||
* \paperwidth=614.295pt
|
||||
* \paperheight=794.96999pt
|
||||
* \textwidth=469.75502pt
|
||||
* \textheight=650.43001pt
|
||||
* \oddsidemargin=0.0pt
|
||||
* \evensidemargin=0.0pt
|
||||
* \topmargin=-37.0pt
|
||||
* \headheight=12.0pt
|
||||
* \headsep=25.0pt
|
||||
* \topskip=11.0pt
|
||||
* \footskip=30.0pt
|
||||
* \marginparwidth=59.0pt
|
||||
* \marginparsep=10.0pt
|
||||
* \columnsep=10.0pt
|
||||
* \skip\footins=10.0pt plus 4.0pt minus 2.0pt
|
||||
* \hoffset=0.0pt
|
||||
* \voffset=0.0pt
|
||||
* \mag=1000
|
||||
* \@twocolumnfalse
|
||||
* \@twosidefalse
|
||||
* \@mparswitchfalse
|
||||
* \@reversemarginfalse
|
||||
* (1in=72.27pt=25.4mm, 1cm=28.453pt)
|
||||
|
||||
Package caption Info: Begin \AtBeginDocument code.
|
||||
Package caption Info: End \AtBeginDocument code.
|
||||
LaTeX Font Info: Trying to load font information for U+msa on input line 16.
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
File: umsa.fd 2013/01/14 v3.01 AMS symbols A
|
||||
)
|
||||
LaTeX Font Info: Trying to load font information for U+msb on input line 16.
|
||||
|
||||
|
||||
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
|
||||
) [1
|
||||
|
||||
{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}] [2] [3]
|
||||
|
||||
(./tire_fiber_chords.aux) )
|
||||
Here is how much of TeX's memory you used:
|
||||
4578 strings out of 478268
|
||||
74199 string characters out of 5846347
|
||||
381378 words of memory out of 5000000
|
||||
22757 multiletter control sequences out of 15000+600000
|
||||
480794 words of font info for 72 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
55i,8n,63p,251b,262s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
{/usr/local/texlive/2022/texmf-dist/fonts/enc/dvips/
|
||||
cm-super/cm-super-ts1.enc}</usr/local/texlive/2022/texmf-dist/fonts/type1/publi
|
||||
c/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public
|
||||
/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/
|
||||
amsfonts/cm/cmbx8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/am
|
||||
sfonts/cm/cmbxti10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/a
|
||||
msfonts/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/am
|
||||
sfonts/cm/cmmi12.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/ams
|
||||
fonts/cm/cmmi6.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfo
|
||||
nts/cm/cmmi8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfont
|
||||
s/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/
|
||||
cm/cmr17.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm
|
||||
/cmr8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cm
|
||||
sy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cms
|
||||
y6.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy8
|
||||
.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.
|
||||
pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.p
|
||||
fb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/cm-super/sfrm1095.pfb
|
||||
>
|
||||
Output written on tire_fiber_chords.pdf (3 pages, 212866 bytes).
|
||||
PDF statistics:
|
||||
100 PDF objects out of 1000 (max. 8388607)
|
||||
60 compressed objects within 1 object stream
|
||||
0 named destinations out of 1000 (max. 500000)
|
||||
1 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
Binary file not shown.
@@ -0,0 +1,230 @@
|
||||
\documentclass[11pt]{article}
|
||||
\usepackage{amsmath,amssymb,amsthm}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{geometry}
|
||||
\usepackage{booktabs}
|
||||
\usepackage{caption}
|
||||
\geometry{margin=1in}
|
||||
|
||||
\title{Fiber distributions for tire face connectors with chords in $O$}
|
||||
\author{}
|
||||
\date{}
|
||||
|
||||
\newtheorem*{obs}{Observation}
|
||||
|
||||
\begin{document}
|
||||
\maketitle
|
||||
|
||||
\section*{What this is}
|
||||
|
||||
A companion to \texttt{tire\_fiber\_data.tex}: that note enumerated
|
||||
fiber distributions in the spoke-only setting (no chords in the inner
|
||||
outerplanar graph $O$). This note investigates what happens when $O$
|
||||
has chords --- specifically when the surrounding $G$ does \emph{not}
|
||||
introduce Steiner vertices inside $B_{\mathrm{in}}$, so that each face
|
||||
of $O$ in the tire's embedding remains a single face of $G$.
|
||||
Script: \texttt{experiments/tire\_fiber\_chords.py}. Output:
|
||||
\texttt{experiments/tire\_fiber\_chords\_data.txt}.
|
||||
|
||||
\section*{The modelling choice that chords force on us}
|
||||
|
||||
In the spoke-only enumeration (\texttt{tire\_fiber\_data.tex}) the
|
||||
inner-spoke part of $T'_{f'}$ was simply $k$ pendant edges, one per
|
||||
$B_{\mathrm{in}}$ edge. That picture corresponds to a surrounding
|
||||
maximal planar graph $G$ that \emph{aggressively triangulates} the
|
||||
disk inside $B_{\mathrm{in}}$ using interior (Steiner) vertices not in
|
||||
$V(T)$, so each $B_{\mathrm{in}}$ edge gets its own dedicated inside-$O$
|
||||
sub-triangle.
|
||||
|
||||
When we add chords to $O$, there is a second axis of choice: does $G$
|
||||
sub-triangulate the resulting $O$-faces, or not? Two extreme models:
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{Steiner-rich (SR).} $G$ adds whatever vertices and
|
||||
edges it needs inside each $O$-face so that every
|
||||
$B_{\mathrm{in}}$ edge has its own sub-triangle. The
|
||||
inner-spoke graph is $k$ pendants \emph{regardless of the
|
||||
chord set} --- chords are invisible to $T'_{f'}$. This is the
|
||||
step-1 baseline.
|
||||
\item \textbf{Steiner-poor (SP).} $G$ does not further
|
||||
sub-triangulate $O$-faces beyond what $O$ itself provides.
|
||||
Each face of $O$ becomes a single face of $G$, whose dual
|
||||
vertex has degree (in $G'$, and hence in $T'_{f'}$) equal to
|
||||
the number of $B_{\mathrm{in}}$ edges on the face boundary.
|
||||
Edge $3$-colourable only if \emph{every $O$-face has at most
|
||||
$3$ $B_{\mathrm{in}}$ edges}.
|
||||
\end{itemize}
|
||||
|
||||
Real surrounding triangulations $G$ live somewhere between these two,
|
||||
and the choice is not part of the tire structure itself --- it is a
|
||||
property of how $G$ embeds the tire. But the two extremes already
|
||||
say something useful about chord effects.
|
||||
|
||||
\section*{Side-by-side data}
|
||||
|
||||
\begin{center}
|
||||
\scriptsize
|
||||
\begin{tabular}{l r | r r r | r r r}
|
||||
\toprule
|
||||
& & \multicolumn{3}{c|}{\textbf{Steiner-rich}}
|
||||
& \multicolumn{3}{c}{\textbf{Steiner-poor}}\\
|
||||
case & $n$ & $P_e$ & $|\pi_D(\mathcal{C})|/3^k$ & $|\pi_U(\mathcal{C})|/3^m$
|
||||
& $P_e$ & $|\pi_D(\mathcal{C})|/3^k$ & $|\pi_U(\mathcal{C})|/3^m$ \\
|
||||
\midrule
|
||||
(4,4) no chord & 8 & 258 & 81/81 & 81/81 & 0 & 0/81 & 0/81 \\
|
||||
(4,4) chord (0,2), faces 2+2 & 8 & 258 & 81/81 & 81/81 & 144 & 36/81 & 54/81 \\
|
||||
(5,5) no chord & 10 & 1026 & 243/243 & 243/243 & 0 & 0/243 & 0/243 \\
|
||||
(5,5) chord (0,2), faces 2+3 & 10 & 1026 & 243/243 & 243/243 & 240 & 36/243 & 90/243 \\
|
||||
(5,5) chord (0,3), faces 3+2 & 10 & 1026 & 243/243 & 243/243 & 240 & 36/243 & 90/243 \\
|
||||
(6,6) no chord & 12 & 4098 & 729/729 & 729/729 & 0 & 0/729 & 0/729 \\
|
||||
(6,6) chord (0,3) antipodal, 3+3 & 12 & 4098 & 729/729 & 729/729 & 408 & 36/729 & 90/729 \\
|
||||
(6,6) chords (0,2)(3,5), 2+2+2 & 12 & 4098 & 729/729 & 729/729 & 1536 & 216/729 & 456/729 \\
|
||||
(3,4) no chord & 7 & 126 & 78/81 & 27/27 & 0 & 0/81 & 0/27 \\
|
||||
(3,4) chord (0,2) & 7 & 126 & 78/81 & 27/27 & 48 & 36/81 & 24/27 \\
|
||||
(6,4) no chord & 10 & 1026 & 81/81 & 549/729 & 0 & 0/81 & 0/729 \\
|
||||
(6,4) chord (0,2) & 10 & 1026 & 81/81 & 549/729 & 480 & 36/81 & 342/729 \\
|
||||
\bottomrule
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
\noindent
|
||||
($\pi_D$ projects $\sigma$ onto the $k$ inner-direction spoke positions
|
||||
on the dual cycle; $\pi_U$ onto the $m$ outer-direction positions.
|
||||
``Chord (a,b)'' means $O = B_{\mathrm{in}} \cup \{v_a v_b\}$.)
|
||||
|
||||
\section*{Observations}
|
||||
|
||||
\begin{obs}[SP is empty without chords for $k > 3$]
|
||||
\label{obs:sp-empty}
|
||||
If $O$ has no chord and $k \geq 4$, then $O$ has a single inner face
|
||||
with $k$ incident $B_{\mathrm{in}}$ edges. Under SP this is a single
|
||||
$G'$-vertex of degree $k$, and proper edge $3$-colouring needs $k$
|
||||
distinct colours at that vertex, which is impossible for $k \geq 4$.
|
||||
\textbf{So the SP model forces chords once $k \geq 4$}: tires whose
|
||||
inner boundary is longer than $3$ are only feasible if $O$ already
|
||||
contains enough chords to break every face down to $\leq 3$
|
||||
$B_{\mathrm{in}}$ edges.
|
||||
\end{obs}
|
||||
|
||||
\noindent
|
||||
This is the structural reason chord-aware modelling matters. Under
|
||||
SR, you can pretend chord sets do not exist; under SP, you cannot.
|
||||
|
||||
\begin{obs}[Adding chords \emph{enlarges} the SP support]
|
||||
\label{obs:more-chords-more-support}
|
||||
Comparing the two $(6,6)$ chord rows:
|
||||
\begin{itemize}
|
||||
\item Antipodal $(0,3)$ chord: face sizes $3{+}3$, gives
|
||||
$P_e = 408$, $\pi_D$ support $36/729 \approx 4.9\%$.
|
||||
\item Two chords $(0,2),(3,5)$: face sizes $2{+}2{+}2$, gives
|
||||
$P_e = 1536$, $\pi_D$ support $216/729 \approx 29.6\%$.
|
||||
\end{itemize}
|
||||
Smaller faces $=$ weaker constraints $=$ more realisable
|
||||
configurations. This is the opposite of what one might expect at
|
||||
first glance (``more chords $=$ more edges $=$ more constraints'') ---
|
||||
each chord splits a hard constraint into easier ones.
|
||||
\end{obs}
|
||||
|
||||
\begin{obs}[$\pi_D$ support depends only on chord structure, not on $m$]
|
||||
\label{obs:pi-D-m-independent}
|
||||
For chord set $\{(0,2)\}$ in $k = 4$, the $\pi_D$ support is
|
||||
$36/81 = 4/9$ for every tested $m \in \{3, 4, 6\}$. This is structural:
|
||||
the chord constraint pins down which spoke-quadruples are realisable
|
||||
without involving the outer cycle at all. The $\pi_U$ support, by
|
||||
contrast, varies with $m$.
|
||||
\end{obs}
|
||||
|
||||
\begin{obs}[SP support shrinks the $\pi_U$ support too]
|
||||
\label{obs:u-shrinks}
|
||||
Even though chord constraints live on the inner side, they propagate
|
||||
to the outer side via the cycle. For $(m, k) = (4, 4)$:
|
||||
\begin{itemize}
|
||||
\item SR: $\pi_U$ saturates $3^4$.
|
||||
\item SP with chord $(0,2)$: $\pi_U = 54/81 = 2/3$.
|
||||
\end{itemize}
|
||||
The chord-induced constraints on D-position spokes propagate around
|
||||
the cycle through the proper-edge-colouring constraint, reducing the
|
||||
set of cycle colourings, hence reducing $\pi_U$ as well.
|
||||
\end{obs}
|
||||
|
||||
\section*{Implications for the chain-pigeonhole step}
|
||||
|
||||
In the spoke-only / SR step-1 analysis we observed that whenever
|
||||
$|B_{\mathrm{out}}| \geq |B_{\mathrm{in}}|$ the inner-side projection
|
||||
saturates the full ring-coloring universe $3^k$, so chain
|
||||
compatibility on a shared cycle was trivially nonempty whenever at
|
||||
least one of the two adjacent tires had the longer non-shared
|
||||
boundary.
|
||||
|
||||
Under SP this clean saturation breaks down on the chord side:
|
||||
|
||||
\begin{itemize}
|
||||
\item For a chorded tire, $\pi_D$ never reaches $3^k$ --- the
|
||||
chord constraints permanently rule out some inner-spoke
|
||||
configurations. The realisable set is small but non-empty
|
||||
(e.g., $36/81$ at $k = 4$).
|
||||
\item The shrinkage is the same regardless of $m$ on the inner
|
||||
(D) side, so making the outer boundary very long does
|
||||
\emph{not} help recover saturation on the chord side.
|
||||
\item Two adjacent SP tires sharing a cycle $\gamma$ both have
|
||||
shrunk projections; whether they intersect is now a real
|
||||
question. E.g., projecting $\pi_D$ down to a $4/9$-fraction
|
||||
of $\{1,2,3\}^k$ from each side: do the two $4/9$-sets always
|
||||
meet?
|
||||
\end{itemize}
|
||||
|
||||
\noindent
|
||||
That last question is the natural follow-up experiment (and is
|
||||
step~2 of the action items).
|
||||
|
||||
\subsection*{The structural fact worth stating}
|
||||
|
||||
\begin{obs}[Steiner-poor chord-rule]
|
||||
\label{obs:sp-chord-rule}
|
||||
Under the SP model, a tire $T$ is edge-$3$-colourable on its face
|
||||
connector $T'_{f'}$ iff its inner outerplanar graph $O$ \emph{already
|
||||
triangulates the inside of $B_{\mathrm{in}}$ up to faces of $B_{\mathrm{in}}$-
|
||||
size $\leq 3$}. Equivalently: $O$ must contain enough chords that
|
||||
every $O$-face has at most $3$ $B_{\mathrm{in}}$ edges on its boundary.
|
||||
\end{obs}
|
||||
|
||||
\noindent
|
||||
For a level-source BFS decomposition with $O$ chosen minimally (just
|
||||
$B_{\mathrm{in}}$ itself, no chords), every tire with $k \geq 4$ fails
|
||||
the SP edge-$3$-colouring test \emph{locally}. Globally this is no
|
||||
contradiction --- the surrounding maximal planar $G$ does add Steiner
|
||||
vertices and edges inside $B_{\mathrm{in}}$, making us closer to SR
|
||||
than to SP. But the SP model is a worst-case envelope on what
|
||||
purely local data implies, and shows that any structural argument that
|
||||
ignores the inside-$B_{\mathrm{in}}$ triangulation is incomplete.
|
||||
|
||||
\section*{Caveats / what we did not compute}
|
||||
|
||||
\begin{enumerate}
|
||||
\item \textbf{Only the two extremes.} Real $G$ triangulations lie
|
||||
between SR (every $B_{\mathrm{in}}$ edge gets its own
|
||||
Steiner-sub-triangle) and SP (no further sub-triangulation
|
||||
at all). Intermediate cases (e.g., fan-triangulating one
|
||||
$O$-face from a $V(B_{\mathrm{in}})$ vertex without adding
|
||||
Steiner points) are not enumerated here, though the data
|
||||
suggests they sit between.
|
||||
\item \textbf{Outer side always SR.} We have always treated the
|
||||
outer side ($B_{\mathrm{out}}$) as having no chord-induced
|
||||
structure --- $B_{\mathrm{out}}$ is just a cycle in the tire
|
||||
definition, so this is correct, but the analogous question
|
||||
``what if the region outside $B_{\mathrm{out}}$ is poorly
|
||||
triangulated'' is not addressed.
|
||||
\item \textbf{$\Delta \leq 3$ on $O$ ignored.} The chord
|
||||
configurations tested above include cases where chord
|
||||
endpoints have higher degree in $T$; the menagerie's
|
||||
$\Delta \leq 3$ constraint is not enforced. This is fine
|
||||
for the SP model in isolation but matters when composing
|
||||
with the menagerie counting formulas.
|
||||
\item \textbf{Adjacency intersection (step 2).} We have only
|
||||
computed single-tire fiber distributions. The chain-
|
||||
pigeonhole step itself --- intersecting $\pi_D$ of one tire
|
||||
with $\pi_U$ of the adjacent tire on a shared cycle --- is
|
||||
deferred.
|
||||
\end{enumerate}
|
||||
|
||||
\end{document}
|
||||
Reference in New Issue
Block a user