Add source cap cut to medial tire figures
This commit is contained in:
@@ -4,16 +4,18 @@ Paper-graphics companion to ``run_medial_tire_cut_experiment.py``: it imports
|
||||
``run_experiment`` from there, runs the pipeline on a random maximal planar
|
||||
graph, and emits TikZ. By default it draws one ``tikzpicture`` (walk-depth
|
||||
labels + cut slits) per recognised full medial tire graph, using ``to_tikz``
|
||||
from ``medial_tire_cut_labelling``. With ``--whole`` it instead draws the whole
|
||||
medial graph M(G) with every tire's cuts applied, on a Kamada--Kawai layout, the
|
||||
recognised tires highlighted and the rest of M(G) in grey.
|
||||
from ``medial_tire_cut_labelling``. With ``--whole`` it instead draws a
|
||||
two-panel Figure 3 graphic: the source graph with its source highlighted and
|
||||
the whole medial graph M(G) drawn with every medial vertex at the midpoint of
|
||||
its source edge and labelled by that source edge, with the full BFS-level chain
|
||||
shown and the currently computed walk-depth labels and cuts marked.
|
||||
|
||||
This script only renders; the experiment itself draws nothing. Run with the
|
||||
repo venv (networkx): ``.venv/bin/python``.
|
||||
|
||||
Examples:
|
||||
.venv/bin/python draw_medial_tire_cut.py -n 20 --seed 72 > panels.tex
|
||||
.venv/bin/python draw_medial_tire_cut.py -n 20 --seed 72 --whole > whole.tex
|
||||
.venv/bin/python draw_medial_tire_cut.py -n 20 --seed 59 > panels.tex
|
||||
.venv/bin/python draw_medial_tire_cut.py -n 20 --seed 59 --whole > whole.tex
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -24,18 +26,21 @@ import os
|
||||
import sys
|
||||
|
||||
import networkx as nx
|
||||
import numpy as np
|
||||
|
||||
_HERE = os.path.dirname(os.path.abspath(__file__))
|
||||
sys.path.insert(0, _HERE)
|
||||
|
||||
from run_medial_tire_cut_experiment import run_experiment # noqa: E402
|
||||
from medial_tire_cut_labelling import to_tikz # noqa: E402
|
||||
from tire_realization_analysis import triangular_faces # noqa: E402
|
||||
|
||||
|
||||
def tikz_panels(n: int, seed: int, scale: float = 1.6) -> tuple[dict, list[str]]:
|
||||
def tikz_panels(n: int, seed: int, scale: float = 1.6,
|
||||
min_degree: int = 5, attempts: int = 1000) -> tuple[dict, list[str]]:
|
||||
"""Run the experiment and return ``(result, panels)``, one TikZ panel per
|
||||
recognised tread, each showing that tread's walk-depth labelling and cut."""
|
||||
result = run_experiment(n=n, seed=seed)
|
||||
result = run_experiment(n=n, seed=seed, min_degree=min_degree, attempts=attempts)
|
||||
panels = []
|
||||
for d in sorted(result["results"]):
|
||||
rec = result["results"][d]
|
||||
@@ -45,104 +50,228 @@ def tikz_panels(n: int, seed: int, scale: float = 1.6) -> tuple[dict, list[str]]
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# The whole medial graph: M(G) with all tire cuts applied.
|
||||
# Figure 3: the source graph and midpoint drawing of the whole medial graph.
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def _is_split(node) -> bool:
|
||||
return isinstance(node, tuple) and len(node) == 3 and node[1] in ("A", "B")
|
||||
def _source_layout(G: nx.Graph) -> dict[int, tuple[float, float]]:
|
||||
"""Straight-line planar layout for the source graph, normalised to the unit
|
||||
box and reused by the medial drawing."""
|
||||
faces, _ = triangular_faces(G)
|
||||
outer = list(faces[0])
|
||||
outer_set = set(outer)
|
||||
raw = {}
|
||||
for i, v in enumerate(outer):
|
||||
angle = math.radians(90.0 - i * 360.0 / len(outer))
|
||||
raw[v] = np.array([math.cos(angle), math.sin(angle)], dtype=float)
|
||||
|
||||
inner = [v for v in sorted(G.nodes()) if v not in outer_set]
|
||||
if inner:
|
||||
idx = {v: i for i, v in enumerate(inner)}
|
||||
n = len(inner)
|
||||
A = np.zeros((n, n))
|
||||
bx = np.zeros(n)
|
||||
by = np.zeros(n)
|
||||
for i, v in enumerate(inner):
|
||||
nbrs = list(G.neighbors(v))
|
||||
A[i, i] = 1.0
|
||||
for w in nbrs:
|
||||
if w in idx:
|
||||
A[i, idx[w]] -= 1.0 / len(nbrs)
|
||||
else:
|
||||
bx[i] += raw[w][0] / len(nbrs)
|
||||
by[i] += raw[w][1] / len(nbrs)
|
||||
xs = np.linalg.solve(A, bx)
|
||||
ys = np.linalg.solve(A, by)
|
||||
for v in inner:
|
||||
raw[v] = np.array([xs[idx[v]], ys[idx[v]]], dtype=float)
|
||||
|
||||
pts = np.array([raw[v] for v in G.nodes()], dtype=float)
|
||||
center = 0.5 * (pts.max(axis=0) + pts.min(axis=0))
|
||||
span = float(max(*(pts.max(axis=0) - pts.min(axis=0)), 1.0))
|
||||
return {
|
||||
v: tuple((raw[v] - center) / span)
|
||||
for v in G.nodes()
|
||||
}
|
||||
|
||||
|
||||
def _medial_layout(H: nx.Graph) -> dict:
|
||||
"""A Kamada--Kawai layout of the (planar) cut graph, normalised to the unit
|
||||
box. The two copies of a cut vertex have different neighbours, so the layout
|
||||
separates them automatically, showing the slit."""
|
||||
pos = nx.kamada_kawai_layout(H)
|
||||
xs = [p[0] for p in pos.values()]
|
||||
ys = [p[1] for p in pos.values()]
|
||||
cx, cy = 0.5 * (max(xs) + min(xs)), 0.5 * (max(ys) + min(ys))
|
||||
span = max(max(xs) - min(xs), max(ys) - min(ys)) or 1.0
|
||||
return {v: ((p[0] - cx) / span, (p[1] - cy) / span) for v, p in pos.items()}
|
||||
def _edge_midpoint(pos: dict, edge) -> tuple[float, float]:
|
||||
u, v = edge
|
||||
ux, uy = pos[u]
|
||||
vx, vy = pos[v]
|
||||
return (0.5 * (ux + vx), 0.5 * (uy + vy))
|
||||
|
||||
|
||||
def medial_tikz(result: dict, scale: float = 9.0) -> str:
|
||||
"""A TikZ ``tikzpicture`` of the whole medial graph M(G) with every tire's
|
||||
cuts applied. Tire teeth are coloured and carry their walk depth; annular
|
||||
medial vertices are black; medial vertices outside any recognised tire are
|
||||
grey; cut (split) vertices are drawn as separated copies."""
|
||||
H = result["cut_graph"]
|
||||
pos = _medial_layout(H)
|
||||
def _edge_label(edge) -> str:
|
||||
u, v = edge
|
||||
return f"${u}\\!{{-}}\\!{v}$"
|
||||
|
||||
# role of each medial vertex: annular / up / down / bite, and walk depth.
|
||||
annular = set()
|
||||
|
||||
def _source_graph_tikz(result: dict, pos: dict, scale: float) -> str:
|
||||
G, source = result["G"], result["source"]
|
||||
L = []
|
||||
A = L.append
|
||||
A(f"\\begin{{tikzpicture}}[scale={scale},")
|
||||
A(" sedge/.style={black!50, line width=0.35pt},")
|
||||
A(" sv/.style={circle, draw=black!60, fill=white, inner sep=1.1pt},")
|
||||
A(" srcv/.style={circle, draw=blue!75!black, fill=blue!18, line width=0.7pt, inner sep=1.8pt}]")
|
||||
|
||||
def pt(v):
|
||||
x, y = pos[v]
|
||||
return f"({x:.3f},{y:.3f})"
|
||||
|
||||
for u, v in sorted(G.edges()):
|
||||
A(f"\\draw[sedge] {pt(u)}--{pt(v)};")
|
||||
for v in sorted(G.nodes()):
|
||||
style = "srcv" if v == source else "sv"
|
||||
A(f"\\node[{style}] at {pt(v)} {{}};")
|
||||
sx, sy = pos[source]
|
||||
A(f"\\node[font=\\scriptsize, text=blue!70!black] at ({sx:.3f},{sy - 0.085:.3f}) {{source {source}}};")
|
||||
A("\\end{tikzpicture}")
|
||||
return "\n".join(L)
|
||||
|
||||
|
||||
def _medial_midpoint_tikz(result: dict, pos: dict, scale: float) -> str:
|
||||
"""Draw M(G) with each medial vertex at the midpoint of its source edge.
|
||||
Every medial vertex is labelled by its source edge; same-level source edges
|
||||
show the BFS level-chain tooth layers, and interlevel source edges show the
|
||||
annular layers. Currently computed tire walk-depth labels and cut labels
|
||||
are overlaid without moving the medial vertices away from their source
|
||||
edges."""
|
||||
G, M = result["G"], result["M"]
|
||||
levels = nx.single_source_shortest_path_length(G, result["source"])
|
||||
medial_pos = {edge: _edge_midpoint(pos, edge) for edge in M.nodes()}
|
||||
|
||||
apex_roles = {}
|
||||
apex_walks = {}
|
||||
for r in result["labels"]:
|
||||
apex_roles[r["apex"]] = r["role"]
|
||||
apex_walks.setdefault(r["apex"], []).append(r["walk"])
|
||||
|
||||
cut_records = []
|
||||
cut_number = 1
|
||||
for c in result.get("cap_cuts", []):
|
||||
cut_records.append((cut_number, c["medial_vertex"], "cap", c))
|
||||
cut_number += 1
|
||||
for d in sorted(result["results"]):
|
||||
g, bij = result["results"][d]["g"], result["results"][d]["bij"]
|
||||
annular.update(bij[f"a{k}"] for k in range(g.n))
|
||||
apex = {r["apex"]: (r["role"], r["walk"]) for r in result["labels"]}
|
||||
|
||||
def edge_of(node):
|
||||
return node[0] if _is_split(node) else node
|
||||
rec = result["results"][d]
|
||||
g, bij = rec["g"], rec["bij"]
|
||||
for c in rec["cuts"]:
|
||||
if c.vertex is None:
|
||||
continue
|
||||
cut_records.append((cut_number, bij[f"a{c.vertex}"], d, c))
|
||||
cut_number += 1
|
||||
|
||||
L = []
|
||||
A = L.append
|
||||
A(f"\\begin{{tikzpicture}}[scale={scale},")
|
||||
A(" med/.style={black!30, line width=0.3pt},")
|
||||
A(" grey/.style={circle, draw=black!45, fill=black!8, inner sep=0.9pt},")
|
||||
A(" ann/.style={circle, fill=black, inner sep=1.0pt},")
|
||||
A(" cutv/.style={circle, draw=red!75!black, fill=red!12, inner sep=1.0pt},")
|
||||
A(" upv/.style={circle, draw=blue!70!black, fill=blue!15, inner sep=1.3pt},")
|
||||
A(" downv/.style={circle, draw=red!70!black, fill=red!15, inner sep=1.3pt},")
|
||||
A(" bitev/.style={circle, draw=red!70!black, fill=red!35, inner sep=1.6pt},")
|
||||
A(" dlbl/.style={font=\\tiny\\bfseries, text=black, inner sep=0.5pt}]")
|
||||
A(" base/.style={black!12, line width=0.25pt},")
|
||||
A(" med/.style={black!38, line width=0.32pt},")
|
||||
A(" annv/.style={circle, draw=black!70, fill=black!18, inner sep=1.0pt},")
|
||||
A(" levone/.style={circle, draw=orange!75!black, fill=orange!20, inner sep=1.2pt},")
|
||||
A(" levtwo/.style={circle, draw=violet!70!black, fill=violet!18, inner sep=1.2pt},")
|
||||
A(" levthree/.style={circle, draw=teal!70!black, fill=teal!18, inner sep=1.2pt},")
|
||||
A(" knownv/.style={circle, draw=red!70!black, fill=red!24, inner sep=1.5pt},")
|
||||
A(" elbl/.style={font=\\tiny, text=black!70, inner sep=0.2pt},")
|
||||
A(" dlbl/.style={font=\\tiny\\bfseries, text=black, inner sep=0.5pt},")
|
||||
A(" cut/.style={red!80!black, line width=1.0pt},")
|
||||
A(" cutlbl/.style={font=\\tiny, text=red!75!black}]")
|
||||
|
||||
def pt(node):
|
||||
x, y = pos[node]
|
||||
def pt_med(edge):
|
||||
x, y = medial_pos[edge]
|
||||
return f"({x:.3f},{y:.3f})"
|
||||
|
||||
for u, v in H.edges():
|
||||
A(f"\\draw[med] {pt(u)}--{pt(v)};")
|
||||
for node in H.nodes():
|
||||
mv = edge_of(node)
|
||||
if mv in apex:
|
||||
role, _ = apex[mv]
|
||||
style = {"up": "upv", "down": "downv", "bite": "bitev"}[role]
|
||||
elif mv in annular:
|
||||
style = "cutv" if _is_split(node) else "ann"
|
||||
else:
|
||||
style = "grey"
|
||||
A(f"\\node[{style}] at {pt(node)} {{}};")
|
||||
for node in H.nodes():
|
||||
mv = edge_of(node)
|
||||
if _is_split(node) or mv not in apex:
|
||||
continue
|
||||
x, y = pos[node]
|
||||
A(f"\\node[dlbl] at ({x:.3f},{y:.3f}) [yshift=4.5pt] {{{apex[mv][1]}}};")
|
||||
def pt_src(v):
|
||||
x, y = pos[v]
|
||||
return f"({x:.3f},{y:.3f})"
|
||||
|
||||
for u, v in sorted(result["G"].edges()):
|
||||
A(f"\\draw[base] {pt_src(u)}--{pt_src(v)};")
|
||||
for u, v in M.edges():
|
||||
A(f"\\draw[med] {pt_med(u)}--{pt_med(v)};")
|
||||
|
||||
def chain_style(edge):
|
||||
u, v = edge
|
||||
lu, lv = levels[u], levels[v]
|
||||
if lu != lv:
|
||||
return "annv"
|
||||
if edge in apex_roles:
|
||||
return "knownv"
|
||||
return {1: "levone", 2: "levtwo", 3: "levthree"}.get(lu, "annv")
|
||||
|
||||
for mv in sorted(M.nodes()):
|
||||
A(f"\\node[{chain_style(mv)}] at {pt_med(mv)} {{}};")
|
||||
for mv in sorted(M.nodes()):
|
||||
x, y = medial_pos[mv]
|
||||
A(f"\\node[elbl] at ({x:.3f},{y:.3f}) [yshift=-4.8pt] {{{_edge_label(mv)}}};")
|
||||
for mv in sorted(apex_walks):
|
||||
x, y = medial_pos[mv]
|
||||
label = ",".join(str(w) for w in sorted(apex_walks[mv]))
|
||||
A(f"\\node[dlbl] at ({x:.3f},{y:.3f}) [yshift=5.0pt] {{{label}}};")
|
||||
for number, mv, _d, _cut in cut_records:
|
||||
u, v = mv
|
||||
ux, uy = pos[u]
|
||||
vx, vy = pos[v]
|
||||
mx, my = medial_pos[mv]
|
||||
ex, ey = vx - ux, vy - uy
|
||||
length = math.hypot(ex, ey) or 1.0
|
||||
dx, dy = -0.035 * ey / length, 0.035 * ex / length
|
||||
A(f"\\draw[cut] ({mx - dx:.3f},{my - dy:.3f})--({mx + dx:.3f},{my + dy:.3f});")
|
||||
A(f"\\node[cutlbl] at ({mx + 2.4 * dx:.3f},{my + 2.4 * dy:.3f}) {{cut {number}}};")
|
||||
A("\\end{tikzpicture}")
|
||||
return "\n".join(L)
|
||||
|
||||
|
||||
def medial_tikz(result: dict, scale: float = 7.0) -> str:
|
||||
"""Two-panel TikZ for Figure 3: the source graph and the midpoint drawing of
|
||||
its medial graph with all medial vertices labelled, plus the tire
|
||||
walk-depth labels and cuts."""
|
||||
pos = _source_layout(result["G"])
|
||||
source = _source_graph_tikz(result, pos, scale=0.58 * scale)
|
||||
medial = _medial_midpoint_tikz(result, pos, scale=scale)
|
||||
return "\n".join([
|
||||
"\\begin{tabular}{c}",
|
||||
source,
|
||||
"\\\\[-0.25ex]",
|
||||
"{\\scriptsize source graph $G$}",
|
||||
"\\\\[1.0ex]",
|
||||
medial,
|
||||
"\\\\[-0.25ex]",
|
||||
"{\\scriptsize medial graph $M(G)$ at edge midpoints}",
|
||||
"\\end{tabular}",
|
||||
])
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description=__doc__,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument("-n", type=int, default=20)
|
||||
parser.add_argument("--seed", type=int, default=72)
|
||||
parser.add_argument("--scale", type=float, default=1.6)
|
||||
parser.add_argument("--min-degree", type=int, default=5,
|
||||
help="reject random graphs below this minimum degree")
|
||||
parser.add_argument("--attempts", type=int, default=1000,
|
||||
help="number of consecutive seeds to try for --min-degree")
|
||||
parser.add_argument("--whole", action="store_true",
|
||||
help="draw the whole medial graph M(G) with all cuts, "
|
||||
"instead of one panel per tread")
|
||||
args = parser.parse_args()
|
||||
|
||||
if args.whole:
|
||||
result = run_experiment(n=args.n, seed=args.seed)
|
||||
result = run_experiment(n=args.n, seed=args.seed,
|
||||
min_degree=args.min_degree, attempts=args.attempts)
|
||||
treads = sorted(result["results"])
|
||||
print(f"% whole medial graph: n={args.n} seed={args.seed} "
|
||||
f"graph_seed={result['graph_seed']} min_degree={result['min_degree']} "
|
||||
f"source={result['source']} recognised treads={treads} "
|
||||
f"|M(G)|={result['M'].number_of_nodes()}")
|
||||
print(medial_tikz(result, scale=args.scale if args.scale != 1.6 else 9.0))
|
||||
print(medial_tikz(result, scale=args.scale if args.scale != 1.6 else 7.0))
|
||||
return
|
||||
|
||||
result, panels = tikz_panels(args.n, args.seed, scale=args.scale)
|
||||
result, panels = tikz_panels(args.n, args.seed, scale=args.scale,
|
||||
min_degree=args.min_degree, attempts=args.attempts)
|
||||
treads = sorted(result["results"])
|
||||
print(f"% medial tire cut: n={args.n} seed={args.seed} "
|
||||
f"graph_seed={result['graph_seed']} min_degree={result['min_degree']} "
|
||||
f"source={result['source']} recognised treads={treads}")
|
||||
if not panels:
|
||||
print("% (no recognised full medial tire graphs for this graph)")
|
||||
|
||||
@@ -4,7 +4,8 @@ End-to-end experiment for the *Medial Tire Cuts* paper:
|
||||
|
||||
1. Generate a random maximal planar graph G on n vertices (stacked seed plus
|
||||
random diagonal flips; ``random_maximal_planar`` from the medial tire
|
||||
decompositions experiments).
|
||||
decompositions experiments), optionally rejecting samples below a requested
|
||||
minimum degree.
|
||||
2. Build its medial graph M(G).
|
||||
3. Take the nested tire decomposition at one random vertex level source: the
|
||||
BFS-level treads, each realized as a FullMedialTireGraph.
|
||||
@@ -24,6 +25,9 @@ Chaining rule (walk depths across the tire tree).
|
||||
tooth and the child up tooth glued to it across the shared level cycle are
|
||||
the same medial vertex of M(G). The entry up tooth's walk depth is that
|
||||
parent down tooth's depth + 1, and the walk increments locally from there.
|
||||
* The source cap contributes one additional cut. It is placed at the
|
||||
counter-clockwise source edge incident to the cap down tooth whose apex is
|
||||
the root tread's entry up tooth.
|
||||
|
||||
Run with the repo venv (networkx + scipy): ``.venv/bin/python``.
|
||||
"""
|
||||
@@ -34,6 +38,7 @@ import argparse
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import networkx as nx
|
||||
@@ -48,8 +53,8 @@ sys.path.insert(0, _MTD)
|
||||
sys.path.insert(0, _HERE)
|
||||
|
||||
from tire_realization_analysis import ( # noqa: E402
|
||||
extract_tread, medial_graph, medial_tire_facemodel, random_maximal_planar,
|
||||
recognise, triangular_faces,
|
||||
ekey, extract_tread, medial_graph, medial_tire_facemodel,
|
||||
random_maximal_planar, recognise, triangular_faces,
|
||||
)
|
||||
from medial_tire_cut_labelling import door_bite, label_and_cut # noqa: E402
|
||||
|
||||
@@ -90,11 +95,59 @@ def _label_treads(treads, results):
|
||||
"start_depth": start_depth, "depth": depth, "cuts": cuts}
|
||||
|
||||
|
||||
def _cap_cut(G, emb, source, levels, results):
|
||||
"""The source-cap cut determined by the first recognised tread's entry.
|
||||
|
||||
If the root tread enters at an up tooth whose apex is the level-1 edge
|
||||
``xy``, then ``xy`` is a down tooth of the source cap. Cut the
|
||||
counter-clockwise source edge incident to that down tooth. The returned
|
||||
record also stores the local neighbour split used to unzip the medial
|
||||
vertex in the whole medial graph.
|
||||
"""
|
||||
if not results:
|
||||
return []
|
||||
|
||||
root_depth = min(results)
|
||||
rec = results[root_depth]
|
||||
g, bij = rec["g"], rec["bij"]
|
||||
x, y = _apex_vertex(g, bij, rec["entry_edge"])
|
||||
if levels.get(x) != 1 or levels.get(y) != 1:
|
||||
return []
|
||||
|
||||
order = list(emb.neighbors_cw_order(source))
|
||||
if x not in order or y not in order:
|
||||
return []
|
||||
|
||||
next_cw = {v: order[(i + 1) % len(order)] for i, v in enumerate(order)}
|
||||
prev_cw = {v: order[(i - 1) % len(order)] for i, v in enumerate(order)}
|
||||
if next_cw[x] == y:
|
||||
cut_endpoint, other_endpoint = x, y
|
||||
elif next_cw[y] == x:
|
||||
cut_endpoint, other_endpoint = y, x
|
||||
else:
|
||||
return []
|
||||
|
||||
other_cap_endpoint = prev_cw[cut_endpoint]
|
||||
mv = ekey(source, cut_endpoint)
|
||||
return [{
|
||||
"medial_vertex": mv,
|
||||
"down_tooth": ekey(cut_endpoint, other_endpoint),
|
||||
"neighbours_a": [
|
||||
ekey(source, other_endpoint),
|
||||
ekey(cut_endpoint, other_endpoint),
|
||||
],
|
||||
"neighbours_b": [
|
||||
ekey(source, other_cap_endpoint),
|
||||
ekey(cut_endpoint, other_cap_endpoint),
|
||||
],
|
||||
}]
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Assemble one final cut graph of M(G) with a global label map.
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def _assemble_cut_graph(M, results):
|
||||
def _assemble_cut_graph(M, results, cap_cuts=None):
|
||||
"""Apply every tread's cuts to M(G).
|
||||
|
||||
Each cut duplicates an annular medial vertex, splitting its four incident
|
||||
@@ -109,6 +162,17 @@ def _assemble_cut_graph(M, results):
|
||||
# Per cut annular vertex: map each original neighbour -> which copy keeps it.
|
||||
split = {} # medial_vertex -> {neighbour_medial_vertex: copy_node}
|
||||
warnings = []
|
||||
for i, c in enumerate(cap_cuts or []):
|
||||
mv = c["medial_vertex"]
|
||||
if mv in split:
|
||||
warnings.append(f"cap cut at {mv} was already cut; skipped")
|
||||
continue
|
||||
copy_a = (mv, "A", f"cap{i}")
|
||||
copy_b = (mv, "B", f"cap{i}")
|
||||
split[mv] = {
|
||||
**{v: copy_a for v in c["neighbours_a"]},
|
||||
**{v: copy_b for v in c["neighbours_b"]},
|
||||
}
|
||||
for d in sorted(results):
|
||||
g, bij = results[d]["g"], results[d]["bij"]
|
||||
n = g.n
|
||||
@@ -158,7 +222,39 @@ def _assemble_cut_graph(M, results):
|
||||
# Driver.
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def run_experiment(n: int = 12, seed: int = 0, flips: int = 400) -> dict:
|
||||
def random_maximal_planar_min_degree(n: int, seed: int, flips: int = 400,
|
||||
min_degree: int = 0,
|
||||
attempts: int = 1000) -> tuple[nx.Graph, int]:
|
||||
"""Generate a random maximal planar graph with minimum degree at least
|
||||
``min_degree``. The returned seed is the actual sample seed used."""
|
||||
if min_degree <= 0:
|
||||
return random_maximal_planar(n, seed, flips=flips), seed
|
||||
|
||||
if min_degree >= 5:
|
||||
plantri = os.path.normpath(os.path.join(_HERE, "..", "..", "..",
|
||||
"plantri", "plantri"))
|
||||
if os.path.exists(plantri):
|
||||
data = subprocess.check_output(
|
||||
[plantri, f"-m{min_degree}", "-g", str(n)],
|
||||
stderr=subprocess.DEVNULL)
|
||||
graphs = [line for line in data.splitlines() if line]
|
||||
if graphs:
|
||||
G = nx.from_graph6_bytes(graphs[seed % len(graphs)])
|
||||
return nx.convert_node_labels_to_integers(G), seed
|
||||
|
||||
for offset in range(attempts):
|
||||
sample_seed = seed + offset
|
||||
G = random_maximal_planar(n, sample_seed, flips=flips)
|
||||
if min(dict(G.degree()).values()) >= min_degree:
|
||||
return G, sample_seed
|
||||
raise RuntimeError(
|
||||
f"no random maximal planar graph on {n} vertices with "
|
||||
f"minimum degree >= {min_degree} found in {attempts} attempts "
|
||||
f"starting at seed {seed}")
|
||||
|
||||
|
||||
def run_experiment(n: int = 12, seed: int = 0, flips: int = 400,
|
||||
min_degree: int = 5, attempts: int = 1000) -> dict:
|
||||
"""Run the full pipeline and return a structured result.
|
||||
|
||||
Result keys: ``n, seed, G, M, source, treads`` (dict depth -> (g, bij)),
|
||||
@@ -166,10 +262,11 @@ def run_experiment(n: int = 12, seed: int = 0, flips: int = 400) -> dict:
|
||||
(depth, reason)), ``cut_graph`` (networkx graph), ``labels`` (list of tooth
|
||||
records), ``warnings``.
|
||||
"""
|
||||
G = random_maximal_planar(n, seed, flips=flips)
|
||||
faces, _ = triangular_faces(G)
|
||||
G, graph_seed = random_maximal_planar_min_degree(
|
||||
n, seed, flips=flips, min_degree=min_degree, attempts=attempts)
|
||||
faces, emb = triangular_faces(G)
|
||||
M = medial_graph(G)
|
||||
source = random.Random(f"source-{seed}").choice(sorted(G.nodes()))
|
||||
source = random.Random(f"source-{graph_seed}").choice(sorted(G.nodes()))
|
||||
levels = nx.single_source_shortest_path_length(G, source)
|
||||
|
||||
treads, skipped = {}, []
|
||||
@@ -189,10 +286,14 @@ def run_experiment(n: int = 12, seed: int = 0, flips: int = 400) -> dict:
|
||||
|
||||
results = {}
|
||||
_label_treads(treads, results)
|
||||
cut_graph, labels, warnings = _assemble_cut_graph(M, results)
|
||||
cap_cuts = _cap_cut(G, emb, source, levels, results)
|
||||
cut_graph, labels, warnings = _assemble_cut_graph(M, results, cap_cuts=cap_cuts)
|
||||
return {
|
||||
"n": n, "seed": seed, "G": G, "M": M, "source": source,
|
||||
"treads": treads, "results": results, "skipped": skipped,
|
||||
"n": n, "seed": seed, "graph_seed": graph_seed,
|
||||
"min_degree": min(dict(G.degree()).values()),
|
||||
"G": G, "M": M, "source": source,
|
||||
"treads": treads, "results": results, "cap_cuts": cap_cuts,
|
||||
"skipped": skipped,
|
||||
"cut_graph": cut_graph, "labels": labels, "warnings": warnings,
|
||||
}
|
||||
|
||||
@@ -235,10 +336,16 @@ def to_json(result: dict) -> dict:
|
||||
})
|
||||
H = result["cut_graph"]
|
||||
return {
|
||||
"n": result["n"], "seed": result["seed"], "source": result["source"],
|
||||
"n": result["n"], "seed": result["seed"],
|
||||
"graph_seed": result["graph_seed"], "min_degree": result["min_degree"],
|
||||
"source": result["source"],
|
||||
"graph_edges": sorted([int(u), int(v)] for u, v in result["G"].edges()),
|
||||
"medial_vertices": result["M"].number_of_nodes(),
|
||||
"skipped": [[d, why] for d, why in result["skipped"]],
|
||||
"cap_cuts": [{
|
||||
"medial_vertex": _vname(c["medial_vertex"]),
|
||||
"down_tooth": _vname(c["down_tooth"]),
|
||||
} for c in result["cap_cuts"]],
|
||||
"treads": treads_out,
|
||||
"cut_graph": {
|
||||
"nodes": sorted(_vname(v) for v in H.nodes()),
|
||||
@@ -255,8 +362,9 @@ def to_json(result: dict) -> dict:
|
||||
def summary(result: dict) -> str:
|
||||
H, res = result["cut_graph"], result["results"]
|
||||
lines = [
|
||||
f"random maximal planar graph: n={result['n']} seed={result['seed']} "
|
||||
f"({result['G'].number_of_edges()} edges)",
|
||||
f"random maximal planar graph: n={result['n']} requested seed={result['seed']} "
|
||||
f"graph seed={result['graph_seed']} "
|
||||
f"({result['G'].number_of_edges()} edges, min degree {result['min_degree']})",
|
||||
f"medial graph M(G): {result['M'].number_of_nodes()} vertices",
|
||||
f"level source: vertex {result['source']}",
|
||||
f"recognised treads: {sorted(res)}",
|
||||
@@ -272,7 +380,7 @@ def summary(result: dict) -> str:
|
||||
lines.append(
|
||||
f"final cut graph: {H.number_of_nodes()} vertices, "
|
||||
f"{H.number_of_edges()} edges, "
|
||||
f"{sum(len(r['cuts']) for r in res.values())} cuts total")
|
||||
f"{len(result['cap_cuts']) + sum(len(r['cuts']) for r in res.values())} cuts total")
|
||||
if result["warnings"]:
|
||||
lines.append("warnings: " + "; ".join(result["warnings"]))
|
||||
return "\n".join(lines)
|
||||
@@ -285,11 +393,16 @@ def main() -> None:
|
||||
parser.add_argument("--seed", type=int, default=0)
|
||||
parser.add_argument("--flips", type=int, default=400,
|
||||
help="number of random diagonal flips when building G")
|
||||
parser.add_argument("--min-degree", type=int, default=5,
|
||||
help="reject random graphs below this minimum degree")
|
||||
parser.add_argument("--attempts", type=int, default=1000,
|
||||
help="number of consecutive seeds to try for --min-degree")
|
||||
parser.add_argument("--json", metavar="PATH",
|
||||
help="write the full result as JSON to PATH")
|
||||
args = parser.parse_args()
|
||||
|
||||
result = run_experiment(n=args.n, seed=args.seed, flips=args.flips)
|
||||
result = run_experiment(n=args.n, seed=args.seed, flips=args.flips,
|
||||
min_degree=args.min_degree, attempts=args.attempts)
|
||||
print(summary(result))
|
||||
if args.json:
|
||||
with open(args.json, "w") as fh:
|
||||
|
||||
@@ -14,16 +14,16 @@
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces A full medial tire graph (left) and its walk-depth labelling and cut (right), from Example\nonbreakingspace 2.3\hbox {}. Black vertices are the annular medial vertices of the cycle $A(T)$; blue vertices are up-tooth apexes, red vertices are down-tooth apexes, and the larger red vertex is the shared apex of the bite on annular edges $0$ and $4$. On the right, each tooth carries its walk depth, and the two red slits mark the cuts: \emph {cut\nonbreakingspace 1} duplicates $a_5$ as the root-face traversal closes, and \emph {cut\nonbreakingspace 2} duplicates $a_1$ as the bite's inner-gap face closes. After the cuts the only bounded faces are the eight teeth.}}{3}{}\protected@file@percent }
|
||||
\newlabel{fig:worked-cut}{{1}{3}}
|
||||
\newlabel{rem:chaining-candidates}{{3.1}{3}}
|
||||
\newlabel{ex:real-cut}{{3.2}{3}}
|
||||
\newlabel{ex:real-cut}{{3.2}{4}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces The recognised tread $T_2$ of the medial tire decomposition of a random maximal planar graph on $20$ vertices (Example\nonbreakingspace 3.2\hbox {}), with its walk-depth labelling and cut. Black vertices are the annular medial vertices of $A(T)$; blue vertices are up-tooth apexes and red vertices down-tooth apexes, the larger red vertex being the shared apex of the bite on annular edges $2$ and $5$. Each tooth carries its walk depth; the red slits are the two cuts.}}{4}{}\protected@file@percent }
|
||||
\newlabel{fig:real-cut}{{2}{4}}
|
||||
\bibcite{bauerfeld-medial-tire}{1}
|
||||
\newlabel{tocindent-1}{0pt}
|
||||
\newlabel{tocindent0}{12.7778pt}
|
||||
\newlabel{tocindent1}{17.77782pt}
|
||||
\newlabel{tocindent2}{0pt}
|
||||
\newlabel{tocindent3}{0pt}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces The recognised tread $T_2$ of the medial tire decomposition of a random maximal planar graph on $20$ vertices (Example\nonbreakingspace 3.2\hbox {}), with its walk-depth labelling and cut. Black vertices are the annular medial vertices of $A(T)$; blue vertices are up-tooth apexes and red vertices down-tooth apexes, the larger red vertex being the shared apex of the bite on annular edges $2$ and $5$. Each tooth carries its walk depth; the red slits are the two cuts.}}{4}{}\protected@file@percent }
|
||||
\newlabel{fig:real-cut}{{2}{4}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{4}{}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The whole medial graph $M(G)$ of the random maximal planar graph on $20$ vertices from Example\nonbreakingspace 3.2\hbox {}, with all tire cuts applied. Grey vertices are medial vertices outside any recognised tire; the highlighted tread $T_2$ (cf.\ Figure\nonbreakingspace 2\hbox {}) has black annular medial vertices, blue up-tooth and red down-tooth apexes carrying their walk depths, and the larger red vertex is the bite apex. Drawn by \texttt {experiments/draw\_medial\_tire\_cut.py} with the \texttt {--whole} option.}}{5}{}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {3}{\ignorespaces The source graph $G$ and the whole medial graph $M(G)$ of the minimum-degree-$5$ maximal planar graph on $20$ vertices generated by \texttt {plantri -m5} at seed $59$. The source vertex $5$ is highlighted in the top panel. In the bottom panel, each medial vertex is placed at the midpoint of its corresponding source edge and labelled by that edge. Black vertices come from source edges between consecutive levels; coloured vertices come from source edges within a single level of the chain. The red-highlighted vertices, walk-depth labels, and seven red slits are the computed source-cap cut and full-medial-tire labelling cuts for the recognised treads $T_1$ and $T_2$. Drawn by \texttt {experiments/draw\_medial\_tire\_cut.py} with \texttt {--whole --min-degree 5}.}}{5}{}\protected@file@percent }
|
||||
\newlabel{fig:whole-medial}{{3}{5}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{5}{}\protected@file@percent }
|
||||
\gdef \@abspage@last{5}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 15 JUN 2026 00:06
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 15 JUN 2026 01:07
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
@@ -498,37 +498,36 @@ e
|
||||
|
||||
LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
|
||||
[2] [3] (./whole_medial_seed72.tikz)
|
||||
|
||||
LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
|
||||
[4] [5] (./paper.aux) )
|
||||
[2] [3] (./whole_medial_seed59_min5.tikz) [4] [5] (./paper.aux) )
|
||||
Here is how much of TeX's memory you used:
|
||||
13729 strings out of 478268
|
||||
274095 string characters out of 5846347
|
||||
595448 words of memory out of 5000000
|
||||
31553 multiletter control sequences out of 15000+600000
|
||||
477361 words of font info for 59 fonts, out of 8000000 for 9000
|
||||
13803 strings out of 478268
|
||||
275582 string characters out of 5846347
|
||||
655790 words of memory out of 5000000
|
||||
31627 multiletter control sequences out of 15000+600000
|
||||
477661 words of font info for 60 fonts, out of 8000000 for 9000
|
||||
1302 hyphenation exceptions out of 8191
|
||||
84i,9n,89p,801b,724s 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/cmbx6.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsf
|
||||
onts/cm/cmbx7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfon
|
||||
ts/cm/cmcsc10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfon
|
||||
ts/cm/cmmi10.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/cmr6.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/
|
||||
cmr7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr
|
||||
8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10
|
||||
.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/cmti10.p
|
||||
fb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb
|
||||
></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt10.pfb>
|
||||
Output written on paper.pdf (5 pages, 198793 bytes).
|
||||
84i,15n,89p,907b,804s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</usr/local/te
|
||||
xlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/local/tex
|
||||
live/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx6.pfb></usr/local/texli
|
||||
ve/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx7.pfb></usr/local/texlive
|
||||
/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb></usr/local/texlive
|
||||
/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/
|
||||
2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/local/texlive/20
|
||||
22/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2022
|
||||
/texmf-dist/fonts/type1/public/amsfonts/cm/cmr6.pfb></usr/local/texlive/2022/te
|
||||
xmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb></usr/local/texlive/2022/texmf
|
||||
-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb></usr/local/texlive/2022/texmf-di
|
||||
st/fonts/type1/public/amsfonts/cm/cmss10.pfb></usr/local/texlive/2022/texmf-dis
|
||||
t/fonts/type1/public/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2022/texmf-dist
|
||||
/fonts/type1/public/amsfonts/cm/cmsy6.pfb></usr/local/texlive/2022/texmf-dist/f
|
||||
onts/type1/public/amsfonts/cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist/fo
|
||||
nts/type1/public/amsfonts/cm/cmti8.pfb></usr/local/texlive/2022/texmf-dist/font
|
||||
s/type1/public/amsfonts/cm/cmtt10.pfb>
|
||||
Output written on paper.pdf (5 pages, 226751 bytes).
|
||||
PDF statistics:
|
||||
93 PDF objects out of 1000 (max. 8388607)
|
||||
57 compressed objects within 1 object stream
|
||||
103 PDF objects out of 1000 (max. 8388607)
|
||||
63 compressed objects within 1 object stream
|
||||
0 named destinations out of 1000 (max. 500000)
|
||||
13 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
|
||||
Binary file not shown.
@@ -289,6 +289,13 @@ We label tread by tread, outward from the root:
|
||||
within the child as in Definition~\ref{def:walk-depth-cut}.
|
||||
\end{itemize}
|
||||
|
||||
The source cap contributes one additional cut before the recognised
|
||||
treads are assembled. If the root tread enters at an up tooth whose apex
|
||||
is the cap down tooth $xy$, we cut the cap annular vertex corresponding
|
||||
to the counter-clockwise source edge incident to $xy$. In the example of
|
||||
Figure~\ref{fig:whole-medial}, the root entry apex is the cap down tooth
|
||||
$14\!-\!4$, so the cap cut is placed at the medial vertex $14\!-\!5$.
|
||||
|
||||
\begin{remark}[Candidate down teeth for chaining]
|
||||
\label{rem:chaining-candidates}
|
||||
The down teeth eligible to fix a child's entry are exactly the
|
||||
@@ -387,28 +394,35 @@ tooth carries its walk depth; the red slits are the two cuts.}
|
||||
\label{fig:real-cut}
|
||||
\end{figure}
|
||||
|
||||
The same data sit inside the whole medial graph $M(G)$.
|
||||
Figure~\ref{fig:whole-medial} draws all of $M(G)$ for the graph of
|
||||
Example~\ref{ex:real-cut}, with the tread $T_2$ of
|
||||
Figure~\ref{fig:real-cut} highlighted in place: its annular medial cycle
|
||||
in black, its up and down teeth in blue and red carrying their walk
|
||||
depths, and the remaining medial vertices---those outside any recognised
|
||||
tire---in grey. This is the assembled cut graph emitted by the
|
||||
experiment: every recognised tread contributes its cuts, and the tire
|
||||
pieces are glued to the rest of $M(G)$ along their boundary medial
|
||||
vertices.
|
||||
Figure~\ref{fig:whole-medial} repeats the whole-medial-graph drawing on a
|
||||
random maximal planar graph on $20$ vertices with minimum degree $5$
|
||||
(plantri seed $59$, level source vertex $5$). The experiment recognises
|
||||
two full medial tire treads, $T_1$ and $T_2$, and produces seven cuts:
|
||||
one source-cap cut and six full-tread cuts. The
|
||||
top panel shows the source triangulation with its level source
|
||||
highlighted; the bottom panel draws $M(G)$ on the same straight-line
|
||||
embedding by placing each medial vertex at the midpoint of its
|
||||
corresponding source edge. Every medial vertex is labelled by that source
|
||||
edge. Black vertices correspond to source edges joining consecutive
|
||||
levels, and coloured vertices correspond to source edges within one level.
|
||||
The red-highlighted vertices, walk-depth labels, and red slits are the
|
||||
computed full-medial-tire labelling and cuts.
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\input{whole_medial_seed72.tikz}
|
||||
\caption{The whole medial graph $M(G)$ of the random maximal planar graph
|
||||
on $20$ vertices from Example~\ref{ex:real-cut}, with all tire cuts
|
||||
applied. Grey vertices are medial vertices outside any recognised tire;
|
||||
the highlighted tread $T_2$ (cf.\ Figure~\ref{fig:real-cut}) has black
|
||||
annular medial vertices, blue up-tooth and red down-tooth apexes carrying
|
||||
their walk depths, and the larger red vertex is the bite apex. Drawn by
|
||||
\texttt{experiments/draw\_medial\_tire\_cut.py} with the \texttt{--whole}
|
||||
option.}
|
||||
\input{whole_medial_seed59_min5.tikz}
|
||||
\caption{The source graph $G$ and the whole medial graph $M(G)$ of the
|
||||
minimum-degree-$5$ maximal planar graph on $20$ vertices generated by
|
||||
\texttt{plantri -m5} at seed $59$. The source vertex $5$ is highlighted
|
||||
in the top panel. In the bottom panel, each medial vertex is placed at
|
||||
the midpoint of its corresponding source edge and labelled by that edge.
|
||||
Black vertices come from source edges between consecutive levels; coloured
|
||||
vertices come from source edges within a single level of the chain. The
|
||||
red-highlighted vertices, walk-depth labels, and seven red slits are the
|
||||
computed source-cap cut and full-medial-tire labelling cuts for the
|
||||
recognised treads $T_1$ and $T_2$. Drawn by
|
||||
\texttt{experiments/draw\_medial\_tire\_cut.py} with
|
||||
\texttt{--whole --min-degree 5}.}
|
||||
\label{fig:whole-medial}
|
||||
\end{figure}
|
||||
|
||||
|
||||
@@ -0,0 +1,403 @@
|
||||
% whole medial graph: n=20 seed=59 graph_seed=59 min_degree=5 source=5 recognised treads=[1, 2] |M(G)|=54
|
||||
\begin{tabular}{c}
|
||||
\begin{tikzpicture}[scale=4.06,
|
||||
sedge/.style={black!50, line width=0.35pt},
|
||||
sv/.style={circle, draw=black!60, fill=white, inner sep=1.1pt},
|
||||
srcv/.style={circle, draw=blue!75!black, fill=blue!18, line width=0.7pt, inner sep=1.8pt}]
|
||||
\draw[sedge] (0.000,0.433)--(-0.500,-0.433);
|
||||
\draw[sedge] (0.000,0.433)--(0.500,-0.433);
|
||||
\draw[sedge] (0.000,0.433)--(0.084,-0.096);
|
||||
\draw[sedge] (0.000,0.433)--(-0.018,0.026);
|
||||
\draw[sedge] (0.000,0.433)--(-0.128,-0.048);
|
||||
\draw[sedge] (-0.500,-0.433)--(0.500,-0.433);
|
||||
\draw[sedge] (-0.500,-0.433)--(-0.128,-0.048);
|
||||
\draw[sedge] (-0.500,-0.433)--(-0.073,-0.186);
|
||||
\draw[sedge] (-0.500,-0.433)--(0.019,-0.303);
|
||||
\draw[sedge] (0.500,-0.433)--(0.084,-0.096);
|
||||
\draw[sedge] (0.500,-0.433)--(0.019,-0.303);
|
||||
\draw[sedge] (0.500,-0.433)--(0.139,-0.245);
|
||||
\draw[sedge] (0.084,-0.096)--(-0.018,0.026);
|
||||
\draw[sedge] (0.084,-0.096)--(0.139,-0.245);
|
||||
\draw[sedge] (0.084,-0.096)--(0.060,-0.177);
|
||||
\draw[sedge] (0.084,-0.096)--(0.035,-0.147);
|
||||
\draw[sedge] (0.084,-0.096)--(0.024,-0.131);
|
||||
\draw[sedge] (0.084,-0.096)--(0.015,-0.113);
|
||||
\draw[sedge] (0.084,-0.096)--(0.002,-0.076);
|
||||
\draw[sedge] (-0.018,0.026)--(-0.128,-0.048);
|
||||
\draw[sedge] (-0.018,0.026)--(0.002,-0.076);
|
||||
\draw[sedge] (-0.018,0.026)--(-0.048,-0.081);
|
||||
\draw[sedge] (-0.128,-0.048)--(-0.073,-0.186);
|
||||
\draw[sedge] (-0.128,-0.048)--(-0.048,-0.081);
|
||||
\draw[sedge] (-0.073,-0.186)--(0.019,-0.303);
|
||||
\draw[sedge] (-0.073,-0.186)--(-0.048,-0.081);
|
||||
\draw[sedge] (-0.073,-0.186)--(-0.023,-0.119);
|
||||
\draw[sedge] (-0.073,-0.186)--(-0.012,-0.141);
|
||||
\draw[sedge] (-0.073,-0.186)--(-0.003,-0.156);
|
||||
\draw[sedge] (-0.073,-0.186)--(0.010,-0.177);
|
||||
\draw[sedge] (-0.073,-0.186)--(0.031,-0.218);
|
||||
\draw[sedge] (0.019,-0.303)--(0.139,-0.245);
|
||||
\draw[sedge] (0.019,-0.303)--(0.031,-0.218);
|
||||
\draw[sedge] (0.139,-0.245)--(0.060,-0.177);
|
||||
\draw[sedge] (0.139,-0.245)--(0.031,-0.218);
|
||||
\draw[sedge] (0.060,-0.177)--(0.035,-0.147);
|
||||
\draw[sedge] (0.060,-0.177)--(0.010,-0.177);
|
||||
\draw[sedge] (0.060,-0.177)--(0.031,-0.218);
|
||||
\draw[sedge] (0.035,-0.147)--(0.024,-0.131);
|
||||
\draw[sedge] (0.035,-0.147)--(-0.003,-0.156);
|
||||
\draw[sedge] (0.035,-0.147)--(0.010,-0.177);
|
||||
\draw[sedge] (0.024,-0.131)--(0.015,-0.113);
|
||||
\draw[sedge] (0.024,-0.131)--(-0.012,-0.141);
|
||||
\draw[sedge] (0.024,-0.131)--(-0.003,-0.156);
|
||||
\draw[sedge] (0.015,-0.113)--(0.002,-0.076);
|
||||
\draw[sedge] (0.015,-0.113)--(-0.023,-0.119);
|
||||
\draw[sedge] (0.015,-0.113)--(-0.012,-0.141);
|
||||
\draw[sedge] (0.002,-0.076)--(-0.048,-0.081);
|
||||
\draw[sedge] (0.002,-0.076)--(-0.023,-0.119);
|
||||
\draw[sedge] (-0.048,-0.081)--(-0.023,-0.119);
|
||||
\draw[sedge] (-0.023,-0.119)--(-0.012,-0.141);
|
||||
\draw[sedge] (-0.012,-0.141)--(-0.003,-0.156);
|
||||
\draw[sedge] (-0.003,-0.156)--(0.010,-0.177);
|
||||
\draw[sedge] (0.010,-0.177)--(0.031,-0.218);
|
||||
\node[sv] at (0.000,0.433) {};
|
||||
\node[sv] at (-0.500,-0.433) {};
|
||||
\node[sv] at (0.500,-0.433) {};
|
||||
\node[sv] at (0.084,-0.096) {};
|
||||
\node[sv] at (-0.018,0.026) {};
|
||||
\node[srcv] at (-0.128,-0.048) {};
|
||||
\node[sv] at (-0.073,-0.186) {};
|
||||
\node[sv] at (0.019,-0.303) {};
|
||||
\node[sv] at (0.139,-0.245) {};
|
||||
\node[sv] at (0.060,-0.177) {};
|
||||
\node[sv] at (0.035,-0.147) {};
|
||||
\node[sv] at (0.024,-0.131) {};
|
||||
\node[sv] at (0.015,-0.113) {};
|
||||
\node[sv] at (0.002,-0.076) {};
|
||||
\node[sv] at (-0.048,-0.081) {};
|
||||
\node[sv] at (-0.023,-0.119) {};
|
||||
\node[sv] at (-0.012,-0.141) {};
|
||||
\node[sv] at (-0.003,-0.156) {};
|
||||
\node[sv] at (0.010,-0.177) {};
|
||||
\node[sv] at (0.031,-0.218) {};
|
||||
\node[font=\scriptsize, text=blue!70!black] at (-0.128,-0.133) {source 5};
|
||||
\end{tikzpicture}
|
||||
\\[-0.25ex]
|
||||
{\scriptsize source graph $G$}
|
||||
\\[1.0ex]
|
||||
\begin{tikzpicture}[scale=7.0,
|
||||
base/.style={black!12, line width=0.25pt},
|
||||
med/.style={black!38, line width=0.32pt},
|
||||
annv/.style={circle, draw=black!70, fill=black!18, inner sep=1.0pt},
|
||||
levone/.style={circle, draw=orange!75!black, fill=orange!20, inner sep=1.2pt},
|
||||
levtwo/.style={circle, draw=violet!70!black, fill=violet!18, inner sep=1.2pt},
|
||||
levthree/.style={circle, draw=teal!70!black, fill=teal!18, inner sep=1.2pt},
|
||||
knownv/.style={circle, draw=red!70!black, fill=red!24, inner sep=1.5pt},
|
||||
elbl/.style={font=\tiny, text=black!70, inner sep=0.2pt},
|
||||
dlbl/.style={font=\tiny\bfseries, text=black, inner sep=0.5pt},
|
||||
cut/.style={red!80!black, line width=1.0pt},
|
||||
cutlbl/.style={font=\tiny, text=red!75!black}]
|
||||
\draw[base] (0.000,0.433)--(-0.500,-0.433);
|
||||
\draw[base] (0.000,0.433)--(0.500,-0.433);
|
||||
\draw[base] (0.000,0.433)--(0.084,-0.096);
|
||||
\draw[base] (0.000,0.433)--(-0.018,0.026);
|
||||
\draw[base] (0.000,0.433)--(-0.128,-0.048);
|
||||
\draw[base] (-0.500,-0.433)--(0.500,-0.433);
|
||||
\draw[base] (-0.500,-0.433)--(-0.128,-0.048);
|
||||
\draw[base] (-0.500,-0.433)--(-0.073,-0.186);
|
||||
\draw[base] (-0.500,-0.433)--(0.019,-0.303);
|
||||
\draw[base] (0.500,-0.433)--(0.084,-0.096);
|
||||
\draw[base] (0.500,-0.433)--(0.019,-0.303);
|
||||
\draw[base] (0.500,-0.433)--(0.139,-0.245);
|
||||
\draw[base] (0.084,-0.096)--(-0.018,0.026);
|
||||
\draw[base] (0.084,-0.096)--(0.139,-0.245);
|
||||
\draw[base] (0.084,-0.096)--(0.060,-0.177);
|
||||
\draw[base] (0.084,-0.096)--(0.035,-0.147);
|
||||
\draw[base] (0.084,-0.096)--(0.024,-0.131);
|
||||
\draw[base] (0.084,-0.096)--(0.015,-0.113);
|
||||
\draw[base] (0.084,-0.096)--(0.002,-0.076);
|
||||
\draw[base] (-0.018,0.026)--(-0.128,-0.048);
|
||||
\draw[base] (-0.018,0.026)--(0.002,-0.076);
|
||||
\draw[base] (-0.018,0.026)--(-0.048,-0.081);
|
||||
\draw[base] (-0.128,-0.048)--(-0.073,-0.186);
|
||||
\draw[base] (-0.128,-0.048)--(-0.048,-0.081);
|
||||
\draw[base] (-0.073,-0.186)--(0.019,-0.303);
|
||||
\draw[base] (-0.073,-0.186)--(-0.048,-0.081);
|
||||
\draw[base] (-0.073,-0.186)--(-0.023,-0.119);
|
||||
\draw[base] (-0.073,-0.186)--(-0.012,-0.141);
|
||||
\draw[base] (-0.073,-0.186)--(-0.003,-0.156);
|
||||
\draw[base] (-0.073,-0.186)--(0.010,-0.177);
|
||||
\draw[base] (-0.073,-0.186)--(0.031,-0.218);
|
||||
\draw[base] (0.019,-0.303)--(0.139,-0.245);
|
||||
\draw[base] (0.019,-0.303)--(0.031,-0.218);
|
||||
\draw[base] (0.139,-0.245)--(0.060,-0.177);
|
||||
\draw[base] (0.139,-0.245)--(0.031,-0.218);
|
||||
\draw[base] (0.060,-0.177)--(0.035,-0.147);
|
||||
\draw[base] (0.060,-0.177)--(0.010,-0.177);
|
||||
\draw[base] (0.060,-0.177)--(0.031,-0.218);
|
||||
\draw[base] (0.035,-0.147)--(0.024,-0.131);
|
||||
\draw[base] (0.035,-0.147)--(-0.003,-0.156);
|
||||
\draw[base] (0.035,-0.147)--(0.010,-0.177);
|
||||
\draw[base] (0.024,-0.131)--(0.015,-0.113);
|
||||
\draw[base] (0.024,-0.131)--(-0.012,-0.141);
|
||||
\draw[base] (0.024,-0.131)--(-0.003,-0.156);
|
||||
\draw[base] (0.015,-0.113)--(0.002,-0.076);
|
||||
\draw[base] (0.015,-0.113)--(-0.023,-0.119);
|
||||
\draw[base] (0.015,-0.113)--(-0.012,-0.141);
|
||||
\draw[base] (0.002,-0.076)--(-0.048,-0.081);
|
||||
\draw[base] (0.002,-0.076)--(-0.023,-0.119);
|
||||
\draw[base] (-0.048,-0.081)--(-0.023,-0.119);
|
||||
\draw[base] (-0.023,-0.119)--(-0.012,-0.141);
|
||||
\draw[base] (-0.012,-0.141)--(-0.003,-0.156);
|
||||
\draw[base] (-0.003,-0.156)--(0.010,-0.177);
|
||||
\draw[base] (0.010,-0.177)--(0.031,-0.218);
|
||||
\draw[med] (-0.250,0.000)--(-0.064,0.192);
|
||||
\draw[med] (-0.250,0.000)--(0.250,0.000);
|
||||
\draw[med] (-0.250,0.000)--(0.000,-0.433);
|
||||
\draw[med] (-0.250,0.000)--(-0.314,-0.241);
|
||||
\draw[med] (0.250,0.000)--(0.042,0.169);
|
||||
\draw[med] (0.250,0.000)--(0.000,-0.433);
|
||||
\draw[med] (0.250,0.000)--(0.292,-0.264);
|
||||
\draw[med] (0.042,0.169)--(-0.009,0.230);
|
||||
\draw[med] (0.042,0.169)--(0.292,-0.264);
|
||||
\draw[med] (0.042,0.169)--(0.033,-0.035);
|
||||
\draw[med] (-0.009,0.230)--(-0.064,0.192);
|
||||
\draw[med] (-0.009,0.230)--(0.033,-0.035);
|
||||
\draw[med] (-0.009,0.230)--(-0.073,-0.011);
|
||||
\draw[med] (-0.064,0.192)--(-0.073,-0.011);
|
||||
\draw[med] (-0.064,0.192)--(-0.314,-0.241);
|
||||
\draw[med] (0.000,-0.433)--(-0.240,-0.368);
|
||||
\draw[med] (0.000,-0.433)--(0.260,-0.368);
|
||||
\draw[med] (-0.314,-0.241)--(-0.286,-0.310);
|
||||
\draw[med] (-0.314,-0.241)--(-0.100,-0.117);
|
||||
\draw[med] (-0.286,-0.310)--(-0.240,-0.368);
|
||||
\draw[med] (-0.286,-0.310)--(-0.100,-0.117);
|
||||
\draw[med] (-0.286,-0.310)--(-0.027,-0.245);
|
||||
\draw[med] (-0.240,-0.368)--(-0.027,-0.245);
|
||||
\draw[med] (-0.240,-0.368)--(0.260,-0.368);
|
||||
\draw[med] (0.292,-0.264)--(0.319,-0.339);
|
||||
\draw[med] (0.292,-0.264)--(0.111,-0.171);
|
||||
\draw[med] (0.260,-0.368)--(0.319,-0.339);
|
||||
\draw[med] (0.260,-0.368)--(0.079,-0.274);
|
||||
\draw[med] (0.319,-0.339)--(0.079,-0.274);
|
||||
\draw[med] (0.319,-0.339)--(0.111,-0.171);
|
||||
\draw[med] (0.033,-0.035)--(0.043,-0.086);
|
||||
\draw[med] (0.033,-0.035)--(-0.008,-0.025);
|
||||
\draw[med] (0.111,-0.171)--(0.072,-0.136);
|
||||
\draw[med] (0.111,-0.171)--(0.099,-0.211);
|
||||
\draw[med] (0.072,-0.136)--(0.059,-0.122);
|
||||
\draw[med] (0.072,-0.136)--(0.099,-0.211);
|
||||
\draw[med] (0.072,-0.136)--(0.047,-0.162);
|
||||
\draw[med] (0.059,-0.122)--(0.054,-0.113);
|
||||
\draw[med] (0.059,-0.122)--(0.047,-0.162);
|
||||
\draw[med] (0.059,-0.122)--(0.029,-0.139);
|
||||
\draw[med] (0.054,-0.113)--(0.049,-0.104);
|
||||
\draw[med] (0.054,-0.113)--(0.029,-0.139);
|
||||
\draw[med] (0.054,-0.113)--(0.019,-0.122);
|
||||
\draw[med] (0.049,-0.104)--(0.043,-0.086);
|
||||
\draw[med] (0.049,-0.104)--(0.019,-0.122);
|
||||
\draw[med] (0.049,-0.104)--(0.008,-0.095);
|
||||
\draw[med] (0.043,-0.086)--(0.008,-0.095);
|
||||
\draw[med] (0.043,-0.086)--(-0.008,-0.025);
|
||||
\draw[med] (-0.073,-0.011)--(-0.033,-0.027);
|
||||
\draw[med] (-0.073,-0.011)--(-0.088,-0.064);
|
||||
\draw[med] (-0.008,-0.025)--(-0.033,-0.027);
|
||||
\draw[med] (-0.008,-0.025)--(-0.023,-0.079);
|
||||
\draw[med] (-0.033,-0.027)--(-0.023,-0.079);
|
||||
\draw[med] (-0.033,-0.027)--(-0.088,-0.064);
|
||||
\draw[med] (-0.100,-0.117)--(-0.088,-0.064);
|
||||
\draw[med] (-0.100,-0.117)--(-0.060,-0.134);
|
||||
\draw[med] (-0.088,-0.064)--(-0.060,-0.134);
|
||||
\draw[med] (-0.027,-0.245)--(-0.021,-0.202);
|
||||
\draw[med] (-0.027,-0.245)--(0.025,-0.260);
|
||||
\draw[med] (-0.060,-0.134)--(-0.048,-0.153);
|
||||
\draw[med] (-0.060,-0.134)--(-0.035,-0.100);
|
||||
\draw[med] (-0.048,-0.153)--(-0.042,-0.164);
|
||||
\draw[med] (-0.048,-0.153)--(-0.035,-0.100);
|
||||
\draw[med] (-0.048,-0.153)--(-0.018,-0.130);
|
||||
\draw[med] (-0.042,-0.164)--(-0.038,-0.171);
|
||||
\draw[med] (-0.042,-0.164)--(-0.018,-0.130);
|
||||
\draw[med] (-0.042,-0.164)--(-0.008,-0.149);
|
||||
\draw[med] (-0.038,-0.171)--(-0.031,-0.182);
|
||||
\draw[med] (-0.038,-0.171)--(-0.008,-0.149);
|
||||
\draw[med] (-0.038,-0.171)--(0.003,-0.167);
|
||||
\draw[med] (-0.031,-0.182)--(-0.021,-0.202);
|
||||
\draw[med] (-0.031,-0.182)--(0.003,-0.167);
|
||||
\draw[med] (-0.031,-0.182)--(0.021,-0.197);
|
||||
\draw[med] (-0.021,-0.202)--(0.021,-0.197);
|
||||
\draw[med] (-0.021,-0.202)--(0.025,-0.260);
|
||||
\draw[med] (0.079,-0.274)--(0.025,-0.260);
|
||||
\draw[med] (0.079,-0.274)--(0.085,-0.231);
|
||||
\draw[med] (0.025,-0.260)--(0.085,-0.231);
|
||||
\draw[med] (0.099,-0.211)--(0.085,-0.231);
|
||||
\draw[med] (0.099,-0.211)--(0.045,-0.197);
|
||||
\draw[med] (0.085,-0.231)--(0.045,-0.197);
|
||||
\draw[med] (0.047,-0.162)--(0.035,-0.177);
|
||||
\draw[med] (0.047,-0.162)--(0.022,-0.162);
|
||||
\draw[med] (0.035,-0.177)--(0.045,-0.197);
|
||||
\draw[med] (0.035,-0.177)--(0.021,-0.197);
|
||||
\draw[med] (0.035,-0.177)--(0.022,-0.162);
|
||||
\draw[med] (0.045,-0.197)--(0.021,-0.197);
|
||||
\draw[med] (0.029,-0.139)--(0.016,-0.152);
|
||||
\draw[med] (0.029,-0.139)--(0.010,-0.144);
|
||||
\draw[med] (0.016,-0.152)--(0.022,-0.162);
|
||||
\draw[med] (0.016,-0.152)--(0.003,-0.167);
|
||||
\draw[med] (0.016,-0.152)--(0.010,-0.144);
|
||||
\draw[med] (0.022,-0.162)--(0.003,-0.167);
|
||||
\draw[med] (0.019,-0.122)--(0.006,-0.136);
|
||||
\draw[med] (0.019,-0.122)--(0.001,-0.127);
|
||||
\draw[med] (0.006,-0.136)--(0.010,-0.144);
|
||||
\draw[med] (0.006,-0.136)--(-0.008,-0.149);
|
||||
\draw[med] (0.006,-0.136)--(0.001,-0.127);
|
||||
\draw[med] (0.010,-0.144)--(-0.008,-0.149);
|
||||
\draw[med] (0.008,-0.095)--(-0.004,-0.116);
|
||||
\draw[med] (0.008,-0.095)--(-0.011,-0.098);
|
||||
\draw[med] (-0.004,-0.116)--(0.001,-0.127);
|
||||
\draw[med] (-0.004,-0.116)--(-0.018,-0.130);
|
||||
\draw[med] (-0.004,-0.116)--(-0.011,-0.098);
|
||||
\draw[med] (0.001,-0.127)--(-0.018,-0.130);
|
||||
\draw[med] (-0.023,-0.079)--(-0.011,-0.098);
|
||||
\draw[med] (-0.023,-0.079)--(-0.035,-0.100);
|
||||
\draw[med] (-0.011,-0.098)--(-0.035,-0.100);
|
||||
\node[knownv] at (-0.250,0.000) {};
|
||||
\node[annv] at (0.250,0.000) {};
|
||||
\node[annv] at (0.042,0.169) {};
|
||||
\node[knownv] at (-0.009,0.230) {};
|
||||
\node[annv] at (-0.064,0.192) {};
|
||||
\node[annv] at (0.000,-0.433) {};
|
||||
\node[annv] at (-0.314,-0.241) {};
|
||||
\node[knownv] at (-0.286,-0.310) {};
|
||||
\node[annv] at (-0.240,-0.368) {};
|
||||
\node[knownv] at (0.292,-0.264) {};
|
||||
\node[knownv] at (0.260,-0.368) {};
|
||||
\node[annv] at (0.319,-0.339) {};
|
||||
\node[annv] at (0.033,-0.035) {};
|
||||
\node[annv] at (0.111,-0.171) {};
|
||||
\node[annv] at (0.072,-0.136) {};
|
||||
\node[annv] at (-0.073,-0.011) {};
|
||||
\node[annv] at (-0.100,-0.117) {};
|
||||
\node[annv] at (-0.027,-0.245) {};
|
||||
\node[annv] at (0.079,-0.274) {};
|
||||
\node[knownv] at (0.099,-0.211) {};
|
||||
\node[annv] at (0.059,-0.122) {};
|
||||
\node[knownv] at (0.047,-0.162) {};
|
||||
\node[knownv] at (0.029,-0.139) {};
|
||||
\node[annv] at (0.016,-0.152) {};
|
||||
\node[annv] at (0.022,-0.162) {};
|
||||
\node[annv] at (0.054,-0.113) {};
|
||||
\node[knownv] at (0.019,-0.122) {};
|
||||
\node[annv] at (0.006,-0.136) {};
|
||||
\node[annv] at (0.010,-0.144) {};
|
||||
\node[annv] at (0.049,-0.104) {};
|
||||
\node[annv] at (0.008,-0.095) {};
|
||||
\node[annv] at (-0.004,-0.116) {};
|
||||
\node[annv] at (0.001,-0.127) {};
|
||||
\node[knownv] at (0.043,-0.086) {};
|
||||
\node[annv] at (-0.008,-0.025) {};
|
||||
\node[annv] at (-0.023,-0.079) {};
|
||||
\node[knownv] at (-0.011,-0.098) {};
|
||||
\node[knownv] at (-0.033,-0.027) {};
|
||||
\node[annv] at (-0.088,-0.064) {};
|
||||
\node[knownv] at (-0.060,-0.134) {};
|
||||
\node[annv] at (-0.035,-0.100) {};
|
||||
\node[annv] at (-0.048,-0.153) {};
|
||||
\node[knownv] at (-0.018,-0.130) {};
|
||||
\node[annv] at (-0.042,-0.164) {};
|
||||
\node[knownv] at (-0.008,-0.149) {};
|
||||
\node[annv] at (-0.038,-0.171) {};
|
||||
\node[knownv] at (0.003,-0.167) {};
|
||||
\node[annv] at (-0.031,-0.182) {};
|
||||
\node[annv] at (0.035,-0.177) {};
|
||||
\node[knownv] at (0.021,-0.197) {};
|
||||
\node[annv] at (-0.021,-0.202) {};
|
||||
\node[knownv] at (0.025,-0.260) {};
|
||||
\node[annv] at (0.085,-0.231) {};
|
||||
\node[annv] at (0.045,-0.197) {};
|
||||
\node[elbl] at (-0.250,0.000) [yshift=-4.8pt] {$0\!{-}\!1$};
|
||||
\node[elbl] at (0.250,0.000) [yshift=-4.8pt] {$0\!{-}\!2$};
|
||||
\node[elbl] at (0.042,0.169) [yshift=-4.8pt] {$0\!{-}\!3$};
|
||||
\node[elbl] at (-0.009,0.230) [yshift=-4.8pt] {$0\!{-}\!4$};
|
||||
\node[elbl] at (-0.064,0.192) [yshift=-4.8pt] {$0\!{-}\!5$};
|
||||
\node[elbl] at (0.000,-0.433) [yshift=-4.8pt] {$1\!{-}\!2$};
|
||||
\node[elbl] at (-0.314,-0.241) [yshift=-4.8pt] {$1\!{-}\!5$};
|
||||
\node[elbl] at (-0.286,-0.310) [yshift=-4.8pt] {$1\!{-}\!6$};
|
||||
\node[elbl] at (-0.240,-0.368) [yshift=-4.8pt] {$1\!{-}\!7$};
|
||||
\node[elbl] at (0.292,-0.264) [yshift=-4.8pt] {$2\!{-}\!3$};
|
||||
\node[elbl] at (0.260,-0.368) [yshift=-4.8pt] {$2\!{-}\!7$};
|
||||
\node[elbl] at (0.319,-0.339) [yshift=-4.8pt] {$2\!{-}\!8$};
|
||||
\node[elbl] at (0.033,-0.035) [yshift=-4.8pt] {$3\!{-}\!4$};
|
||||
\node[elbl] at (0.111,-0.171) [yshift=-4.8pt] {$3\!{-}\!8$};
|
||||
\node[elbl] at (0.072,-0.136) [yshift=-4.8pt] {$3\!{-}\!9$};
|
||||
\node[elbl] at (-0.073,-0.011) [yshift=-4.8pt] {$4\!{-}\!5$};
|
||||
\node[elbl] at (-0.100,-0.117) [yshift=-4.8pt] {$5\!{-}\!6$};
|
||||
\node[elbl] at (-0.027,-0.245) [yshift=-4.8pt] {$6\!{-}\!7$};
|
||||
\node[elbl] at (0.079,-0.274) [yshift=-4.8pt] {$7\!{-}\!8$};
|
||||
\node[elbl] at (0.099,-0.211) [yshift=-4.8pt] {$8\!{-}\!9$};
|
||||
\node[elbl] at (0.059,-0.122) [yshift=-4.8pt] {$10\!{-}\!3$};
|
||||
\node[elbl] at (0.047,-0.162) [yshift=-4.8pt] {$10\!{-}\!9$};
|
||||
\node[elbl] at (0.029,-0.139) [yshift=-4.8pt] {$10\!{-}\!11$};
|
||||
\node[elbl] at (0.016,-0.152) [yshift=-4.8pt] {$10\!{-}\!17$};
|
||||
\node[elbl] at (0.022,-0.162) [yshift=-4.8pt] {$10\!{-}\!18$};
|
||||
\node[elbl] at (0.054,-0.113) [yshift=-4.8pt] {$11\!{-}\!3$};
|
||||
\node[elbl] at (0.019,-0.122) [yshift=-4.8pt] {$11\!{-}\!12$};
|
||||
\node[elbl] at (0.006,-0.136) [yshift=-4.8pt] {$11\!{-}\!16$};
|
||||
\node[elbl] at (0.010,-0.144) [yshift=-4.8pt] {$11\!{-}\!17$};
|
||||
\node[elbl] at (0.049,-0.104) [yshift=-4.8pt] {$12\!{-}\!3$};
|
||||
\node[elbl] at (0.008,-0.095) [yshift=-4.8pt] {$12\!{-}\!13$};
|
||||
\node[elbl] at (-0.004,-0.116) [yshift=-4.8pt] {$12\!{-}\!15$};
|
||||
\node[elbl] at (0.001,-0.127) [yshift=-4.8pt] {$12\!{-}\!16$};
|
||||
\node[elbl] at (0.043,-0.086) [yshift=-4.8pt] {$13\!{-}\!3$};
|
||||
\node[elbl] at (-0.008,-0.025) [yshift=-4.8pt] {$13\!{-}\!4$};
|
||||
\node[elbl] at (-0.023,-0.079) [yshift=-4.8pt] {$13\!{-}\!14$};
|
||||
\node[elbl] at (-0.011,-0.098) [yshift=-4.8pt] {$13\!{-}\!15$};
|
||||
\node[elbl] at (-0.033,-0.027) [yshift=-4.8pt] {$14\!{-}\!4$};
|
||||
\node[elbl] at (-0.088,-0.064) [yshift=-4.8pt] {$14\!{-}\!5$};
|
||||
\node[elbl] at (-0.060,-0.134) [yshift=-4.8pt] {$14\!{-}\!6$};
|
||||
\node[elbl] at (-0.035,-0.100) [yshift=-4.8pt] {$14\!{-}\!15$};
|
||||
\node[elbl] at (-0.048,-0.153) [yshift=-4.8pt] {$15\!{-}\!6$};
|
||||
\node[elbl] at (-0.018,-0.130) [yshift=-4.8pt] {$15\!{-}\!16$};
|
||||
\node[elbl] at (-0.042,-0.164) [yshift=-4.8pt] {$16\!{-}\!6$};
|
||||
\node[elbl] at (-0.008,-0.149) [yshift=-4.8pt] {$16\!{-}\!17$};
|
||||
\node[elbl] at (-0.038,-0.171) [yshift=-4.8pt] {$17\!{-}\!6$};
|
||||
\node[elbl] at (0.003,-0.167) [yshift=-4.8pt] {$17\!{-}\!18$};
|
||||
\node[elbl] at (-0.031,-0.182) [yshift=-4.8pt] {$18\!{-}\!6$};
|
||||
\node[elbl] at (0.035,-0.177) [yshift=-4.8pt] {$18\!{-}\!9$};
|
||||
\node[elbl] at (0.021,-0.197) [yshift=-4.8pt] {$18\!{-}\!19$};
|
||||
\node[elbl] at (-0.021,-0.202) [yshift=-4.8pt] {$19\!{-}\!6$};
|
||||
\node[elbl] at (0.025,-0.260) [yshift=-4.8pt] {$19\!{-}\!7$};
|
||||
\node[elbl] at (0.085,-0.231) [yshift=-4.8pt] {$19\!{-}\!8$};
|
||||
\node[elbl] at (0.045,-0.197) [yshift=-4.8pt] {$19\!{-}\!9$};
|
||||
\node[dlbl] at (-0.250,0.000) [yshift=5.0pt] {4};
|
||||
\node[dlbl] at (-0.009,0.230) [yshift=5.0pt] {2};
|
||||
\node[dlbl] at (-0.286,-0.310) [yshift=5.0pt] {6};
|
||||
\node[dlbl] at (0.292,-0.264) [yshift=5.0pt] {3,18};
|
||||
\node[dlbl] at (0.260,-0.368) [yshift=5.0pt] {5,17};
|
||||
\node[dlbl] at (0.099,-0.211) [yshift=5.0pt] {13,14};
|
||||
\node[dlbl] at (0.047,-0.162) [yshift=5.0pt] {11,12};
|
||||
\node[dlbl] at (0.029,-0.139) [yshift=5.0pt] {7,8};
|
||||
\node[dlbl] at (0.019,-0.122) [yshift=5.0pt] {5,6};
|
||||
\node[dlbl] at (0.043,-0.086) [yshift=5.0pt] {1,2};
|
||||
\node[dlbl] at (-0.011,-0.098) [yshift=5.0pt] {3,13};
|
||||
\node[dlbl] at (-0.033,-0.027) [yshift=5.0pt] {0};
|
||||
\node[dlbl] at (-0.060,-0.134) [yshift=5.0pt] {12};
|
||||
\node[dlbl] at (-0.018,-0.130) [yshift=5.0pt] {4,11};
|
||||
\node[dlbl] at (-0.008,-0.149) [yshift=5.0pt] {9,10};
|
||||
\node[dlbl] at (0.003,-0.167) [yshift=5.0pt] {9,10};
|
||||
\node[dlbl] at (0.021,-0.197) [yshift=5.0pt] {8,15};
|
||||
\node[dlbl] at (0.025,-0.260) [yshift=5.0pt] {7,16};
|
||||
\draw[cut] (-0.075,-0.032)--(-0.101,-0.097);
|
||||
\node[cutlbl] at (-0.120,-0.142) {cut 1};
|
||||
\draw[cut] (-0.026,-0.044)--(-0.020,-0.114);
|
||||
\node[cutlbl] at (-0.016,-0.162) {cut 2};
|
||||
\draw[cut] (0.058,-0.138)--(0.041,-0.070);
|
||||
\node[cutlbl] at (0.030,-0.023) {cut 3};
|
||||
\draw[cut] (-0.004,-0.102)--(0.016,-0.169);
|
||||
\node[cutlbl] at (0.029,-0.217) {cut 4};
|
||||
\draw[cut] (0.085,-0.146)--(0.034,-0.097);
|
||||
\node[cutlbl] at (-0.001,-0.063) {cut 5};
|
||||
\draw[cut] (0.035,-0.212)--(0.035,-0.142);
|
||||
\node[cutlbl] at (0.034,-0.093) {cut 6};
|
||||
\draw[cut] (0.079,-0.183)--(0.144,-0.158);
|
||||
\node[cutlbl] at (0.190,-0.142) {cut 7};
|
||||
\end{tikzpicture}
|
||||
\\[-0.25ex]
|
||||
{\scriptsize medial graph $M(G)$ at edge midpoints}
|
||||
\end{tabular}
|
||||
@@ -1,181 +1,382 @@
|
||||
\begin{tikzpicture}[scale=9.0,
|
||||
med/.style={black!30, line width=0.3pt},
|
||||
grey/.style={circle, draw=black!45, fill=black!8, inner sep=0.9pt},
|
||||
ann/.style={circle, fill=black, inner sep=1.0pt},
|
||||
cutv/.style={circle, draw=red!75!black, fill=red!12, inner sep=1.0pt},
|
||||
upv/.style={circle, draw=blue!70!black, fill=blue!15, inner sep=1.3pt},
|
||||
downv/.style={circle, draw=red!70!black, fill=red!15, inner sep=1.3pt},
|
||||
bitev/.style={circle, draw=red!70!black, fill=red!35, inner sep=1.6pt},
|
||||
dlbl/.style={font=\tiny\bfseries, text=black, inner sep=0.5pt}]
|
||||
\draw[med] (0.137,0.152)--(0.228,0.102);
|
||||
\draw[med] (0.137,0.152)--(0.080,0.066);
|
||||
\draw[med] (0.137,0.152)--(0.029,0.177);
|
||||
\draw[med] (0.137,0.152)--(0.242,0.193);
|
||||
\draw[med] (0.080,0.066)--(0.135,-0.006);
|
||||
\draw[med] (0.080,0.066)--(0.029,0.177);
|
||||
\draw[med] (0.080,0.066)--(0.115,-0.072);
|
||||
\draw[med] (0.214,0.011)--(0.228,0.102);
|
||||
\draw[med] (0.214,0.011)--(0.135,-0.006);
|
||||
\draw[med] (0.214,0.011)--(0.068,-0.062);
|
||||
\draw[med] (0.214,0.011)--(0.294,0.130);
|
||||
\draw[med] (0.135,-0.006)--(0.115,-0.072);
|
||||
\draw[med] (0.135,-0.006)--(0.068,-0.062);
|
||||
\draw[med] (0.228,0.102)--(0.294,0.130);
|
||||
\draw[med] (0.228,0.102)--(0.242,0.193);
|
||||
\draw[med] (0.029,0.177)--(0.004,0.286);
|
||||
\draw[med] (0.029,0.177)--(-0.082,0.223);
|
||||
\draw[med] (0.286,0.270)--(0.291,0.380);
|
||||
\draw[med] (0.286,0.270)--(0.242,0.193);
|
||||
\draw[med] (0.286,0.270)--(0.294,0.130);
|
||||
\draw[med] (0.286,0.270)--(0.232,0.388);
|
||||
\draw[med] (0.004,0.286)--(0.064,0.386);
|
||||
\draw[med] (0.004,0.286)--(-0.031,0.393);
|
||||
\draw[med] (0.004,0.286)--(-0.082,0.223);
|
||||
\draw[med] (0.064,0.386)--(0.167,0.434);
|
||||
\draw[med] (0.064,0.386)--(0.072,0.500);
|
||||
\draw[med] (0.064,0.386)--(-0.031,0.393);
|
||||
\draw[med] (0.167,0.434)--(0.291,0.380);
|
||||
\draw[med] (0.167,0.434)--(0.243,0.486);
|
||||
\draw[med] (0.167,0.434)--(0.072,0.500);
|
||||
\draw[med] (0.242,0.193)--(0.294,0.130);
|
||||
\draw[med] (0.291,0.380)--(0.232,0.388);
|
||||
\draw[med] (0.291,0.380)--(0.243,0.486);
|
||||
\draw[med] (-0.274,0.101)--(-0.238,0.008);
|
||||
\draw[med] (-0.274,0.101)--(-0.196,0.185);
|
||||
\draw[med] (-0.274,0.101)--(-0.317,-0.021);
|
||||
\draw[med] (-0.274,0.101)--(-0.285,0.218);
|
||||
\draw[med] (0.115,-0.072)--(0.007,-0.115);
|
||||
\draw[med] (0.115,-0.072)--(0.126,-0.186);
|
||||
\draw[med] (-0.082,0.223)--(-0.196,0.185);
|
||||
\draw[med] (-0.082,0.223)--(-0.183,0.280);
|
||||
\draw[med] (-0.141,-0.061)--(0.007,-0.115);
|
||||
\draw[med] (-0.141,-0.061)--(-0.238,0.008);
|
||||
\draw[med] (-0.141,-0.061)--(-0.265,-0.085);
|
||||
\draw[med] (-0.141,-0.061)--(-0.096,-0.135);
|
||||
\draw[med] (0.007,-0.115)--(-0.096,-0.135);
|
||||
\draw[med] (0.007,-0.115)--(0.126,-0.186);
|
||||
\draw[med] (-0.196,0.185)--(-0.183,0.280);
|
||||
\draw[med] (-0.196,0.185)--(-0.285,0.218);
|
||||
\draw[med] (-0.238,0.008)--(-0.317,-0.021);
|
||||
\draw[med] (-0.238,0.008)--(-0.265,-0.085);
|
||||
\draw[med] (0.068,-0.062)--(-0.057,-0.111);
|
||||
\draw[med] (0.068,-0.062)--(0.001,-0.185);
|
||||
\draw[med] (-0.125,0.434)--(-0.011,0.486);
|
||||
\draw[med] (-0.125,0.434)--(-0.242,0.353);
|
||||
\draw[med] (-0.125,0.434)--(-0.031,0.393);
|
||||
\draw[med] (-0.125,0.434)--(-0.212,0.403);
|
||||
\draw[med] (-0.282,-0.159)--(-0.317,-0.021);
|
||||
\draw[med] (-0.282,-0.159)--(-0.187,-0.179);
|
||||
\draw[med] (-0.282,-0.159)--(-0.220,-0.274);
|
||||
\draw[med] (-0.282,-0.159)--(-0.265,-0.085);
|
||||
\draw[med] (-0.011,0.486)--(0.138,0.497);
|
||||
\draw[med] (-0.011,0.486)--(-0.031,0.393);
|
||||
\draw[med] (-0.011,0.486)--(0.072,0.500);
|
||||
\draw[med] (-0.285,0.218)--(-0.242,0.353);
|
||||
\draw[med] (-0.285,0.218)--(-0.295,0.311);
|
||||
\draw[med] (-0.317,-0.021)--(-0.265,-0.085);
|
||||
\draw[med] (0.138,0.497)--(0.232,0.388);
|
||||
\draw[med] (0.138,0.497)--(0.072,0.500);
|
||||
\draw[med] (0.138,0.497)--(0.243,0.486);
|
||||
\draw[med] (-0.242,0.353)--(-0.295,0.311);
|
||||
\draw[med] (-0.242,0.353)--(-0.212,0.403);
|
||||
\draw[med] (-0.187,-0.179)--(-0.057,-0.111);
|
||||
\draw[med] (-0.187,-0.179)--(-0.104,-0.210);
|
||||
\draw[med] (-0.187,-0.179)--(-0.220,-0.274);
|
||||
\draw[med] (-0.057,-0.111)--(0.001,-0.185);
|
||||
\draw[med] (-0.057,-0.111)--(-0.104,-0.210);
|
||||
\draw[med] (0.232,0.388)--(0.243,0.486);
|
||||
\draw[med] (-0.137,-0.372)--(-0.104,-0.282);
|
||||
\draw[med] (-0.137,-0.372)--(-0.134,-0.475);
|
||||
\draw[med] (-0.137,-0.372)--(-0.220,-0.274);
|
||||
\draw[med] (-0.137,-0.372)--(-0.035,-0.453);
|
||||
\draw[med] (0.126,-0.186)--(0.212,-0.281);
|
||||
\draw[med] (0.126,-0.186)--(0.119,-0.298);
|
||||
\draw[med] (0.212,-0.281)--(0.280,-0.380);
|
||||
\draw[med] (0.212,-0.281)--(0.119,-0.298);
|
||||
\draw[med] (0.212,-0.281)--(0.193,-0.407);
|
||||
\draw[med] (-0.104,-0.282)--(0.001,-0.185);
|
||||
\draw[med] (-0.104,-0.282)--(-0.220,-0.274);
|
||||
\draw[med] (-0.104,-0.282)--(-0.104,-0.210);
|
||||
\draw[med] (0.280,-0.380)--(0.317,-0.480);
|
||||
\draw[med] (0.280,-0.380)--(0.193,-0.407);
|
||||
\draw[med] (0.280,-0.380)--(0.212,-0.500);
|
||||
\draw[med] (0.001,-0.185)--(-0.104,-0.210);
|
||||
\draw[med] (-0.183,0.280)--(-0.212,0.403);
|
||||
\draw[med] (-0.183,0.280)--(-0.295,0.311);
|
||||
\draw[med] (-0.212,0.403)--(-0.295,0.311);
|
||||
\draw[med] (0.051,-0.411)--(0.133,-0.397);
|
||||
\draw[med] (0.051,-0.411)--(-0.035,-0.453);
|
||||
\draw[med] (0.051,-0.411)--(0.090,-0.495);
|
||||
\draw[med] (0.051,-0.411)--(0.119,-0.298);
|
||||
\draw[med] (-0.035,-0.453)--(-0.134,-0.475);
|
||||
\draw[med] (-0.035,-0.453)--(0.090,-0.495);
|
||||
\draw[med] (0.119,-0.298)--(0.133,-0.397);
|
||||
\draw[med] (0.090,-0.495)--(0.193,-0.407);
|
||||
\draw[med] (0.090,-0.495)--(0.212,-0.500);
|
||||
\draw[med] (0.193,-0.407)--(0.212,-0.500);
|
||||
\draw[med] (0.212,-0.500)--(0.317,-0.480);
|
||||
\node[grey] at (0.137,0.152) {};
|
||||
\node[grey] at (0.080,0.066) {};
|
||||
\node[grey] at (0.214,0.011) {};
|
||||
\node[grey] at (0.135,-0.006) {};
|
||||
\node[grey] at (0.228,0.102) {};
|
||||
\node[grey] at (0.029,0.177) {};
|
||||
\node[grey] at (0.286,0.270) {};
|
||||
\node[grey] at (0.004,0.286) {};
|
||||
\node[grey] at (0.064,0.386) {};
|
||||
\node[grey] at (0.167,0.434) {};
|
||||
\node[grey] at (0.242,0.193) {};
|
||||
\node[grey] at (0.291,0.380) {};
|
||||
\node[grey] at (-0.274,0.101) {};
|
||||
\node[upv] at (0.115,-0.072) {};
|
||||
\node[grey] at (-0.082,0.223) {};
|
||||
\node[upv] at (-0.141,-0.061) {};
|
||||
\node[ann] at (0.007,-0.115) {};
|
||||
\node[grey] at (-0.196,0.185) {};
|
||||
\node[grey] at (-0.238,0.008) {};
|
||||
\node[grey] at (0.068,-0.062) {};
|
||||
\node[grey] at (-0.125,0.434) {};
|
||||
\node[grey] at (-0.282,-0.159) {};
|
||||
\node[grey] at (-0.011,0.486) {};
|
||||
\node[grey] at (-0.285,0.218) {};
|
||||
\node[grey] at (-0.317,-0.021) {};
|
||||
\node[grey] at (0.138,0.497) {};
|
||||
\node[grey] at (-0.242,0.353) {};
|
||||
\node[grey] at (-0.187,-0.179) {};
|
||||
\node[grey] at (0.294,0.130) {};
|
||||
\node[grey] at (-0.057,-0.111) {};
|
||||
\node[grey] at (0.232,0.388) {};
|
||||
\node[upv] at (-0.137,-0.372) {};
|
||||
\node[ann] at (0.126,-0.186) {};
|
||||
\node[ann] at (0.212,-0.281) {};
|
||||
\node[grey] at (-0.104,-0.282) {};
|
||||
\node[ann] at (0.280,-0.380) {};
|
||||
\node[grey] at (0.001,-0.185) {};
|
||||
\node[grey] at (-0.031,0.393) {};
|
||||
\node[grey] at (-0.183,0.280) {};
|
||||
\node[grey] at (-0.212,0.403) {};
|
||||
\node[ann] at (0.051,-0.411) {};
|
||||
\node[grey] at (-0.265,-0.085) {};
|
||||
\node[ann] at (-0.035,-0.453) {};
|
||||
\node[grey] at (-0.220,-0.274) {};
|
||||
\node[bitev] at (0.119,-0.298) {};
|
||||
\node[downv] at (0.090,-0.495) {};
|
||||
\node[downv] at (0.193,-0.407) {};
|
||||
\node[grey] at (0.072,0.500) {};
|
||||
\node[grey] at (-0.295,0.311) {};
|
||||
\node[grey] at (0.243,0.486) {};
|
||||
\node[downv] at (0.212,-0.500) {};
|
||||
\node[grey] at (-0.104,-0.210) {};
|
||||
\node[cutv] at (-0.134,-0.475) {};
|
||||
\node[cutv] at (0.317,-0.480) {};
|
||||
\node[cutv] at (-0.096,-0.135) {};
|
||||
\node[cutv] at (0.133,-0.397) {};
|
||||
\node[dlbl] at (0.115,-0.072) [yshift=4.5pt] {6};
|
||||
\node[dlbl] at (-0.141,-0.061) [yshift=4.5pt] {7};
|
||||
\node[dlbl] at (-0.137,-0.372) [yshift=4.5pt] {0};
|
||||
\node[dlbl] at (0.119,-0.298) [yshift=4.5pt] {3};
|
||||
\node[dlbl] at (0.090,-0.495) [yshift=4.5pt] {1};
|
||||
\node[dlbl] at (0.193,-0.407) [yshift=4.5pt] {4};
|
||||
\node[dlbl] at (0.212,-0.500) [yshift=4.5pt] {5};
|
||||
% whole medial graph: n=20 seed=72 source=9 recognised treads=[2] |M(G)|=54
|
||||
\begin{tabular}{c}
|
||||
\begin{tikzpicture}[scale=4.06,
|
||||
sedge/.style={black!50, line width=0.35pt},
|
||||
sv/.style={circle, draw=black!60, fill=white, inner sep=1.1pt},
|
||||
srcv/.style={circle, draw=blue!75!black, fill=blue!18, line width=0.7pt, inner sep=1.8pt}]
|
||||
\draw[sedge] (0.000,0.433)--(-0.500,-0.433);
|
||||
\draw[sedge] (0.000,0.433)--(0.500,-0.433);
|
||||
\draw[sedge] (0.000,0.433)--(0.027,-0.257);
|
||||
\draw[sedge] (0.000,0.433)--(0.199,-0.203);
|
||||
\draw[sedge] (0.000,0.433)--(-0.158,-0.086);
|
||||
\draw[sedge] (-0.500,-0.433)--(0.500,-0.433);
|
||||
\draw[sedge] (-0.500,-0.433)--(0.027,-0.257);
|
||||
\draw[sedge] (-0.500,-0.433)--(0.012,-0.355);
|
||||
\draw[sedge] (-0.500,-0.433)--(-0.170,-0.348);
|
||||
\draw[sedge] (-0.500,-0.433)--(-0.218,-0.346);
|
||||
\draw[sedge] (-0.500,-0.433)--(-0.158,-0.086);
|
||||
\draw[sedge] (-0.500,-0.433)--(-0.230,-0.345);
|
||||
\draw[sedge] (0.500,-0.433)--(0.027,-0.257);
|
||||
\draw[sedge] (0.500,-0.433)--(0.199,-0.203);
|
||||
\draw[sedge] (0.500,-0.433)--(0.012,-0.355);
|
||||
\draw[sedge] (0.500,-0.433)--(0.234,-0.280);
|
||||
\draw[sedge] (0.500,-0.433)--(0.292,-0.291);
|
||||
\draw[sedge] (0.500,-0.433)--(0.151,-0.341);
|
||||
\draw[sedge] (0.500,-0.433)--(0.254,-0.323);
|
||||
\draw[sedge] (0.027,-0.257)--(0.199,-0.203);
|
||||
\draw[sedge] (0.027,-0.257)--(0.012,-0.355);
|
||||
\draw[sedge] (0.027,-0.257)--(0.234,-0.280);
|
||||
\draw[sedge] (0.027,-0.257)--(-0.170,-0.348);
|
||||
\draw[sedge] (0.027,-0.257)--(0.151,-0.341);
|
||||
\draw[sedge] (0.027,-0.257)--(0.254,-0.323);
|
||||
\draw[sedge] (0.027,-0.257)--(-0.218,-0.346);
|
||||
\draw[sedge] (0.027,-0.257)--(0.063,-0.317);
|
||||
\draw[sedge] (0.027,-0.257)--(0.146,-0.243);
|
||||
\draw[sedge] (0.027,-0.257)--(-0.158,-0.086);
|
||||
\draw[sedge] (0.027,-0.257)--(0.124,-0.234);
|
||||
\draw[sedge] (0.027,-0.257)--(-0.230,-0.345);
|
||||
\draw[sedge] (0.199,-0.203)--(0.234,-0.280);
|
||||
\draw[sedge] (0.199,-0.203)--(0.292,-0.291);
|
||||
\draw[sedge] (0.199,-0.203)--(0.233,-0.249);
|
||||
\draw[sedge] (0.199,-0.203)--(0.221,-0.241);
|
||||
\draw[sedge] (0.199,-0.203)--(0.146,-0.243);
|
||||
\draw[sedge] (0.199,-0.203)--(0.218,-0.231);
|
||||
\draw[sedge] (0.199,-0.203)--(0.124,-0.234);
|
||||
\draw[sedge] (0.012,-0.355)--(-0.170,-0.348);
|
||||
\draw[sedge] (0.012,-0.355)--(0.151,-0.341);
|
||||
\draw[sedge] (0.012,-0.355)--(0.063,-0.317);
|
||||
\draw[sedge] (0.234,-0.280)--(0.292,-0.291);
|
||||
\draw[sedge] (0.234,-0.280)--(0.233,-0.249);
|
||||
\draw[sedge] (0.234,-0.280)--(0.254,-0.323);
|
||||
\draw[sedge] (0.234,-0.280)--(0.221,-0.241);
|
||||
\draw[sedge] (0.234,-0.280)--(0.146,-0.243);
|
||||
\draw[sedge] (0.292,-0.291)--(0.233,-0.249);
|
||||
\draw[sedge] (0.233,-0.249)--(0.221,-0.241);
|
||||
\draw[sedge] (0.233,-0.249)--(0.218,-0.231);
|
||||
\draw[sedge] (-0.170,-0.348)--(-0.218,-0.346);
|
||||
\draw[sedge] (0.151,-0.341)--(0.063,-0.317);
|
||||
\draw[sedge] (-0.218,-0.346)--(-0.230,-0.345);
|
||||
\draw[sedge] (0.221,-0.241)--(0.218,-0.231);
|
||||
\draw[sedge] (0.146,-0.243)--(0.124,-0.234);
|
||||
\node[sv] at (0.000,0.433) {};
|
||||
\node[sv] at (-0.500,-0.433) {};
|
||||
\node[sv] at (0.500,-0.433) {};
|
||||
\node[sv] at (0.027,-0.257) {};
|
||||
\node[sv] at (0.199,-0.203) {};
|
||||
\node[sv] at (0.012,-0.355) {};
|
||||
\node[sv] at (0.234,-0.280) {};
|
||||
\node[sv] at (0.292,-0.291) {};
|
||||
\node[sv] at (0.233,-0.249) {};
|
||||
\node[srcv] at (-0.170,-0.348) {};
|
||||
\node[sv] at (0.151,-0.341) {};
|
||||
\node[sv] at (0.254,-0.323) {};
|
||||
\node[sv] at (-0.218,-0.346) {};
|
||||
\node[sv] at (0.221,-0.241) {};
|
||||
\node[sv] at (0.063,-0.317) {};
|
||||
\node[sv] at (0.146,-0.243) {};
|
||||
\node[sv] at (0.218,-0.231) {};
|
||||
\node[sv] at (-0.158,-0.086) {};
|
||||
\node[sv] at (0.124,-0.234) {};
|
||||
\node[sv] at (-0.230,-0.345) {};
|
||||
\node[font=\scriptsize, text=blue!70!black] at (-0.170,-0.433) {source 9};
|
||||
\end{tikzpicture}
|
||||
\\[-0.25ex]
|
||||
{\scriptsize source graph $G$}
|
||||
\\[1.0ex]
|
||||
\begin{tikzpicture}[scale=7.0,
|
||||
base/.style={black!12, line width=0.25pt},
|
||||
med/.style={black!38, line width=0.32pt},
|
||||
annv/.style={circle, draw=black!70, fill=black!18, inner sep=1.0pt},
|
||||
levone/.style={circle, draw=orange!75!black, fill=orange!20, inner sep=1.2pt},
|
||||
levtwo/.style={circle, draw=violet!70!black, fill=violet!18, inner sep=1.2pt},
|
||||
levthree/.style={circle, draw=teal!70!black, fill=teal!18, inner sep=1.2pt},
|
||||
knownv/.style={circle, draw=red!70!black, fill=red!24, inner sep=1.5pt},
|
||||
elbl/.style={font=\tiny, text=black!70, inner sep=0.2pt},
|
||||
dlbl/.style={font=\tiny\bfseries, text=black, inner sep=0.5pt},
|
||||
cut/.style={red!80!black, line width=1.0pt},
|
||||
cutlbl/.style={font=\tiny, text=red!75!black}]
|
||||
\draw[base] (0.000,0.433)--(-0.500,-0.433);
|
||||
\draw[base] (0.000,0.433)--(0.500,-0.433);
|
||||
\draw[base] (0.000,0.433)--(0.027,-0.257);
|
||||
\draw[base] (0.000,0.433)--(0.199,-0.203);
|
||||
\draw[base] (0.000,0.433)--(-0.158,-0.086);
|
||||
\draw[base] (-0.500,-0.433)--(0.500,-0.433);
|
||||
\draw[base] (-0.500,-0.433)--(0.027,-0.257);
|
||||
\draw[base] (-0.500,-0.433)--(0.012,-0.355);
|
||||
\draw[base] (-0.500,-0.433)--(-0.170,-0.348);
|
||||
\draw[base] (-0.500,-0.433)--(-0.218,-0.346);
|
||||
\draw[base] (-0.500,-0.433)--(-0.158,-0.086);
|
||||
\draw[base] (-0.500,-0.433)--(-0.230,-0.345);
|
||||
\draw[base] (0.500,-0.433)--(0.027,-0.257);
|
||||
\draw[base] (0.500,-0.433)--(0.199,-0.203);
|
||||
\draw[base] (0.500,-0.433)--(0.012,-0.355);
|
||||
\draw[base] (0.500,-0.433)--(0.234,-0.280);
|
||||
\draw[base] (0.500,-0.433)--(0.292,-0.291);
|
||||
\draw[base] (0.500,-0.433)--(0.151,-0.341);
|
||||
\draw[base] (0.500,-0.433)--(0.254,-0.323);
|
||||
\draw[base] (0.027,-0.257)--(0.199,-0.203);
|
||||
\draw[base] (0.027,-0.257)--(0.012,-0.355);
|
||||
\draw[base] (0.027,-0.257)--(0.234,-0.280);
|
||||
\draw[base] (0.027,-0.257)--(-0.170,-0.348);
|
||||
\draw[base] (0.027,-0.257)--(0.151,-0.341);
|
||||
\draw[base] (0.027,-0.257)--(0.254,-0.323);
|
||||
\draw[base] (0.027,-0.257)--(-0.218,-0.346);
|
||||
\draw[base] (0.027,-0.257)--(0.063,-0.317);
|
||||
\draw[base] (0.027,-0.257)--(0.146,-0.243);
|
||||
\draw[base] (0.027,-0.257)--(-0.158,-0.086);
|
||||
\draw[base] (0.027,-0.257)--(0.124,-0.234);
|
||||
\draw[base] (0.027,-0.257)--(-0.230,-0.345);
|
||||
\draw[base] (0.199,-0.203)--(0.234,-0.280);
|
||||
\draw[base] (0.199,-0.203)--(0.292,-0.291);
|
||||
\draw[base] (0.199,-0.203)--(0.233,-0.249);
|
||||
\draw[base] (0.199,-0.203)--(0.221,-0.241);
|
||||
\draw[base] (0.199,-0.203)--(0.146,-0.243);
|
||||
\draw[base] (0.199,-0.203)--(0.218,-0.231);
|
||||
\draw[base] (0.199,-0.203)--(0.124,-0.234);
|
||||
\draw[base] (0.012,-0.355)--(-0.170,-0.348);
|
||||
\draw[base] (0.012,-0.355)--(0.151,-0.341);
|
||||
\draw[base] (0.012,-0.355)--(0.063,-0.317);
|
||||
\draw[base] (0.234,-0.280)--(0.292,-0.291);
|
||||
\draw[base] (0.234,-0.280)--(0.233,-0.249);
|
||||
\draw[base] (0.234,-0.280)--(0.254,-0.323);
|
||||
\draw[base] (0.234,-0.280)--(0.221,-0.241);
|
||||
\draw[base] (0.234,-0.280)--(0.146,-0.243);
|
||||
\draw[base] (0.292,-0.291)--(0.233,-0.249);
|
||||
\draw[base] (0.233,-0.249)--(0.221,-0.241);
|
||||
\draw[base] (0.233,-0.249)--(0.218,-0.231);
|
||||
\draw[base] (-0.170,-0.348)--(-0.218,-0.346);
|
||||
\draw[base] (0.151,-0.341)--(0.063,-0.317);
|
||||
\draw[base] (-0.218,-0.346)--(-0.230,-0.345);
|
||||
\draw[base] (0.221,-0.241)--(0.218,-0.231);
|
||||
\draw[base] (0.146,-0.243)--(0.124,-0.234);
|
||||
\draw[med] (-0.250,0.000)--(-0.079,0.174);
|
||||
\draw[med] (-0.250,0.000)--(0.250,0.000);
|
||||
\draw[med] (-0.250,0.000)--(0.000,-0.433);
|
||||
\draw[med] (-0.250,0.000)--(-0.329,-0.259);
|
||||
\draw[med] (0.250,0.000)--(0.100,0.115);
|
||||
\draw[med] (0.250,0.000)--(0.000,-0.433);
|
||||
\draw[med] (0.250,0.000)--(0.350,-0.318);
|
||||
\draw[med] (0.014,0.088)--(-0.079,0.174);
|
||||
\draw[med] (0.014,0.088)--(0.100,0.115);
|
||||
\draw[med] (0.014,0.088)--(0.113,-0.230);
|
||||
\draw[med] (0.014,0.088)--(-0.065,-0.171);
|
||||
\draw[med] (0.100,0.115)--(0.350,-0.318);
|
||||
\draw[med] (0.100,0.115)--(0.113,-0.230);
|
||||
\draw[med] (-0.079,0.174)--(-0.065,-0.171);
|
||||
\draw[med] (-0.079,0.174)--(-0.329,-0.259);
|
||||
\draw[med] (0.000,-0.433)--(-0.244,-0.394);
|
||||
\draw[med] (0.000,-0.433)--(0.256,-0.394);
|
||||
\draw[med] (-0.236,-0.345)--(-0.365,-0.389);
|
||||
\draw[med] (-0.236,-0.345)--(-0.329,-0.259);
|
||||
\draw[med] (-0.236,-0.345)--(-0.065,-0.171);
|
||||
\draw[med] (-0.236,-0.345)--(-0.102,-0.301);
|
||||
\draw[med] (-0.244,-0.394)--(-0.335,-0.390);
|
||||
\draw[med] (-0.244,-0.394)--(-0.079,-0.351);
|
||||
\draw[med] (-0.244,-0.394)--(0.256,-0.394);
|
||||
\draw[med] (-0.335,-0.390)--(-0.359,-0.389);
|
||||
\draw[med] (-0.335,-0.390)--(-0.194,-0.347);
|
||||
\draw[med] (-0.335,-0.390)--(-0.079,-0.351);
|
||||
\draw[med] (-0.359,-0.389)--(-0.365,-0.389);
|
||||
\draw[med] (-0.359,-0.389)--(-0.224,-0.345);
|
||||
\draw[med] (-0.359,-0.389)--(-0.194,-0.347);
|
||||
\draw[med] (-0.329,-0.259)--(-0.065,-0.171);
|
||||
\draw[med] (-0.365,-0.389)--(-0.102,-0.301);
|
||||
\draw[med] (-0.365,-0.389)--(-0.224,-0.345);
|
||||
\draw[med] (0.264,-0.345)--(0.377,-0.378);
|
||||
\draw[med] (0.264,-0.345)--(0.325,-0.387);
|
||||
\draw[med] (0.264,-0.345)--(0.140,-0.290);
|
||||
\draw[med] (0.264,-0.345)--(0.089,-0.299);
|
||||
\draw[med] (0.350,-0.318)--(0.396,-0.362);
|
||||
\draw[med] (0.350,-0.318)--(0.245,-0.247);
|
||||
\draw[med] (0.256,-0.394)--(0.325,-0.387);
|
||||
\draw[med] (0.256,-0.394)--(0.081,-0.348);
|
||||
\draw[med] (0.367,-0.357)--(0.396,-0.362);
|
||||
\draw[med] (0.367,-0.357)--(0.377,-0.378);
|
||||
\draw[med] (0.367,-0.357)--(0.244,-0.302);
|
||||
\draw[med] (0.367,-0.357)--(0.263,-0.286);
|
||||
\draw[med] (0.396,-0.362)--(0.263,-0.286);
|
||||
\draw[med] (0.396,-0.362)--(0.245,-0.247);
|
||||
\draw[med] (0.325,-0.387)--(0.081,-0.348);
|
||||
\draw[med] (0.325,-0.387)--(0.089,-0.299);
|
||||
\draw[med] (0.377,-0.378)--(0.140,-0.290);
|
||||
\draw[med] (0.377,-0.378)--(0.244,-0.302);
|
||||
\draw[med] (0.113,-0.230)--(0.076,-0.246);
|
||||
\draw[med] (0.113,-0.230)--(0.162,-0.218);
|
||||
\draw[med] (0.019,-0.306)--(-0.071,-0.302);
|
||||
\draw[med] (0.019,-0.306)--(0.045,-0.287);
|
||||
\draw[med] (0.019,-0.306)--(-0.079,-0.351);
|
||||
\draw[med] (0.019,-0.306)--(0.038,-0.336);
|
||||
\draw[med] (0.131,-0.268)--(0.140,-0.290);
|
||||
\draw[med] (0.131,-0.268)--(0.087,-0.250);
|
||||
\draw[med] (0.131,-0.268)--(0.190,-0.262);
|
||||
\draw[med] (0.131,-0.268)--(0.244,-0.302);
|
||||
\draw[med] (-0.071,-0.302)--(-0.096,-0.301);
|
||||
\draw[med] (-0.071,-0.302)--(-0.079,-0.351);
|
||||
\draw[med] (-0.071,-0.302)--(-0.194,-0.347);
|
||||
\draw[med] (0.089,-0.299)--(0.045,-0.287);
|
||||
\draw[med] (0.089,-0.299)--(0.107,-0.329);
|
||||
\draw[med] (0.140,-0.290)--(0.244,-0.302);
|
||||
\draw[med] (-0.096,-0.301)--(-0.102,-0.301);
|
||||
\draw[med] (-0.096,-0.301)--(-0.194,-0.347);
|
||||
\draw[med] (-0.096,-0.301)--(-0.224,-0.345);
|
||||
\draw[med] (0.045,-0.287)--(0.107,-0.329);
|
||||
\draw[med] (0.045,-0.287)--(0.038,-0.336);
|
||||
\draw[med] (0.087,-0.250)--(0.076,-0.246);
|
||||
\draw[med] (0.087,-0.250)--(0.135,-0.239);
|
||||
\draw[med] (0.087,-0.250)--(0.190,-0.262);
|
||||
\draw[med] (0.076,-0.246)--(0.162,-0.218);
|
||||
\draw[med] (0.076,-0.246)--(0.135,-0.239);
|
||||
\draw[med] (-0.102,-0.301)--(-0.224,-0.345);
|
||||
\draw[med] (0.217,-0.241)--(0.173,-0.223);
|
||||
\draw[med] (0.217,-0.241)--(0.210,-0.222);
|
||||
\draw[med] (0.217,-0.241)--(0.190,-0.262);
|
||||
\draw[med] (0.217,-0.241)--(0.227,-0.260);
|
||||
\draw[med] (0.245,-0.247)--(0.216,-0.226);
|
||||
\draw[med] (0.245,-0.247)--(0.262,-0.270);
|
||||
\draw[med] (0.216,-0.226)--(0.209,-0.217);
|
||||
\draw[med] (0.216,-0.226)--(0.262,-0.270);
|
||||
\draw[med] (0.216,-0.226)--(0.225,-0.240);
|
||||
\draw[med] (0.210,-0.222)--(0.209,-0.217);
|
||||
\draw[med] (0.210,-0.222)--(0.219,-0.236);
|
||||
\draw[med] (0.210,-0.222)--(0.227,-0.260);
|
||||
\draw[med] (0.173,-0.223)--(0.162,-0.218);
|
||||
\draw[med] (0.173,-0.223)--(0.190,-0.262);
|
||||
\draw[med] (0.173,-0.223)--(0.135,-0.239);
|
||||
\draw[med] (0.209,-0.217)--(0.225,-0.240);
|
||||
\draw[med] (0.209,-0.217)--(0.219,-0.236);
|
||||
\draw[med] (0.162,-0.218)--(0.135,-0.239);
|
||||
\draw[med] (0.081,-0.348)--(0.038,-0.336);
|
||||
\draw[med] (0.081,-0.348)--(0.107,-0.329);
|
||||
\draw[med] (0.038,-0.336)--(0.107,-0.329);
|
||||
\draw[med] (0.263,-0.286)--(0.233,-0.265);
|
||||
\draw[med] (0.263,-0.286)--(0.262,-0.270);
|
||||
\draw[med] (0.233,-0.265)--(0.227,-0.260);
|
||||
\draw[med] (0.233,-0.265)--(0.227,-0.245);
|
||||
\draw[med] (0.233,-0.265)--(0.262,-0.270);
|
||||
\draw[med] (0.227,-0.260)--(0.227,-0.245);
|
||||
\draw[med] (0.227,-0.245)--(0.225,-0.240);
|
||||
\draw[med] (0.227,-0.245)--(0.219,-0.236);
|
||||
\draw[med] (0.225,-0.240)--(0.219,-0.236);
|
||||
\node[annv] at (-0.250,0.000) {};
|
||||
\node[levtwo] at (0.250,0.000) {};
|
||||
\node[annv] at (0.014,0.088) {};
|
||||
\node[levtwo] at (0.100,0.115) {};
|
||||
\node[levtwo] at (-0.079,0.174) {};
|
||||
\node[annv] at (0.000,-0.433) {};
|
||||
\node[levone] at (-0.236,-0.345) {};
|
||||
\node[levone] at (-0.244,-0.394) {};
|
||||
\node[annv] at (-0.335,-0.390) {};
|
||||
\node[levone] at (-0.359,-0.389) {};
|
||||
\node[annv] at (-0.329,-0.259) {};
|
||||
\node[annv] at (-0.365,-0.389) {};
|
||||
\node[annv] at (0.264,-0.345) {};
|
||||
\node[knownv] at (0.350,-0.318) {};
|
||||
\node[annv] at (0.256,-0.394) {};
|
||||
\node[knownv] at (0.367,-0.357) {};
|
||||
\node[annv] at (0.396,-0.362) {};
|
||||
\node[annv] at (0.113,-0.230) {};
|
||||
\node[levone] at (0.019,-0.306) {};
|
||||
\node[annv] at (0.131,-0.268) {};
|
||||
\node[annv] at (-0.071,-0.302) {};
|
||||
\node[knownv] at (0.217,-0.241) {};
|
||||
\node[annv] at (0.245,-0.247) {};
|
||||
\node[annv] at (0.216,-0.226) {};
|
||||
\node[annv] at (-0.079,-0.351) {};
|
||||
\node[annv] at (0.263,-0.286) {};
|
||||
\node[annv] at (0.233,-0.265) {};
|
||||
\node[knownv] at (0.262,-0.270) {};
|
||||
\node[levtwo] at (0.325,-0.387) {};
|
||||
\node[annv] at (0.089,-0.299) {};
|
||||
\node[annv] at (0.081,-0.348) {};
|
||||
\node[levtwo] at (0.107,-0.329) {};
|
||||
\node[levtwo] at (0.377,-0.378) {};
|
||||
\node[annv] at (0.140,-0.290) {};
|
||||
\node[levtwo] at (0.244,-0.302) {};
|
||||
\node[levone] at (-0.096,-0.301) {};
|
||||
\node[annv] at (-0.194,-0.347) {};
|
||||
\node[annv] at (-0.224,-0.345) {};
|
||||
\node[annv] at (0.210,-0.222) {};
|
||||
\node[annv] at (0.227,-0.260) {};
|
||||
\node[knownv] at (0.227,-0.245) {};
|
||||
\node[knownv] at (0.219,-0.236) {};
|
||||
\node[annv] at (0.045,-0.287) {};
|
||||
\node[annv] at (0.038,-0.336) {};
|
||||
\node[annv] at (0.087,-0.250) {};
|
||||
\node[levtwo] at (0.173,-0.223) {};
|
||||
\node[levtwo] at (0.190,-0.262) {};
|
||||
\node[levtwo] at (0.135,-0.239) {};
|
||||
\node[annv] at (0.209,-0.217) {};
|
||||
\node[knownv] at (0.225,-0.240) {};
|
||||
\node[annv] at (-0.065,-0.171) {};
|
||||
\node[annv] at (0.076,-0.246) {};
|
||||
\node[levtwo] at (0.162,-0.218) {};
|
||||
\node[annv] at (-0.102,-0.301) {};
|
||||
\node[elbl] at (-0.250,0.000) [yshift=-4.8pt] {$0\!{-}\!1$};
|
||||
\node[elbl] at (0.250,0.000) [yshift=-4.8pt] {$0\!{-}\!2$};
|
||||
\node[elbl] at (0.014,0.088) [yshift=-4.8pt] {$0\!{-}\!3$};
|
||||
\node[elbl] at (0.100,0.115) [yshift=-4.8pt] {$0\!{-}\!4$};
|
||||
\node[elbl] at (-0.079,0.174) [yshift=-4.8pt] {$0\!{-}\!17$};
|
||||
\node[elbl] at (0.000,-0.433) [yshift=-4.8pt] {$1\!{-}\!2$};
|
||||
\node[elbl] at (-0.236,-0.345) [yshift=-4.8pt] {$1\!{-}\!3$};
|
||||
\node[elbl] at (-0.244,-0.394) [yshift=-4.8pt] {$1\!{-}\!5$};
|
||||
\node[elbl] at (-0.335,-0.390) [yshift=-4.8pt] {$1\!{-}\!9$};
|
||||
\node[elbl] at (-0.359,-0.389) [yshift=-4.8pt] {$1\!{-}\!12$};
|
||||
\node[elbl] at (-0.329,-0.259) [yshift=-4.8pt] {$1\!{-}\!17$};
|
||||
\node[elbl] at (-0.365,-0.389) [yshift=-4.8pt] {$1\!{-}\!19$};
|
||||
\node[elbl] at (0.264,-0.345) [yshift=-4.8pt] {$2\!{-}\!3$};
|
||||
\node[elbl] at (0.350,-0.318) [yshift=-4.8pt] {$2\!{-}\!4$};
|
||||
\node[elbl] at (0.256,-0.394) [yshift=-4.8pt] {$2\!{-}\!5$};
|
||||
\node[elbl] at (0.367,-0.357) [yshift=-4.8pt] {$2\!{-}\!6$};
|
||||
\node[elbl] at (0.396,-0.362) [yshift=-4.8pt] {$2\!{-}\!7$};
|
||||
\node[elbl] at (0.113,-0.230) [yshift=-4.8pt] {$3\!{-}\!4$};
|
||||
\node[elbl] at (0.019,-0.306) [yshift=-4.8pt] {$3\!{-}\!5$};
|
||||
\node[elbl] at (0.131,-0.268) [yshift=-4.8pt] {$3\!{-}\!6$};
|
||||
\node[elbl] at (-0.071,-0.302) [yshift=-4.8pt] {$3\!{-}\!9$};
|
||||
\node[elbl] at (0.217,-0.241) [yshift=-4.8pt] {$4\!{-}\!6$};
|
||||
\node[elbl] at (0.245,-0.247) [yshift=-4.8pt] {$4\!{-}\!7$};
|
||||
\node[elbl] at (0.216,-0.226) [yshift=-4.8pt] {$4\!{-}\!8$};
|
||||
\node[elbl] at (-0.079,-0.351) [yshift=-4.8pt] {$5\!{-}\!9$};
|
||||
\node[elbl] at (0.263,-0.286) [yshift=-4.8pt] {$6\!{-}\!7$};
|
||||
\node[elbl] at (0.233,-0.265) [yshift=-4.8pt] {$6\!{-}\!8$};
|
||||
\node[elbl] at (0.262,-0.270) [yshift=-4.8pt] {$7\!{-}\!8$};
|
||||
\node[elbl] at (0.325,-0.387) [yshift=-4.8pt] {$10\!{-}\!2$};
|
||||
\node[elbl] at (0.089,-0.299) [yshift=-4.8pt] {$10\!{-}\!3$};
|
||||
\node[elbl] at (0.081,-0.348) [yshift=-4.8pt] {$10\!{-}\!5$};
|
||||
\node[elbl] at (0.107,-0.329) [yshift=-4.8pt] {$10\!{-}\!14$};
|
||||
\node[elbl] at (0.377,-0.378) [yshift=-4.8pt] {$11\!{-}\!2$};
|
||||
\node[elbl] at (0.140,-0.290) [yshift=-4.8pt] {$11\!{-}\!3$};
|
||||
\node[elbl] at (0.244,-0.302) [yshift=-4.8pt] {$11\!{-}\!6$};
|
||||
\node[elbl] at (-0.096,-0.301) [yshift=-4.8pt] {$12\!{-}\!3$};
|
||||
\node[elbl] at (-0.194,-0.347) [yshift=-4.8pt] {$12\!{-}\!9$};
|
||||
\node[elbl] at (-0.224,-0.345) [yshift=-4.8pt] {$12\!{-}\!19$};
|
||||
\node[elbl] at (0.210,-0.222) [yshift=-4.8pt] {$13\!{-}\!4$};
|
||||
\node[elbl] at (0.227,-0.260) [yshift=-4.8pt] {$13\!{-}\!6$};
|
||||
\node[elbl] at (0.227,-0.245) [yshift=-4.8pt] {$13\!{-}\!8$};
|
||||
\node[elbl] at (0.219,-0.236) [yshift=-4.8pt] {$13\!{-}\!16$};
|
||||
\node[elbl] at (0.045,-0.287) [yshift=-4.8pt] {$14\!{-}\!3$};
|
||||
\node[elbl] at (0.038,-0.336) [yshift=-4.8pt] {$14\!{-}\!5$};
|
||||
\node[elbl] at (0.087,-0.250) [yshift=-4.8pt] {$15\!{-}\!3$};
|
||||
\node[elbl] at (0.173,-0.223) [yshift=-4.8pt] {$15\!{-}\!4$};
|
||||
\node[elbl] at (0.190,-0.262) [yshift=-4.8pt] {$15\!{-}\!6$};
|
||||
\node[elbl] at (0.135,-0.239) [yshift=-4.8pt] {$15\!{-}\!18$};
|
||||
\node[elbl] at (0.209,-0.217) [yshift=-4.8pt] {$16\!{-}\!4$};
|
||||
\node[elbl] at (0.225,-0.240) [yshift=-4.8pt] {$16\!{-}\!8$};
|
||||
\node[elbl] at (-0.065,-0.171) [yshift=-4.8pt] {$17\!{-}\!3$};
|
||||
\node[elbl] at (0.076,-0.246) [yshift=-4.8pt] {$18\!{-}\!3$};
|
||||
\node[elbl] at (0.162,-0.218) [yshift=-4.8pt] {$18\!{-}\!4$};
|
||||
\node[elbl] at (-0.102,-0.301) [yshift=-4.8pt] {$19\!{-}\!3$};
|
||||
\node[dlbl] at (0.350,-0.318) [yshift=5.0pt] {6};
|
||||
\node[dlbl] at (0.367,-0.357) [yshift=5.0pt] {7};
|
||||
\node[dlbl] at (0.217,-0.241) [yshift=5.0pt] {0};
|
||||
\node[dlbl] at (0.262,-0.270) [yshift=5.0pt] {2,3};
|
||||
\node[dlbl] at (0.227,-0.245) [yshift=5.0pt] {1};
|
||||
\node[dlbl] at (0.219,-0.236) [yshift=5.0pt] {5};
|
||||
\node[dlbl] at (0.225,-0.240) [yshift=5.0pt] {4};
|
||||
\draw[cut] (0.241,-0.204)--(0.180,-0.239);
|
||||
\node[cutlbl] at (0.137,-0.263) {cut 1};
|
||||
\draw[cut] (0.256,-0.320)--(0.269,-0.251);
|
||||
\node[cutlbl] at (0.279,-0.203) {cut 2};
|
||||
\end{tikzpicture}
|
||||
\\[-0.25ex]
|
||||
{\scriptsize medial graph $M(G)$ at edge midpoints}
|
||||
\end{tabular}
|
||||
|
||||
Reference in New Issue
Block a user