coloring_nested_tire_graphs: switch bridge example to barbell (non-pendant bridge)
The previous bridge example used a pendant edge as the bridge. A
pendant edge IS technically a bridge (single-edge cut), but the
intended notion was a "proper" non-pendant bridge: an edge cut
connecting two non-trivial subgraphs. Replaced with the smallest
example:
- B_out = 4-cycle on {0, 1, 2, 3}.
- O = barbell on {4..9}: two disjoint triangles {4, 5, 6} and
{7, 8, 9} connected by the bridge edge 6-7.
- Annular triangulation by hand (12 triangles, all listed in the
generator script with planarity verified by Sage).
The barbell case is structurally cleaner: BOTH endpoints of the
bridge have degree >= 2 in O, and the interior dual subgraph has
the two bridge-incident annular faces (d_5, d_6) as its trivalent
theta-graph vertices (in the pendant case, the trivalent vertices
were NOT bridge-incident, which was confusing).
Updates fig_partial_tire_dual_bridge.png and the figure caption.
Paper stays at 9 pages.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -1,17 +1,18 @@
|
||||
"""Draw a partial tire dual D(T) for a tire whose inner outerplanar
|
||||
graph O has a bridge.
|
||||
graph O has a (non-pendant) bridge: a single edge whose removal
|
||||
disconnects O into two non-trivial components.
|
||||
|
||||
Tire construction:
|
||||
- Outer cycle B_out: triangle on {0, 1, 2}.
|
||||
- Inner outerplanar O on {3, 4, 5, 6}: triangle 3-4-5 plus pendant
|
||||
edge 5-6 (the bridge of O).
|
||||
- Annular triangulation with 8 triangles (computed by hand below).
|
||||
- Outer cycle B_out: 4-cycle on {0, 1, 2, 3}.
|
||||
- Inner outerplanar O on {4..9}: two disjoint triangles {4, 5, 6}
|
||||
and {7, 8, 9}, connected by the bridge edge 6-7.
|
||||
- Annular triangulation built by hand below.
|
||||
|
||||
The bridge 5-6 has both incident faces in the annular region, so in
|
||||
the partial tire dual it contributes an interior dual edge (not a
|
||||
leaf). This makes the interior dual subgraph a theta graph rather
|
||||
than a single cycle: two trivalent vertices (the two annular faces
|
||||
incident to the bridge) connected by three paths.
|
||||
The bridge 6-7 has both incident faces in the annular region, so in
|
||||
the partial tire dual it contributes an interior dual edge (not
|
||||
leaves). This makes the interior dual subgraph a theta graph: two
|
||||
trivalent vertices (the two annular faces incident to the bridge,
|
||||
or those with all interior edges) connected by three paths.
|
||||
"""
|
||||
import math
|
||||
import os
|
||||
@@ -21,54 +22,72 @@ from collections import defaultdict
|
||||
import matplotlib.pyplot as plt
|
||||
import matplotlib.patches as patches
|
||||
|
||||
from sage.all import Graph
|
||||
|
||||
|
||||
# Explicit vertex positions
|
||||
POS = {
|
||||
0: (0.0, 1.0),
|
||||
1: (-0.866, -0.5),
|
||||
2: (0.866, -0.5),
|
||||
3: (0.0, 0.32),
|
||||
4: (-0.27, -0.17),
|
||||
5: (0.13, -0.17),
|
||||
6: (0.52, -0.07),
|
||||
0: (0.0, 1.6), # outer top
|
||||
1: (-1.6, 0.0), # outer left
|
||||
2: (0.0, -1.6), # outer bottom
|
||||
3: (1.6, 0.0), # outer right
|
||||
4: (-0.65, 0.42), # left triangle, top
|
||||
5: (-0.65, -0.42), # left triangle, bottom
|
||||
6: (-0.20, 0.0), # left triangle, right (= bridge endpoint 1)
|
||||
7: (0.20, 0.0), # right triangle, left (= bridge endpoint 2)
|
||||
8: (0.65, 0.42), # right triangle, top
|
||||
9: (0.65, -0.42), # right triangle, bottom
|
||||
}
|
||||
|
||||
# Annular triangles (in lattice-path-like order, but here just listed)
|
||||
TRIANGLES = [
|
||||
(0, 1, 4), # T1 -- O-move
|
||||
(0, 4, 3), # T2 -- has edge 4-3 boundary (inner triangle)
|
||||
(1, 2, 5), # T3 -- O-move
|
||||
(1, 5, 4), # T4 -- inner-triangle-edge boundary
|
||||
(2, 0, 6), # T5 -- O-move
|
||||
(0, 3, 6), # T6 -- ALL INTERIOR (bridge neighbour)
|
||||
(3, 5, 6), # T7 -- inner-triangle-edge boundary, contains bridge
|
||||
(5, 2, 6), # T8 -- ALL INTERIOR (bridge neighbour)
|
||||
]
|
||||
|
||||
# Tire edges (all)
|
||||
T_EDGES = [
|
||||
# outer cycle (B_out)
|
||||
(0, 1), (1, 2), (2, 0),
|
||||
# O: triangle 3-4-5
|
||||
(3, 4), (4, 5), (3, 5),
|
||||
# O: pendant / bridge
|
||||
(5, 6),
|
||||
# spokes
|
||||
(0, 3), (1, 4), (2, 5),
|
||||
# diagonals from annular triangulation
|
||||
(0, 4), (1, 5), (0, 6), (2, 6), (3, 6),
|
||||
# outer cycle B_out (length 4)
|
||||
(0, 1), (1, 2), (2, 3), (3, 0),
|
||||
# O: triangle 4-5-6
|
||||
(4, 5), (5, 6), (4, 6),
|
||||
# O: triangle 7-8-9
|
||||
(7, 8), (8, 9), (7, 9),
|
||||
# O: bridge
|
||||
(6, 7),
|
||||
# annular edges (spokes + diagonals chosen to triangulate)
|
||||
(0, 4), (0, 6), (0, 8),
|
||||
(1, 4), (1, 5),
|
||||
(2, 5), (2, 6), (2, 7), (2, 9),
|
||||
(3, 8), (3, 9),
|
||||
(0, 7), # extra diagonal to triangulate top
|
||||
]
|
||||
|
||||
# Boundary edges
|
||||
B_OUT_EDGES = [(0, 1), (1, 2), (2, 0)]
|
||||
# Edges of O on inner-triangle-face boundary (i.e., NOT the bridge)
|
||||
B_IN_EDGES = [(3, 4), (4, 5), (3, 5)]
|
||||
# Bridge edge (interior to annulus)
|
||||
BRIDGE = (5, 6)
|
||||
# Annular triangles -- listed explicitly so we know exactly which
|
||||
# faces are which. 12 of them.
|
||||
TRIANGLES = [
|
||||
(0, 1, 4), # top-left top
|
||||
(1, 4, 5), # left side, with triangle 1
|
||||
(1, 2, 5), # bottom-left
|
||||
(2, 5, 6), # right of left-triangle, bottom
|
||||
(0, 4, 6), # right of left-triangle, top
|
||||
(0, 6, 7), # top-center over the bridge (bridge-incident)
|
||||
(2, 6, 7), # bottom-center over the bridge (bridge-incident)
|
||||
(0, 7, 8), # right of right-triangle, top
|
||||
(2, 7, 9), # right of right-triangle, bottom
|
||||
(0, 8, 3), # top-right
|
||||
(3, 8, 9), # right side, with triangle 2
|
||||
(2, 9, 3), # bottom-right
|
||||
]
|
||||
|
||||
# Boundary edges:
|
||||
B_OUT_EDGES = [(0, 1), (1, 2), (2, 3), (3, 0)]
|
||||
# Edges of O on inner-triangle-face boundaries (= NOT the bridge):
|
||||
B_IN_EDGES = [(4, 5), (5, 6), (4, 6),
|
||||
(7, 8), (8, 9), (7, 9)]
|
||||
BRIDGE = (6, 7)
|
||||
|
||||
|
||||
def main():
|
||||
# Map: edge -> list of triangle indices containing it
|
||||
# Sanity-check via sage that the graph is planar
|
||||
G = Graph(T_EDGES)
|
||||
assert G.is_planar(), "Constructed tire is not planar"
|
||||
print(f"Tire graph: n={G.order()}, m={G.size()}, planar=True")
|
||||
|
||||
# Map: edge -> triangle indices containing it
|
||||
edge_to_tris = defaultdict(list)
|
||||
for i, t in enumerate(TRIANGLES):
|
||||
for e in (frozenset({t[0], t[1]}),
|
||||
@@ -76,67 +95,84 @@ def main():
|
||||
frozenset({t[0], t[2]})):
|
||||
edge_to_tris[e].append(i)
|
||||
|
||||
# Verify each B_out edge is in exactly 1 annular triangle
|
||||
# Verify each B_out edge in exactly 1 annular triangle
|
||||
for u, v in B_OUT_EDGES:
|
||||
ts = edge_to_tris[frozenset({u, v})]
|
||||
assert len(ts) == 1, f"B_out edge {u}-{v} in {ts}"
|
||||
|
||||
# Each B_in (= non-bridge O edge) is in exactly 1 annular triangle
|
||||
assert len(ts) == 1, f"B_out edge {u}-{v} in {ts} (expected 1)"
|
||||
# Each B_in (non-bridge O edge) in exactly 1 annular triangle
|
||||
for u, v in B_IN_EDGES:
|
||||
ts = edge_to_tris[frozenset({u, v})]
|
||||
assert len(ts) == 1, f"B_in edge {u}-{v} in {ts}"
|
||||
|
||||
# Bridge is in exactly 2 annular triangles (interior to annulus)
|
||||
assert len(ts) == 1, f"B_in edge {u}-{v} in {ts} (expected 1)"
|
||||
# Bridge in exactly 2 annular triangles
|
||||
bts = edge_to_tris[frozenset(BRIDGE)]
|
||||
print(f"Bridge {BRIDGE} is in annular triangles {bts}")
|
||||
assert len(bts) == 2
|
||||
|
||||
# Interior dual subgraph: connect annular triangles sharing an edge
|
||||
# Verify every edge of T is accounted for
|
||||
seen_in_tris = set()
|
||||
for t in TRIANGLES:
|
||||
for e in (frozenset({t[0], t[1]}),
|
||||
frozenset({t[1], t[2]}),
|
||||
frozenset({t[0], t[2]})):
|
||||
seen_in_tris.add(e)
|
||||
all_T_edges = {frozenset(e) for e in T_EDGES}
|
||||
# Each edge appears in at least one triangle EXCEPT it might be that
|
||||
# boundary edges to non-annular faces are accounted for differently.
|
||||
# Annular triangles use boundary edges (B_out and inner-triangle-of-O
|
||||
# edges) plus interior annular edges. Every edge of T should appear
|
||||
# in at least one annular triangle EXCEPT the inner faces of O don't
|
||||
# exist as separate annular triangles. Wait, the inner triangle
|
||||
# faces of O (= {4,5,6} and {7,8,9}) are themselves face boundaries
|
||||
# of T but NOT in the annular region. So edges of the inner
|
||||
# triangles of O appear in exactly ONE annular triangle (across the
|
||||
# boundary) + the inner triangle face on the other side.
|
||||
# Check: every T edge should appear in at most 2 annular triangles
|
||||
# (and at least 1 if it's incident to any annular face).
|
||||
for e in all_T_edges:
|
||||
n = len(edge_to_tris[e])
|
||||
assert n in (1, 2), \
|
||||
f"Edge {sorted(e)} appears in {n} annular triangles"
|
||||
|
||||
# Interior dual adjacencies
|
||||
n_tri = len(TRIANGLES)
|
||||
tri_adj = defaultdict(set)
|
||||
for e, ts in edge_to_tris.items():
|
||||
if len(ts) == 2:
|
||||
tri_adj[ts[0]].add(ts[1])
|
||||
tri_adj[ts[1]].add(ts[0])
|
||||
|
||||
print("Interior dual subgraph degree sequence:")
|
||||
for i in range(n_tri):
|
||||
print(f" T{i+1} ({TRIANGLES[i]}): degree {len(tri_adj[i])}")
|
||||
print(f" T{i} {TRIANGLES[i]}: degree {len(tri_adj[i])}")
|
||||
|
||||
# Centroids of triangles for d_f positions
|
||||
centroids = []
|
||||
for t in TRIANGLES:
|
||||
cx = (POS[t[0]][0] + POS[t[1]][0] + POS[t[2]][0]) / 3
|
||||
cy = (POS[t[0]][1] + POS[t[1]][1] + POS[t[2]][1]) / 3
|
||||
centroids.append((cx, cy))
|
||||
# Centroids of triangles (for d_f positions)
|
||||
centroids = [((POS[t[0]][0] + POS[t[1]][0] + POS[t[2]][0]) / 3,
|
||||
(POS[t[0]][1] + POS[t[1]][1] + POS[t[2]][1]) / 3)
|
||||
for t in TRIANGLES]
|
||||
|
||||
# === Plot ===
|
||||
fig, ax = plt.subplots(figsize=(10, 9))
|
||||
|
||||
# Draw underlying tire edges faintly
|
||||
outer_set = {0, 1, 2}
|
||||
inner_set = {3, 4, 5, 6}
|
||||
outer_set = {0, 1, 2, 3}
|
||||
inner_set = {4, 5, 6, 7, 8, 9}
|
||||
bridge_fs = frozenset(BRIDGE)
|
||||
for u, v in T_EDGES:
|
||||
x1, y1 = POS[u]; x2, y2 = POS[v]
|
||||
if u in outer_set and v in outer_set:
|
||||
color = '#a8c9e8'; lw = 2.0
|
||||
if frozenset({u, v}) == bridge_fs:
|
||||
color, lw = '#cc6677', 2.8 # bridge of O
|
||||
elif u in outer_set and v in outer_set:
|
||||
color, lw = '#a8c9e8', 2.0
|
||||
elif u in inner_set and v in inner_set:
|
||||
# Distinguish bridge (pendant) from triangle edges
|
||||
if frozenset({u, v}) == frozenset(BRIDGE):
|
||||
color = '#cc6677'; lw = 2.5 # darker red for bridge
|
||||
else:
|
||||
color = '#e8a8a8'; lw = 2.0
|
||||
color, lw = '#e8a8a8', 2.0
|
||||
else:
|
||||
color = '#cccccc'; lw = 1.0
|
||||
color, lw = '#cccccc', 1.0
|
||||
ax.plot([x1, x2], [y1, y2], color=color, linewidth=lw, zorder=1)
|
||||
|
||||
# Tire vertices
|
||||
for v in [0, 1, 2]:
|
||||
for v in outer_set:
|
||||
x, y = POS[v]
|
||||
ax.plot(x, y, 'o', color='#a8c9e8', markersize=15, zorder=2)
|
||||
ax.plot(x, y, 'o', color='#a8c9e8', markersize=16, zorder=2)
|
||||
ax.annotate(str(v), (x, y), color='white', ha='center', va='center',
|
||||
fontsize=9, fontweight='bold', zorder=3)
|
||||
for v in [3, 4, 5, 6]:
|
||||
for v in inner_set:
|
||||
x, y = POS[v]
|
||||
ax.plot(x, y, 'o', color='#e8a8a8', markersize=13, zorder=2)
|
||||
ax.annotate(str(v), (x, y), color='white', ha='center', va='center',
|
||||
@@ -144,24 +180,22 @@ def main():
|
||||
|
||||
DUAL_COLOR = '#7d3c98'
|
||||
LEAF_COLOR = '#e67e22'
|
||||
BRIDGE_DUAL_COLOR = '#cc4444' # color the bridge's dual edge differently
|
||||
BRIDGE_DUAL_COLOR = '#cc4444'
|
||||
|
||||
# Interior dual edges
|
||||
for i in range(n_tri):
|
||||
for j in tri_adj[i]:
|
||||
if j <= i:
|
||||
continue
|
||||
x1, y1 = centroids[i]; x2, y2 = centroids[j]
|
||||
# Find shared edge to colour-code bridge edge
|
||||
if j <= i: continue
|
||||
ti_es = {frozenset({TRIANGLES[i][a], TRIANGLES[i][b]})
|
||||
for a, b in [(0, 1), (1, 2), (0, 2)]}
|
||||
tj_es = {frozenset({TRIANGLES[j][a], TRIANGLES[j][b]})
|
||||
for a, b in [(0, 1), (1, 2), (0, 2)]}
|
||||
shared = (ti_es & tj_es).pop()
|
||||
if shared == frozenset(BRIDGE):
|
||||
if shared == bridge_fs:
|
||||
ec, lw = BRIDGE_DUAL_COLOR, 3.0
|
||||
else:
|
||||
ec, lw = DUAL_COLOR, 2.0
|
||||
x1, y1 = centroids[i]; x2, y2 = centroids[j]
|
||||
ax.plot([x1, x2], [y1, y2], color=ec, linewidth=lw, zorder=4)
|
||||
|
||||
# Leaves for B_out edges
|
||||
@@ -170,18 +204,15 @@ def main():
|
||||
midx = (POS[u][0] + POS[v][0]) / 2
|
||||
midy = (POS[u][1] + POS[v][1]) / 2
|
||||
d = math.sqrt(midx**2 + midy**2)
|
||||
push = 1.20
|
||||
push = 1.18
|
||||
lpos = (midx * push / d, midy * push / d)
|
||||
cx, cy = centroids[ti]
|
||||
ax.plot([cx, lpos[0]], [cy, lpos[1]], color=LEAF_COLOR,
|
||||
linewidth=1.5, linestyle='--', zorder=4)
|
||||
ax.plot(lpos[0], lpos[1], 'D', color=LEAF_COLOR, markersize=11,
|
||||
ax.plot(lpos[0], lpos[1], 'D', color=LEAF_COLOR, markersize=10,
|
||||
zorder=5)
|
||||
ax.annotate(f"$\\ell^{{\\mathrm{{out}}}}_{{{u},{v}}}$", lpos,
|
||||
color='white', ha='center', va='center', fontsize=6,
|
||||
fontweight='bold', zorder=6)
|
||||
|
||||
# Leaves for non-bridge B_in edges (= the 3 inner triangle edges)
|
||||
# Leaves for non-bridge edges of O (= inner triangle edges)
|
||||
for u, v in B_IN_EDGES:
|
||||
ti = edge_to_tris[frozenset({u, v})][0]
|
||||
midx = (POS[u][0] + POS[v][0]) / 2
|
||||
@@ -190,30 +221,21 @@ def main():
|
||||
vx, vy = midx - cx, midy - cy
|
||||
norm = math.sqrt(vx*vx + vy*vy)
|
||||
offset = 0.10
|
||||
if norm > 1e-9:
|
||||
nx, ny = vx / norm, vy / norm
|
||||
else:
|
||||
nx, ny = 0, -1
|
||||
nx, ny = (vx / norm, vy / norm) if norm > 1e-9 else (0, -1)
|
||||
lpos = (midx + nx * offset, midy + ny * offset)
|
||||
ax.plot([cx, lpos[0]], [cy, lpos[1]], color=LEAF_COLOR,
|
||||
linewidth=1.5, linestyle='--', zorder=4)
|
||||
ax.plot(lpos[0], lpos[1], 'D', color=LEAF_COLOR, markersize=11,
|
||||
ax.plot(lpos[0], lpos[1], 'D', color=LEAF_COLOR, markersize=10,
|
||||
zorder=5)
|
||||
ax.annotate(f"$\\ell^{{\\mathrm{{in}}}}_{{{u},{v}}}$", lpos,
|
||||
color='white', ha='center', va='center', fontsize=6,
|
||||
fontweight='bold', zorder=6)
|
||||
|
||||
# Interior dual vertices d_f, highlighting the two degree-3
|
||||
# vertices in a darker color (these are the trivalent vertices
|
||||
# of the theta graph that the interior dual forms).
|
||||
# Interior dual vertices, highlight degree-3 (trivalent)
|
||||
for ti, (cx, cy) in enumerate(centroids):
|
||||
is_deg3 = (len(tri_adj[ti]) == 3)
|
||||
marker_color = '#5a2273' if is_deg3 else DUAL_COLOR
|
||||
ax.plot(cx, cy, 's', color=marker_color, markersize=15, zorder=5)
|
||||
deg = len(tri_adj[ti])
|
||||
c = '#5a2273' if deg == 3 else DUAL_COLOR
|
||||
ax.plot(cx, cy, 's', color=c, markersize=14, zorder=5)
|
||||
ax.annotate(f"$d_{{{ti}}}$", (cx, cy), color='white', ha='center',
|
||||
va='center', fontsize=7, fontweight='bold', zorder=6)
|
||||
va='center', fontsize=6, fontweight='bold', zorder=6)
|
||||
|
||||
# Legend
|
||||
legend_items = [
|
||||
plt.Line2D([], [], marker='o', color='w', markerfacecolor='#a8c9e8',
|
||||
markersize=12, label='$B_{\\mathrm{out}}$ vertex'),
|
||||
@@ -223,13 +245,13 @@ def main():
|
||||
label='$B_{\\mathrm{out}}$ edge'),
|
||||
plt.Line2D([], [], color='#e8a8a8', linewidth=2.0,
|
||||
label='triangle edge of $O$'),
|
||||
plt.Line2D([], [], color='#cc6677', linewidth=2.5,
|
||||
label='bridge of $O$ (= pendant)'),
|
||||
plt.Line2D([], [], color='#cc6677', linewidth=2.8,
|
||||
label='bridge of $O$'),
|
||||
plt.Line2D([], [], marker='s', color='w', markerfacecolor=DUAL_COLOR,
|
||||
markersize=12, label='$d_f$ (degree 2 in interior dual)'),
|
||||
markersize=12, label='$d_f$ (deg 2 in interior dual)'),
|
||||
plt.Line2D([], [], marker='s', color='w', markerfacecolor='#5a2273',
|
||||
markersize=12,
|
||||
label='$d_f$ (degree 3 -- theta-graph trivalent)'),
|
||||
label='$d_f$ (deg 3 -- trivalent theta-graph vertex)'),
|
||||
plt.Line2D([], [], marker='D', color='w', markerfacecolor=LEAF_COLOR,
|
||||
markersize=10, label='leaf'),
|
||||
plt.Line2D([], [], color=DUAL_COLOR, linewidth=2.0,
|
||||
@@ -242,16 +264,18 @@ def main():
|
||||
ax.legend(handles=legend_items, loc='upper left',
|
||||
bbox_to_anchor=(1.02, 1.0), fontsize=8, frameon=False)
|
||||
|
||||
ax.set_xlim(-1.30, 1.50)
|
||||
ax.set_ylim(-1.20, 1.20)
|
||||
ax.set_xlim(-2.10, 2.60)
|
||||
ax.set_ylim(-1.90, 1.90)
|
||||
ax.set_aspect('equal')
|
||||
ax.axis('off')
|
||||
ax.set_title(
|
||||
'Partial tire dual $D(T)$ when $O$ has a bridge\n'
|
||||
'$O$ = triangle $\\{3,4,5\\}$ + pendant edge $5$--$6$;\n'
|
||||
'interior dual is a theta graph (2 deg-3 vertices + 3 paths), '
|
||||
'not a cycle.',
|
||||
fontsize=11)
|
||||
'$D(T)$ when $O$ is a barbell (two triangles + one bridge edge)\n'
|
||||
'$O$ = triangle $\\{4,5,6\\}$ $\\cup$ bridge $6$--$7$ $\\cup$ '
|
||||
'triangle $\\{7,8,9\\}$;\n'
|
||||
'bridge is interior to the annulus, so it contributes an interior '
|
||||
'dual edge (red).\n'
|
||||
'Interior dual is a theta graph (2 trivalent $d_f$ + 3 paths).',
|
||||
fontsize=10)
|
||||
|
||||
HERE = os.path.dirname(os.path.abspath(__file__))
|
||||
out = os.path.join(HERE, 'partial_tire_dual_bridge.png')
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 143 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 143 KiB |
@@ -11,21 +11,21 @@
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The partial tire dual $D(T)$ (purple squares + orange diamonds) drawn on top of a small tire graph $T$ (faint) with $m = 6$ and $k = 4$. The ten interior vertices $d_f$ at the centroids of the annular triangles form a single $10$-cycle (solid purple); each boundary edge of the annular region (either of $B_{\mathrm {out}}$ or of $B_{\mathrm {in}}$) contributes a degree-$1$ leaf (orange diamond) attached to the unique annular face incident to it (dashed orange), giving the structure $C_{10} \circ K_1$ of Proposition\nonbreakingspace 1.8\hbox {}.}}{4}{}\protected@file@percent }
|
||||
\newlabel{fig:partial-tire-dual-example}{{3}{4}}
|
||||
\newlabel{prop:partial-tire-dual-structure}{{1.8}{4}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Partial tire dual $D(T)$ when the inner outerplanar graph $O$ has a bridge. Here $B_{\mathrm {out}}$ is a triangle on $\{0,1,2\}$ and $O$ is a triangle $\{3,4,5\}$ with a pendant edge $5$--$6$ (the bridge of $O$). Because both faces incident to the bridge are annular triangles, the bridge contributes an \emph {interior dual edge} (highlighted in red) rather than two leaves; consequently the interior dual subgraph is no longer the single $(n+m)$-cycle of Proposition\nonbreakingspace 1.8\hbox {}, but a theta graph (two trivalent vertices $d_5, d_7$ connected by three internally vertex-disjoint paths in $D(T)$). Leaves come only from $B_{\mathrm {out}}$ ($n = 3$ leaves) and from the three non-bridge edges of $O$ (the three triangle edges of the inner triangle).}}{5}{}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {4}{\ignorespaces Partial tire dual $D(T)$ when the inner outerplanar graph $O$ has a bridge --- here a non-trivial edge cut connecting two disjoint triangles. $B_{\mathrm {out}}$ is a $4$-cycle on $\{0,1,2,3\}$ and $O$ is the barbell: triangle $\{4,5,6\}$ together with triangle $\{7,8,9\}$ joined by the bridge edge $6$--$7$ (removing the bridge disconnects $O$). Because both faces incident to the bridge are annular triangles, the bridge contributes an \emph {interior dual edge} (highlighted in red) rather than two leaves; consequently the interior dual subgraph is no longer the single $(n+m)$-cycle of Proposition\nonbreakingspace 1.8\hbox {}, but a theta graph: the two trivalent vertices $d_5, d_6$ (the bridge-incident annular faces) are joined by three internally vertex-disjoint paths in $D(T)$. Leaves come only from $B_{\mathrm {out}}$ ($n = 4$ leaves) and the six non-bridge edges of $O$ ($m_{\partial } = 6$ leaves, three for each triangle).}}{5}{}\protected@file@percent }
|
||||
\newlabel{fig:partial-tire-dual-bridge}{{4}{5}}
|
||||
\newlabel{prop:no-level-d-pinch}{{1.9}{5}}
|
||||
\citation{bauerfeld-pds}
|
||||
\newlabel{lem:tire-component}{{1.10}{6}}
|
||||
\citation{bauerfeld-pds}
|
||||
\newlabel{rem:tire-component-degenerate}{{1.11}{7}}
|
||||
\newlabel{rem:tire-component-degenerate}{{1.11}{8}}
|
||||
\newlabel{rem:tire-no-extra-hypotheses}{{1.12}{8}}
|
||||
\newlabel{prop:edge-vertex-bijection}{{1.13}{8}}
|
||||
\newlabel{rem:edge-vertex-corollary}{{1.14}{8}}
|
||||
\bibcite{bauerfeld-pds}{1}
|
||||
\newlabel{tocindent-1}{0pt}
|
||||
\newlabel{tocindent0}{12.7778pt}
|
||||
\newlabel{tocindent1}{17.77782pt}
|
||||
\newlabel{tocindent2}{0pt}
|
||||
\newlabel{tocindent3}{0pt}
|
||||
\newlabel{rem:edge-vertex-corollary}{{1.14}{9}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{9}{}\protected@file@percent }
|
||||
\gdef \@abspage@last{9}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 25 MAY 2026 20:43
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 25 MAY 2026 20:52
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
@@ -213,22 +213,18 @@ File: fig_partial_tire_dual.png Graphic file (type png)
|
||||
<use fig_partial_tire_dual.png>
|
||||
Package pdftex.def Info: fig_partial_tire_dual.png used on input line 225.
|
||||
(pdftex.def) Requested size: 280.79956pt x 233.36552pt.
|
||||
<fig_partial_tire_dual_bridge.png, id=31, 765.6103pt x 542.47668pt>
|
||||
<fig_partial_tire_dual_bridge.png, id=31, 780.96768pt x 522.15076pt>
|
||||
File: fig_partial_tire_dual_bridge.png Graphic file (type png)
|
||||
<use fig_partial_tire_dual_bridge.png>
|
||||
Package pdftex.def Info: fig_partial_tire_dual_bridge.png used on input line 2
|
||||
40.
|
||||
(pdftex.def) Requested size: 280.79956pt x 198.95839pt.
|
||||
(pdftex.def) Requested size: 306.0022pt x 204.59406pt.
|
||||
|
||||
|
||||
LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
|
||||
[4 <./fig_partial_tire_dual.png>] [5 <./fig_partial_tire_dual_bridge.png>]
|
||||
[6]
|
||||
Underfull \vbox (badness 1043) has occurred while \output is active []
|
||||
|
||||
[7]
|
||||
[8] [9] (./paper.aux) )
|
||||
[6] [7] [8] [9] (./paper.aux) )
|
||||
Here is how much of TeX's memory you used:
|
||||
3028 strings out of 478268
|
||||
42672 string characters out of 5846347
|
||||
@@ -236,25 +232,25 @@ Here is how much of TeX's memory you used:
|
||||
21073 multiletter control sequences out of 15000+600000
|
||||
475666 words of font info for 53 fonts, out of 8000000 for 9000
|
||||
1302 hyphenation exceptions out of 8191
|
||||
69i,8n,76p,907b,316s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</usr/local/texlive/2022/texmf-dist/fonts/type1/public/a
|
||||
msfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/am
|
||||
sfonts/cm/cmcsc10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/am
|
||||
sfonts/cm/cmex10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/ams
|
||||
fonts/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsf
|
||||
onts/cm/cmmi5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfon
|
||||
ts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts
|
||||
/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/c
|
||||
m/cmr5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/c
|
||||
mr7.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/cmsy10.
|
||||
pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5.pf
|
||||
b></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.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/cmti8.pfb></u
|
||||
sr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb
|
||||
>
|
||||
Output written on paper.pdf (9 pages, 748857 bytes).
|
||||
69i,8n,76p,1079b,316s 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/p
|
||||
ublic/amsfonts/cm/cmcsc10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/p
|
||||
ublic/amsfonts/cm/cmex10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pu
|
||||
blic/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pub
|
||||
lic/amsfonts/cm/cmmi5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/publi
|
||||
c/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/
|
||||
amsfonts/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/am
|
||||
sfonts/cm/cmr5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfo
|
||||
nts/cm/cmr7.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
|
||||
/cmsy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/
|
||||
cmsy5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cm
|
||||
sy7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti
|
||||
10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8
|
||||
.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/ms
|
||||
am10.pfb>
|
||||
Output written on paper.pdf (9 pages, 746924 bytes).
|
||||
PDF statistics:
|
||||
123 PDF objects out of 1000 (max. 8388607)
|
||||
71 compressed objects within 1 object stream
|
||||
|
||||
Binary file not shown.
@@ -237,20 +237,23 @@ Proposition~\ref{prop:partial-tire-dual-structure}.}
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\includegraphics[width=0.78\textwidth]{fig_partial_tire_dual_bridge.png}
|
||||
\includegraphics[width=0.85\textwidth]{fig_partial_tire_dual_bridge.png}
|
||||
\caption{Partial tire dual $D(T)$ when the inner outerplanar graph
|
||||
$O$ has a bridge. Here $B_{\mathrm{out}}$ is a triangle on
|
||||
$\{0,1,2\}$ and $O$ is a triangle $\{3,4,5\}$ with a pendant edge
|
||||
$5$--$6$ (the bridge of $O$). Because both faces incident to the
|
||||
$O$ has a bridge --- here a non-trivial edge cut connecting two
|
||||
disjoint triangles. $B_{\mathrm{out}}$ is a $4$-cycle on
|
||||
$\{0,1,2,3\}$ and $O$ is the barbell: triangle $\{4,5,6\}$ together
|
||||
with triangle $\{7,8,9\}$ joined by the bridge edge $6$--$7$ (removing
|
||||
the bridge disconnects $O$). Because both faces incident to the
|
||||
bridge are annular triangles, the bridge contributes an
|
||||
\emph{interior dual edge} (highlighted in red) rather than two
|
||||
leaves; consequently the interior dual subgraph is no longer the
|
||||
single $(n+m)$-cycle of
|
||||
Proposition~\ref{prop:partial-tire-dual-structure}, but a theta
|
||||
graph (two trivalent vertices $d_5, d_7$ connected by three
|
||||
internally vertex-disjoint paths in $D(T)$). Leaves come only from
|
||||
$B_{\mathrm{out}}$ ($n = 3$ leaves) and from the three non-bridge
|
||||
edges of $O$ (the three triangle edges of the inner triangle).}
|
||||
graph: the two trivalent vertices $d_5, d_6$ (the bridge-incident
|
||||
annular faces) are joined by three internally vertex-disjoint paths
|
||||
in $D(T)$. Leaves come only from $B_{\mathrm{out}}$ ($n = 4$ leaves)
|
||||
and the six non-bridge edges of $O$ ($m_{\partial} = 6$ leaves,
|
||||
three for each triangle).}
|
||||
\label{fig:partial-tire-dual-bridge}
|
||||
\end{figure}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user