Commit Graph

19 Commits

Author SHA1 Message Date
didericis af60c3b241 Draw source-dual cut on a valid straight-line embedding
Store the combinatorial planar embedding in the result and lay out the
source graph with nx.planar_layout so no primal edges cross and each dual
node sits inside its own triangle, replacing the concentric layout that
produced crossings. Add a committed generate_full_walk.py that reproduces
the walk .md/.pdf/.png outputs, and regenerate the walk 1 and walk 2 dual
figures and PDFs (reports unchanged).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 03:59:22 -04:00
didericis 4ba9ce47d1 Add walk-distance labelling to source-dual cut
Label each dual face by its distance, within the source-dual cut, from
the first entry's cap down tooth. Regenerate the seed 1 and seed 2 full
walk figures and metadata with the new labelling.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-16 03:42:08 -04:00
didericis 696a6b3104 Add second full medial tire cut walk (seed 2)
Source-dual cut is a spanning tree of the dual (38 faces, 37 edges,
connected and acyclic) after 20 cut edges removed.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 21:56:30 -04:00
didericis 1e8bee04ce Handle compound medial tires in cut labelling 2026-06-15 21:46:56 -04:00
didericis 37a7ff0b00 Update medial tire cut labelling 2026-06-15 20:54:25 -04:00
didericis b605931678 Treat each disjoint annular cycle as its own full medial tire graph
A tread's annular frontier can split into several disjoint cycles; each
is now recognised as a separate full medial tire graph instead of
disqualifying the whole tread.

- recognise() returns a list of (g, bij), one per annular cycle
  component; add annular_cycle_components() and _recognise_one(), and
  iterate components in iter_pieces().
- Key tires/results by (depth, component) throughout both experiment
  drivers: _label_treads chains each tire to a parent-depth down tooth
  sharing its apex; _cap_cut/_assemble_cut_graph/to_json/summary and the
  dual-cut collectors/draws follow suit.

Source vertex selection for the dual-cut experiment now deep-embeds a
random face and roots at the outer-cap vertex. The source-dual figure
labels the source-graph vertices, highlights the entry medial vertex,
and uses a cap-rooted concentric layout.

For seed 7 / face (14,15,19) this recognises treads 3 and 4 as two
tires each (3.0,3.1,4.0,4.1), so every dual face is now cut.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 12:01:36 -04:00
didericis 7554582056 Draw tread 0 (the source cap) in the dual-cut experiment
Add draw_cap_png and a --cap-png flag: render tread 0 as a wheel (source
hub, link-cycle rim, cap triangles filled, cap cut marked) from the
extract_tread roles, since tread 0 is skipped by tire recognition (a wheel
has no up teeth). Render funcD seed7's cap.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 11:06:49 -04:00
didericis 192d97a31d Regenerate funcD seed7 figures with the apex-cut model
Reflects cutting up-tooth apexes (except entry teeth): seed7 removes 17
source-dual edges, so its dual retains cycles (not a tree).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:52:28 -04:00
didericis 4e92dde36e Cut up-tooth apexes (except entry teeth) in the dual-cut experiment
Duplicate the apex medial vertex of every singleton up tooth across all
recognised treads -- except each tread's entry tooth, whose apex is left
intact -- in addition to the closing annular-vertex cuts.

For seed59 (source 5) this removes 19 = n-1 source-dual edges and the
remaining dual is a tree (verified for every source/entry choice). The
tree property holds exactly when n-1 distinct edges are cut; some graphs
(e.g. seed7, cutting 17) fall short and retain cycles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:50:56 -04:00
didericis 0a3d7b2615 Draw each full medial tire cut from the dual-cut experiment
Add draw_tire_cuts_png (and a --tire-png flag): one panel per recognised
tread showing the annular cycle, up/down/bite teeth, walk-depth labels, and
cut slits, ported from medial_tire_cut_labelling.to_tikz. Render the
function-D (seed 7) graph's tire cuts.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:37:42 -04:00
didericis 367b5adc71 Add source-dual cut experiment with chained entry points
Reads the chained medial tire cut off as a source-dual cut (planar dual of
G with the cut edges removed), as in seed59_min5_dual_cut_1.png, and counts
the missing dual edges around each dual face (vertex of G).

