coloring_nested_tire_graphs: cut-and-depth-label procedure with Holton-McKay #0 example
Adds a new note describing a cut-and-depth-label procedure for
the dual G' of a maximal planar G:
1. Find a 6-edge cut C in G'.
2. Remove cut edges → G'_0, G'_1.
3. In each G'_i:
a. V_i = degree-2 vertices (vertices incident to exactly 1
cut edge, hence degree 3-1=2 in induced subgraph).
b. For each v ∈ V_i, add a pendant edge to a new vertex.
Label pendants depth 0.
c. BFS-propagate: edges adjacent to a depth-d edge get
depth d+1, until all edges are labelled.
Worked example on Holton-McKay graph #0 (38-vertex non-Hamiltonian
cubic plane graph, dual of a 21-vertex triangulation):
- 128 distinct 6-edge cuts found by greedy search.
- Best matching cut: |S| = 10, cut = 6 edges with 12 distinct
endpoints (6 per side).
- G'_0: 10 + 6 = 16 vertices, max depth 2.
- G'_1: 28 + 6 = 34 vertices, max depth 7.
The procedure mirrors the 4CT cut-and-reglue reducibility scheme:
each G'_i has pendants restoring cubicity at the boundary; the
depth labels organize G'_i into concentric layers by distance to
the cut. This is the dual analogue of plane depth from a level
cycle (cf. the level-cycle generalization discussion).
Files:
experiments/cut_depth_label.py
notes/cut_depth_label.tex (3 pages)
notes/fig_cut_depth_label.png
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,283 @@
|
|||||||
|
"""Cut-and-depth-label procedure on a Holton-McKay graph.
|
||||||
|
|
||||||
|
Procedure:
|
||||||
|
1. Take G' (we use a Holton-McKay non-Hamiltonian 38-vertex cubic
|
||||||
|
plane graph, viewed as the dual of a 21-vertex triangulation G).
|
||||||
|
2. Find 6 cut edges of G' whose removal disconnects it into two
|
||||||
|
non-trivial cubic-minus-boundary pieces G'_0 and G'_1.
|
||||||
|
3. In each G'_i:
|
||||||
|
a. V_i = vertices of degree 2 (the 6 endpoints in G'_i of cut
|
||||||
|
edges).
|
||||||
|
b. For each v ∈ V_i, add a new pendant edge to a new vertex.
|
||||||
|
Label these pendant edges depth 0.
|
||||||
|
c. BFS-propagate: for d = 0, 1, ..., label every edge sharing
|
||||||
|
a vertex with a depth-d edge (and not yet labelled) as
|
||||||
|
depth d + 1.
|
||||||
|
d. Stop when every edge has a depth label.
|
||||||
|
4. Render G'_0 and G'_1 with edges coloured by depth.
|
||||||
|
"""
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
from collections import deque, defaultdict
|
||||||
|
import math
|
||||||
|
|
||||||
|
import matplotlib.pyplot as plt
|
||||||
|
import matplotlib.colors as mcolors
|
||||||
|
import numpy as np
|
||||||
|
|
||||||
|
from sage.all import Graph
|
||||||
|
|
||||||
|
HM_FILE = ('/Users/didericis/Code/math-research/papers/'
|
||||||
|
'even_level_graph_generators/experiments/nonham38m4.pc')
|
||||||
|
|
||||||
|
|
||||||
|
def parse_planar_code(path):
|
||||||
|
with open(path, 'rb') as f:
|
||||||
|
data = f.read()
|
||||||
|
header = b'>>planar_code<<'
|
||||||
|
assert data.startswith(header), data[:20]
|
||||||
|
pos = len(header)
|
||||||
|
sage_graphs = []
|
||||||
|
while pos < len(data):
|
||||||
|
n = data[pos]; pos += 1
|
||||||
|
edges = set()
|
||||||
|
for v in range(n):
|
||||||
|
while True:
|
||||||
|
w = data[pos]; pos += 1
|
||||||
|
if w == 0:
|
||||||
|
break
|
||||||
|
edges.add(frozenset((v, w - 1)))
|
||||||
|
G = Graph([tuple(e) for e in edges], multiedges=False, loops=False)
|
||||||
|
G.is_planar(set_embedding=True)
|
||||||
|
sage_graphs.append(G)
|
||||||
|
return sage_graphs
|
||||||
|
|
||||||
|
|
||||||
|
def find_six_edge_cut(G, prefer_balanced=True, prefer_matching=True):
|
||||||
|
"""Find a 6-edge cut: a set of 6 edges whose removal yields two
|
||||||
|
non-trivial components.
|
||||||
|
|
||||||
|
For a cubic graph: edges between S and complement
|
||||||
|
= 3|S| - 2 * e(S). We want this to equal 6.
|
||||||
|
|
||||||
|
Search strategy: BFS-grow a vertex set S from each possible start,
|
||||||
|
track the boundary edge count. Collect all sizes that yield a
|
||||||
|
6-edge cut. Return the best one according to:
|
||||||
|
prefer_matching: cut is a "matching cut" (each boundary vertex
|
||||||
|
has exactly one cut edge).
|
||||||
|
prefer_balanced: |S| closest to n/2.
|
||||||
|
"""
|
||||||
|
n = G.order()
|
||||||
|
candidates = []
|
||||||
|
for start in G.vertices():
|
||||||
|
S = {start}
|
||||||
|
boundary = 3
|
||||||
|
# BFS-grow; at each step pick the frontier vertex that adds the
|
||||||
|
# most internal edges (reduces boundary).
|
||||||
|
prev_size = -1
|
||||||
|
while True:
|
||||||
|
if boundary == 6 and 2 <= len(S) <= n - 2:
|
||||||
|
cut = [(u, v) for u in S
|
||||||
|
for v in G.neighbors(u) if v not in S]
|
||||||
|
if len(cut) == 6:
|
||||||
|
candidates.append((frozenset(S), cut))
|
||||||
|
if len(S) == prev_size:
|
||||||
|
break
|
||||||
|
prev_size = len(S)
|
||||||
|
# frontier
|
||||||
|
frontier = []
|
||||||
|
for w in G.vertices():
|
||||||
|
if w in S: continue
|
||||||
|
if any(nb in S for nb in G.neighbors(w)):
|
||||||
|
edges_into_S = sum(1 for nb in G.neighbors(w) if nb in S)
|
||||||
|
frontier.append((edges_into_S, w))
|
||||||
|
if not frontier:
|
||||||
|
break
|
||||||
|
frontier.sort(reverse=True)
|
||||||
|
_, w = frontier[0]
|
||||||
|
edges_into_S = sum(1 for nb in G.neighbors(w) if nb in S)
|
||||||
|
S.add(w)
|
||||||
|
boundary = boundary + 3 - 2 * edges_into_S
|
||||||
|
if len(S) >= n - 1:
|
||||||
|
break
|
||||||
|
if not candidates:
|
||||||
|
return None, None
|
||||||
|
# Pick best: prefer matching cuts (both sides have 6 distinct
|
||||||
|
# boundary vertices = 6 cut edges form a matching).
|
||||||
|
def score(item):
|
||||||
|
S, cut = item
|
||||||
|
endpoints_in_S = [u for (u, v) in cut if u in S] + \
|
||||||
|
[v for (u, v) in cut if v in S]
|
||||||
|
endpoints_in_Sc = [u for (u, v) in cut if u not in S] + \
|
||||||
|
[v for (u, v) in cut if v not in S]
|
||||||
|
is_matching = (len(set(endpoints_in_S)) == 6 and
|
||||||
|
len(set(endpoints_in_Sc)) == 6)
|
||||||
|
# Distinctness within each side
|
||||||
|
deg2_S = len(set(endpoints_in_S))
|
||||||
|
deg2_Sc = len(set(endpoints_in_Sc))
|
||||||
|
balance = abs(len(S) - n / 2)
|
||||||
|
# Prefer maximum total V coverage, then matching, then balanced
|
||||||
|
return (-(deg2_S + deg2_Sc), -int(is_matching), balance)
|
||||||
|
candidates.sort(key=score)
|
||||||
|
# Dedupe identical S sets
|
||||||
|
seen = set()
|
||||||
|
unique = []
|
||||||
|
for S, cut in candidates:
|
||||||
|
if S in seen: continue
|
||||||
|
seen.add(S)
|
||||||
|
unique.append((S, cut))
|
||||||
|
print(f' Found {len(unique)} distinct 6-edge cuts')
|
||||||
|
return unique[0]
|
||||||
|
|
||||||
|
|
||||||
|
def apply_procedure(G, S, cut, side_label='0'):
|
||||||
|
"""Build G'_i from G[S] plus pendant edges at degree-2 vertices.
|
||||||
|
Per the user's procedure:
|
||||||
|
a. V = vertices of degree 2 in the induced subgraph (i.e.,
|
||||||
|
original cubic vertices that have exactly 1 cut edge,
|
||||||
|
hence degree 3 - 1 = 2 in the induced subgraph).
|
||||||
|
b. Add 1 pendant edge per v in V.
|
||||||
|
c. Label pendants depth 0, BFS-propagate.
|
||||||
|
Returns (graph, pos, edge_depths, deg2_vertices, pendant_map,
|
||||||
|
high_deg_loss). high_deg_loss tracks vertices with >= 2 cut
|
||||||
|
edges that don't receive pendants under the strict procedure.
|
||||||
|
"""
|
||||||
|
induced_edges = [(u, v) for (u, v) in G.edges(labels=False)
|
||||||
|
if u in S and v in S]
|
||||||
|
H = Graph(induced_edges, multiedges=False, loops=False)
|
||||||
|
# Ensure all vertices of S are present (some may be isolated)
|
||||||
|
for v in S:
|
||||||
|
H.add_vertex(v)
|
||||||
|
# Compute degree of each vertex in induced subgraph
|
||||||
|
induced_deg = {v: H.degree(v) for v in S}
|
||||||
|
# V = degree-2 vertices
|
||||||
|
V_deg2 = sorted([v for v in S if induced_deg[v] == 2])
|
||||||
|
high_loss = sorted([v for v in S if induced_deg[v] < 2])
|
||||||
|
pendant_edges = []
|
||||||
|
next_pendant_id = (max(G.vertices()) + 1)
|
||||||
|
pendant_to_boundary = {}
|
||||||
|
for v in V_deg2:
|
||||||
|
H.add_edge(v, next_pendant_id)
|
||||||
|
pendant_edges.append((min(v, next_pendant_id),
|
||||||
|
max(v, next_pendant_id)))
|
||||||
|
pendant_to_boundary[next_pendant_id] = v
|
||||||
|
next_pendant_id += 1
|
||||||
|
# BFS-label edges by depth
|
||||||
|
edge_depth = {}
|
||||||
|
queue = deque()
|
||||||
|
for e in pendant_edges:
|
||||||
|
edge_depth[e] = 0
|
||||||
|
queue.append((e, 0))
|
||||||
|
while queue:
|
||||||
|
(u, v), d = queue.popleft()
|
||||||
|
# adjacent edges share vertex u or v
|
||||||
|
for endpoint in (u, v):
|
||||||
|
for nb in H.neighbors(endpoint):
|
||||||
|
e_nb = (min(endpoint, nb), max(endpoint, nb))
|
||||||
|
if e_nb == (u, v): continue
|
||||||
|
if e_nb not in edge_depth:
|
||||||
|
edge_depth[e_nb] = d + 1
|
||||||
|
queue.append((e_nb, d + 1))
|
||||||
|
# Layout: use Sage's planar embedding
|
||||||
|
pos = H.layout(layout='planar') if H.is_planar() else H.layout()
|
||||||
|
return H, pos, edge_depth, V_deg2, pendant_to_boundary, high_loss
|
||||||
|
|
||||||
|
|
||||||
|
def draw_labeled_graph(ax, H, pos, edge_depth, boundary_vertices,
|
||||||
|
pendant_to_boundary, title):
|
||||||
|
max_depth = max(edge_depth.values()) if edge_depth else 0
|
||||||
|
cmap = plt.get_cmap('viridis', max_depth + 1)
|
||||||
|
# Draw edges by depth
|
||||||
|
legend_handles = []
|
||||||
|
for d in range(max_depth + 1):
|
||||||
|
color = cmap(d / max(max_depth, 1))
|
||||||
|
for e, ed in edge_depth.items():
|
||||||
|
if ed != d: continue
|
||||||
|
u, v = e
|
||||||
|
(x1, y1) = pos[u]
|
||||||
|
(x2, y2) = pos[v]
|
||||||
|
ax.plot([x1, x2], [y1, y2], color=color,
|
||||||
|
linewidth=2.0 + (1.5 if d == 0 else 0),
|
||||||
|
linestyle=('--' if d == 0 else '-'),
|
||||||
|
zorder=1)
|
||||||
|
legend_handles.append(
|
||||||
|
plt.Line2D([], [], color=color, linewidth=2.5,
|
||||||
|
linestyle='--' if d == 0 else '-',
|
||||||
|
label=f'depth {d}')
|
||||||
|
)
|
||||||
|
# Draw vertices
|
||||||
|
for v, (x, y) in pos.items():
|
||||||
|
if v in pendant_to_boundary:
|
||||||
|
ax.plot(x, y, 's', color='#ffaa66', markersize=8, zorder=2,
|
||||||
|
markeredgecolor='#aa5500')
|
||||||
|
elif v in boundary_vertices:
|
||||||
|
ax.plot(x, y, 'o', color='#ff5555', markersize=10, zorder=2,
|
||||||
|
markeredgecolor='#aa0000')
|
||||||
|
else:
|
||||||
|
ax.plot(x, y, 'o', color='#888', markersize=6, zorder=2)
|
||||||
|
ax.set_aspect('equal')
|
||||||
|
ax.axis('off')
|
||||||
|
ax.set_title(title, fontsize=11)
|
||||||
|
ax.legend(handles=legend_handles, loc='upper left',
|
||||||
|
bbox_to_anchor=(1.02, 1.0), fontsize=8, frameon=False)
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
here = os.path.dirname(os.path.abspath(__file__))
|
||||||
|
out = os.path.normpath(os.path.join(here, '..', 'notes',
|
||||||
|
'fig_cut_depth_label.png'))
|
||||||
|
|
||||||
|
gs = parse_planar_code(HM_FILE)
|
||||||
|
print(f'Loaded {len(gs)} Holton-McKay graphs')
|
||||||
|
|
||||||
|
# Pick the first one
|
||||||
|
G = gs[0]
|
||||||
|
print(f'Graph 0: {G.order()} vertices, {G.size()} edges, '
|
||||||
|
f'cubic={all(d == 3 for d in G.degree())}, planar={G.is_planar()}')
|
||||||
|
|
||||||
|
# Find a 6-edge cut
|
||||||
|
S, cut = find_six_edge_cut(G)
|
||||||
|
if S is None:
|
||||||
|
print('No 6-edge cut found by greedy search.')
|
||||||
|
return
|
||||||
|
print(f'Found 6-edge cut: |S| = {len(S)}, |cut| = {len(cut)}')
|
||||||
|
print(f'Cut edges: {cut}')
|
||||||
|
|
||||||
|
S0 = frozenset(S)
|
||||||
|
S1 = frozenset(G.vertices()) - S0
|
||||||
|
|
||||||
|
H0, pos0, ed0, bv0, pmap0, hl0 = apply_procedure(G, S0, cut, '0')
|
||||||
|
H1, pos1, ed1, bv1, pmap1, hl1 = apply_procedure(G, S1, cut, '1')
|
||||||
|
|
||||||
|
print(f"G'_0: {H0.order()} vertices ({len(S0)} original + "
|
||||||
|
f'{len(pmap0)} pendant), {H0.size()} edges')
|
||||||
|
print(f" V (degree-2 vertices receiving pendants): {len(bv0)} vertices")
|
||||||
|
print(f" Multi-cut vertices not in V: {hl0}")
|
||||||
|
print(f' Max depth: {max(ed0.values())}')
|
||||||
|
print(f"G'_1: {H1.order()} vertices ({len(S1)} original + "
|
||||||
|
f'{len(pmap1)} pendant), {H1.size()} edges')
|
||||||
|
print(f" V (degree-2 vertices receiving pendants): {len(bv1)} vertices")
|
||||||
|
print(f" Multi-cut vertices not in V: {hl1}")
|
||||||
|
print(f' Max depth: {max(ed1.values())}')
|
||||||
|
|
||||||
|
# Draw
|
||||||
|
fig, (ax0, ax1) = plt.subplots(1, 2, figsize=(16, 8.0))
|
||||||
|
draw_labeled_graph(ax0, H0, pos0, ed0, bv0, pmap0,
|
||||||
|
f"$G'_0$ (|S| = {len(S0)}, |V| = {len(bv0)}, "
|
||||||
|
f"max depth = {max(ed0.values())})")
|
||||||
|
draw_labeled_graph(ax1, H1, pos1, ed1, bv1, pmap1,
|
||||||
|
f"$G'_1$ (|S| = {len(S1)}, |V| = {len(bv1)}, "
|
||||||
|
f"max depth = {max(ed1.values())})")
|
||||||
|
fig.suptitle("Cut-and-depth-label procedure on Holton-McKay graph #0 "
|
||||||
|
"(38 vertices, cubic, planar, non-Hamiltonian)\n"
|
||||||
|
"Dashed orange = pendant edges (depth 0); colored by "
|
||||||
|
"BFS depth from pendants in line-graph sense",
|
||||||
|
fontsize=11, y=1.00)
|
||||||
|
plt.tight_layout()
|
||||||
|
plt.savefig(out, dpi=160, bbox_inches='tight')
|
||||||
|
plt.close()
|
||||||
|
print(f'Wrote {out}')
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
main()
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
\relax
|
||||||
|
\@writefile{toc}{\contentsline {paragraph}{The chosen 6-edge cut.}{1}{}\protected@file@percent }
|
||||||
|
\@writefile{toc}{\contentsline {paragraph}{Resulting half-graphs.}{2}{}\protected@file@percent }
|
||||||
|
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Cut-and-depth-label procedure on Holton-McKay graph \#0 ($38$ vertices, $57$ edges, cubic planar non-Hamiltonian). The $6$-edge matching cut splits $G'$ into a $10$-vertex piece $G'_0$ (left) and a $28$-vertex piece $G'_1$ (right). Pendant edges (dashed, dark purple) are at depth $0$; the colour gradient encodes depth $0$ through max depth via BFS in the line-graph sense. Orange squares are the new pendant vertices; red circles are the boundary vertices in $V_i$; gray circles are interior vertices.\relax }}{2}{}\protected@file@percent }
|
||||||
|
\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}}
|
||||||
|
\newlabel{fig:cut-depth-label}{{1}{2}}
|
||||||
|
\@writefile{toc}{\contentsline {paragraph}{Visualization.}{2}{}\protected@file@percent }
|
||||||
|
\gdef \@abspage@last{3}
|
||||||
@@ -0,0 +1,332 @@
|
|||||||
|
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 26 MAY 2026 15:00
|
||||||
|
entering extended mode
|
||||||
|
restricted \write18 enabled.
|
||||||
|
%&-line parsing enabled.
|
||||||
|
**cut_depth_label.tex
|
||||||
|
(./cut_depth_label.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
|
||||||
|
)
|
||||||
|
(./cut_depth_label.aux)
|
||||||
|
\openout1 = `cut_depth_label.aux'.
|
||||||
|
|
||||||
|
LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 17.
|
||||||
|
LaTeX Font Info: ... okay on input line 17.
|
||||||
|
LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 17.
|
||||||
|
LaTeX Font Info: ... okay on input line 17.
|
||||||
|
LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 17.
|
||||||
|
LaTeX Font Info: ... okay on input line 17.
|
||||||
|
LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 17.
|
||||||
|
LaTeX Font Info: ... okay on input line 17.
|
||||||
|
LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 17.
|
||||||
|
LaTeX Font Info: ... okay on input line 17.
|
||||||
|
LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 17.
|
||||||
|
LaTeX Font Info: ... okay on input line 17.
|
||||||
|
LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 17.
|
||||||
|
LaTeX Font Info: ... okay on input line 17.
|
||||||
|
|
||||||
|
(/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 18.
|
||||||
|
|
||||||
|
(/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 18.
|
||||||
|
|
||||||
|
|
||||||
|
(/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||||
|
File: umsb.fd 2013/01/14 v3.01 AMS symbols B
|
||||||
|
)
|
||||||
|
Overfull \hbox (31.88051pt too wide) in paragraph at lines 65--70
|
||||||
|
\OT1/cmr/m/n/10.95 Holton and McKay (loaded from \OT1/cmtt/m/n/10.95 papers/eve
|
||||||
|
n[]level[]graph[]generators/experiments/nonham38m4.pc\OT1/cmr/m/n/10.95 ).
|
||||||
|
[]
|
||||||
|
|
||||||
|
[1
|
||||||
|
|
||||||
|
{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
|
||||||
|
<fig_cut_depth_label.png, id=17, 1150.44806pt x 565.06107pt>
|
||||||
|
File: fig_cut_depth_label.png Graphic file (type png)
|
||||||
|
<use fig_cut_depth_label.png>
|
||||||
|
Package pdftex.def Info: fig_cut_depth_label.png used on input line 108.
|
||||||
|
(pdftex.def) Requested size: 469.75502pt x 230.7281pt.
|
||||||
|
|
||||||
|
Overfull \hbox (46.78696pt too wide) in paragraph at lines 123--130
|
||||||
|
\OT1/cmr/m/n/10.95 The pro-ce-dure mir-rors the $4$CT cut-and-reglue scheme (\O
|
||||||
|
T1/cmtt/m/n/10.95 rainbow[]proof.tex\OT1/cmr/m/n/10.95 , \OT1/cmtt/m/n/10.95 wo
|
||||||
|
rst[]case[]proof[]sketch.tex\OT1/cmr/m/n/10.95 ,
|
||||||
|
[]
|
||||||
|
|
||||||
|
[2 <./fig_cut_depth_label.png>] [3] (./cut_depth_label.aux) )
|
||||||
|
Here is how much of TeX's memory you used:
|
||||||
|
4579 strings out of 478268
|
||||||
|
74295 string characters out of 5846347
|
||||||
|
370409 words of memory out of 5000000
|
||||||
|
22760 multiletter control sequences out of 15000+600000
|
||||||
|
479174 words of font info for 66 fonts, out of 8000000 for 9000
|
||||||
|
1141 hyphenation exceptions out of 8191
|
||||||
|
55i,8n,63p,656b,312s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||||
|
{/usr/local/texliv
|
||||||
|
e/2022/texmf-dist/fonts/enc/dvips/cm-super/cm-super-ts1.enc}</usr/local/texlive
|
||||||
|
/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/local/texlive/
|
||||||
|
2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx12.pfb></usr/local/texlive/2
|
||||||
|
022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/20
|
||||||
|
22/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi8.pfb></usr/local/texlive/2022
|
||||||
|
/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2022/t
|
||||||
|
exmf-dist/fonts/type1/public/amsfonts/cm/cmr17.pfb></usr/local/texlive/2022/tex
|
||||||
|
mf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/local/texlive/2022/texmf-
|
||||||
|
dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2022/texmf-d
|
||||||
|
ist/fonts/type1/public/amsfonts/cm/cmsy8.pfb></usr/local/texlive/2022/texmf-dis
|
||||||
|
t/fonts/type1/public/amsfonts/cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist
|
||||||
|
/fonts/type1/public/amsfonts/cm/cmtt10.pfb></usr/local/texlive/2022/texmf-dist/
|
||||||
|
fonts/type1/public/cm-super/sfrm1095.pfb>
|
||||||
|
Output written on cut_depth_label.pdf (3 pages, 357384 bytes).
|
||||||
|
PDF statistics:
|
||||||
|
78 PDF objects out of 1000 (max. 8388607)
|
||||||
|
46 compressed objects within 1 object stream
|
||||||
|
0 named destinations out of 1000 (max. 500000)
|
||||||
|
6 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||||
|
|
||||||
Binary file not shown.
@@ -0,0 +1,163 @@
|
|||||||
|
\documentclass[11pt]{article}
|
||||||
|
\usepackage{amsmath,amssymb,amsthm}
|
||||||
|
\usepackage{graphicx}
|
||||||
|
\usepackage{geometry}
|
||||||
|
\usepackage{booktabs}
|
||||||
|
\usepackage{caption}
|
||||||
|
\geometry{margin=1in}
|
||||||
|
|
||||||
|
\title{Cut-and-depth-label: a procedure for labelling half-graphs of\\
|
||||||
|
a $6$-edge cut by ``distance to the cut''}
|
||||||
|
\author{}
|
||||||
|
\date{}
|
||||||
|
|
||||||
|
\newtheorem*{obs}{Observation}
|
||||||
|
\newtheorem*{prop}{Proposition}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\section*{Procedure}
|
||||||
|
|
||||||
|
Given a maximal planar graph $G$ and its dual $G'$:
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Find a $6$-edge cut $C \subseteq E(G')$ partitioning
|
||||||
|
$V(G')$ into $S$ and $V \setminus S$ with both sides
|
||||||
|
non-empty.
|
||||||
|
\item Remove the cut edges to obtain two graphs
|
||||||
|
$G'_0 := G'[S] \cup \emptyset_C$ and
|
||||||
|
$G'_1 := G'[V \setminus S] \cup \emptyset_C$ (each a cubic
|
||||||
|
graph minus boundary edges).
|
||||||
|
\item In each $G'_i$:
|
||||||
|
\begin{enumerate}
|
||||||
|
\item Let $V_i$ be the set of vertices of degree $2$ in
|
||||||
|
$G'_i$ (i.e.\ original cubic vertices incident to
|
||||||
|
exactly one cut edge; the cut edge accounts for the
|
||||||
|
missing edge, so the vertex sits at degree $3 - 1 =
|
||||||
|
2$).
|
||||||
|
\item For each $v \in V_i$, attach a new pendant edge to
|
||||||
|
a fresh vertex, and \textbf{label these pendant
|
||||||
|
edges with depth $0$}.
|
||||||
|
\item For $d = 0, 1, 2, \ldots$: label every unlabelled
|
||||||
|
edge that shares a vertex with a depth-$d$ edge with
|
||||||
|
depth $d + 1$.
|
||||||
|
\item Stop when every edge has a depth label.
|
||||||
|
\end{enumerate}
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\noindent\textbf{Interpretation.} The depth labels give a BFS
|
||||||
|
distance in the line graph of $G'_i$ starting from the pendants
|
||||||
|
added at the cut. Equivalently, the depth of an edge $e$ in $G'_i$
|
||||||
|
is the minimum number of edges traversed (via shared-vertex
|
||||||
|
adjacency) to reach a pendant.
|
||||||
|
|
||||||
|
\noindent\textbf{Caveat.} If the cut $C$ is not a \emph{matching}
|
||||||
|
cut (i.e., the $6$ cut edges share vertices), then some boundary
|
||||||
|
vertices have degree $< 2$ in $G'_i$ and do not receive a pendant
|
||||||
|
under the strict reading of step~3(a). When the cut is a
|
||||||
|
matching, each of the $12$ boundary vertices ($6$ per side) has
|
||||||
|
degree exactly $2$ and receives a pendant; the construction is
|
||||||
|
symmetric.
|
||||||
|
|
||||||
|
\section*{Example: Holton-McKay graph \#0}
|
||||||
|
|
||||||
|
We apply the procedure to the first of the six non-Hamiltonian
|
||||||
|
$38$-vertex cubic plane graphs found by Holton and McKay (loaded
|
||||||
|
from \texttt{papers/even\_level\_graph\_generators/experiments/nonham38m4.pc}).
|
||||||
|
This $G'$ is itself a cubic plane graph; its dual $G$ is a
|
||||||
|
$21$-vertex triangulation.
|
||||||
|
|
||||||
|
\paragraph{The chosen 6-edge cut.}
|
||||||
|
Greedy search over $128$ distinct $6$-edge cuts in $G'$, preferring
|
||||||
|
\emph{matching cuts} (both sides have $6$ distinct boundary
|
||||||
|
vertices) and then balanced $|S|$, returns
|
||||||
|
\[
|
||||||
|
|S| = 10, \qquad
|
||||||
|
C = \{(34, 29),\, (35, 30),\, (26, 22),\, (27, 23),\,
|
||||||
|
(28, 24),\, (31, 25)\}.
|
||||||
|
\]
|
||||||
|
This is a matching cut: the $6$ edges have $12$ distinct endpoints,
|
||||||
|
$6$ on each side.
|
||||||
|
|
||||||
|
\paragraph{Resulting half-graphs.}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{lcc}
|
||||||
|
\toprule
|
||||||
|
& $G'_0$ & $G'_1$ \\
|
||||||
|
\midrule
|
||||||
|
$|S|$ & $10$ & $28$ \\
|
||||||
|
Original vertices in $G'_i$ & $10$ & $28$ \\
|
||||||
|
$|V_i|$ (pendants added) & $6$ & $6$ \\
|
||||||
|
Total vertices in $G'_i$ & $16$ & $34$ \\
|
||||||
|
Total edges & $18$ & $45$ \\
|
||||||
|
Max depth assigned & $2$ & $7$ \\
|
||||||
|
\bottomrule
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
Multi-cut vertices (degree $< 2$ in induced subgraph): \emph{none}
|
||||||
|
on either side, since the cut is a matching.
|
||||||
|
|
||||||
|
\paragraph{Visualization.}
|
||||||
|
|
||||||
|
\begin{figure}[h]
|
||||||
|
\centering
|
||||||
|
\includegraphics[width=\textwidth]{fig_cut_depth_label.png}
|
||||||
|
\caption{Cut-and-depth-label procedure on Holton-McKay graph \#0
|
||||||
|
($38$ vertices, $57$ edges, cubic planar non-Hamiltonian). The
|
||||||
|
$6$-edge matching cut splits $G'$ into a $10$-vertex piece $G'_0$
|
||||||
|
(left) and a $28$-vertex piece $G'_1$ (right). Pendant edges
|
||||||
|
(dashed, dark purple) are at depth $0$; the colour gradient
|
||||||
|
encodes depth $0$ through max depth via BFS in the line-graph
|
||||||
|
sense. Orange squares are the new pendant vertices; red circles
|
||||||
|
are the boundary vertices in $V_i$; gray circles are interior
|
||||||
|
vertices.}
|
||||||
|
\label{fig:cut-depth-label}
|
||||||
|
\end{figure}
|
||||||
|
|
||||||
|
\section*{Connection to chain pigeonhole / 4CT reducibility}
|
||||||
|
|
||||||
|
The procedure mirrors the $4$CT cut-and-reglue scheme
|
||||||
|
(\texttt{rainbow\_proof.tex}, \texttt{worst\_case\_proof\_sketch.tex},
|
||||||
|
\texttt{two\_approaches\_comparison.tex}) at the structural level.
|
||||||
|
After cutting, each $G'_i$ is a cubic-minus-boundary graph; the
|
||||||
|
pendant additions formally restore cubicity at the $6$ degree-$2$
|
||||||
|
boundary vertices. The depth label on each edge measures its
|
||||||
|
``distance to the cut.''
|
||||||
|
|
||||||
|
For a minimum counterexample to the 4CT (i.e., a cubic plane $G'$
|
||||||
|
with no proper $3$-edge-colouring), the depth labels organise each
|
||||||
|
$G'_i$ into concentric layers indexed by distance to the cut. The
|
||||||
|
$3$-edge-colourings of $G'_i$ must extend a colouring at the
|
||||||
|
depth-$0$ pendants (= a ring colouring at the cut); the BFS
|
||||||
|
ordering by depth is the natural induction order for propagating
|
||||||
|
the colouring inward.
|
||||||
|
|
||||||
|
In the tire framework, the cut cycle $\gamma$ in the primal $G$
|
||||||
|
(corresponding to the $6$-edge cut in $G'$ via planar duality) plays
|
||||||
|
the role of the tire's inner boundary on one side and outer boundary
|
||||||
|
on the other. The depth label on $G'_i$-edges is exactly the dual
|
||||||
|
analogue of plane depth from $\gamma$ (cf.\ the level-cycle
|
||||||
|
generalization discussion in the recent conversation).
|
||||||
|
|
||||||
|
\section*{Limitations of this example}
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item Holton-McKay graphs are cyclically $5$-edge-connected (not
|
||||||
|
$6$-edge-connected), so $6$-edge cuts are not the minimum
|
||||||
|
cyclic cut. The smallest cyclic edge cuts in this graph are
|
||||||
|
size $5$.
|
||||||
|
\item The matching $6$-cut found is highly imbalanced ($|S|=10$
|
||||||
|
vs.\ $|S^c|=28$). Searching among the $128$ distinct
|
||||||
|
$6$-edge cuts for a balanced matching cut may give better
|
||||||
|
examples.
|
||||||
|
\item Depth labels propagate via the line graph, not via vertex
|
||||||
|
BFS. An alternative procedure would label \emph{vertices}
|
||||||
|
by BFS distance from the boundary; both yield similar
|
||||||
|
layered structures but with slightly different counts.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\end{document}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 259 KiB |
Reference in New Issue
Block a user