Four chained entry points, broad to narrow control:
  - random_dual_cut: random min-degree-5 maximal planar graph -> ...
  - dual_cut_random_source: random level source -> ...
  - dual_cut_random_entry: random root entry tooth -> ...
  - medial_tire_dual_cut: worker chaining the walk-depth labelling/cut.

Refactor _label_treads to accept an optional root_entry_edge (default
preserves the arbitrary-up-tooth behaviour) so the worker can pin the entry.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 10:33:15 -04:00
didericis 94d59ceaed Relabel medial comparison plots by walk depth 2026-06-15 02:11:27 -04:00
didericis 24af5485d2 Add medial cut comparison plots 2026-06-15 01:47:23 -04:00
didericis ea1ab0b986 Add source cap cut to medial tire figures 2026-06-15 01:11:04 -04:00
didericis c64c720e5a Draw the whole medial graph with all tire cuts
Add a --whole mode to draw_medial_tire_cut.py that renders the entire
medial graph M(G) (the assembled cut graph), on a Kamada-Kawai layout,
with the recognised tires highlighted (black annular vertices, blue/red
teeth carrying walk depths, larger red bite apex) and the rest of M(G)
in grey. Add the resulting figure (Figure 3) and a describing paragraph
to the paper for the n=20 seed-72 example, via an \input-ed .tikz file.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-15 00:07:00 -04:00
didericis 9d7cb7644e Draw a medial tire cut from a random n=20 graph
Add experiments/draw_medial_tire_cut.py, the paper-graphics companion
that imports run_experiment and emits a TikZ panel (walk-depth labels +
cut slits) per recognised tread via to_tikz. Add the resulting figure
(Example 3.2, Figure 2): the single recognised tread T_2 of the medial
tire decomposition of a random maximal planar graph on 20 vertices
(seed 72), an 8-cycle piece with a bite, labelled and cut.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 23:55:00 -04:00
didericis a22ca4b888 Add medial tire cut experiment and chaining section
New experiments/run_medial_tire_cut_experiment.py: generates a random
maximal planar graph (stacked seed + random diagonal flips), builds the
medial graph, takes the tire decomposition at a random vertex level
source, walk-depth labels and cuts each full medial tire graph chained
down the tire tree, and assembles one final cut graph of M(G) with a
global label map (data only; graphics go in a separate script).

Fix label_and_cut: the root face is None, which collided with the
next(..., None) sentinel, leaving teeth unlabelled when the entry up
tooth lay inside a bite gap; use a distinct sentinel so the ascent to
the root face runs.

Add a "Chaining across the tire tree" section to the paper, clarifying
that the candidate parent down teeth are the boundary (singleton) down
teeth only -- bite teeth are interior to the parent and shared with no
child, so a lower-walk bite is skipped.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 23:46:49 -04:00
didericis b4ddc7da8b Add walk-depth labelling/cut script and worked example
New experiments/medial_tire_cut_labelling.py: takes a full medial tire
graph and an entry up tooth and runs the walk-depth labelling-and-cut
procedure, reusing the full medial tire generator's model and emitting
TikZ. Add a generator-produced 8-tooth example to the paper (Figure 1,
Example 2.3) showing the labelling and the two cuts, plus a remark
fixing the cut's closing tooth for descended faces.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 22:00:52 -04:00
didericis 291f7e98c7 Add Medial Tire Cuts paper with walk-depth labelling and cut
New paper "Medial Tire Cuts" citing the medial tire decompositions
paper. States the goal of decomposing the medial graph into a tree of
3-faces, and gives the walk-depth labelling-and-cut procedure for a
single full medial tire graph: a cut duplicates the annular vertex
where a face's tooth traversal closes (planar unzip), reducing the
inner faces to teeth.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 21:39:03 -04:00