Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 94d59ceaed | |||
| 24af5485d2 | |||
| ea1ab0b986 | |||
| c64c720e5a | |||
| 9d7cb7644e | |||
| a22ca4b888 | |||
| b4ddc7da8b | |||
| 291f7e98c7 |
@@ -1,28 +0,0 @@
|
||||
\relax
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\citation{bauerfeld-nested-tire-decompositions}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Introduction}}{1}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{2}{A medial pigeonhole programme}}{1}{}\protected@file@percent }
|
||||
\newlabel{def:medial-boundary-state}{{2.1}{2}}
|
||||
\newlabel{conj:medial-chain-pigeonhole}{{2.2}{2}}
|
||||
\newlabel{conj:medial-route-fct}{{2.3}{2}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{3}{Kempe-cycle conservation across medial tires}}{2}{}\protected@file@percent }
|
||||
\newlabel{lem:kempe-cycles}{{3.1}{2}}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\newlabel{lem:kempe-conservation}{{3.2}{3}}
|
||||
\newlabel{def:kempe-balanced}{{3.3}{3}}
|
||||
\newlabel{rem:kempe-balance-necessary}{{3.4}{3}}
|
||||
\bibcite{bauerfeld-medial-tire}{1}
|
||||
\bibcite{bauerfeld-nested-tire-decompositions}{2}
|
||||
\bibcite{tait-original}{3}
|
||||
\newlabel{tocindent-1}{0pt}
|
||||
\newlabel{tocindent0}{12.7778pt}
|
||||
\newlabel{tocindent1}{17.77782pt}
|
||||
\newlabel{tocindent2}{0pt}
|
||||
\newlabel{tocindent3}{0pt}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{6}{}\protected@file@percent }
|
||||
\gdef \@abspage@last{6}
|
||||
@@ -1,135 +0,0 @@
|
||||
# Fdb version 3
|
||||
["pdflatex"] 1781485473 "paper.tex" "paper.pdf" "paper" 1781485473
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/map/fontname/texfonts.map" 1577235249 3524 cb3e574dea2d1052e39280babc910dc8 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm" 1246382020 1004 54797486969f23fa377b128694d548df ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm" 1246382020 988 bdf658c3bfc2d96d3c8b02cfc1c94c20 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm" 1246382020 916 f87d7c45f9c908e672703b83b72241a3 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm" 1246382020 924 9904cf1d39e9767e7a3622f2a125a565 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm" 1246382020 928 2dc8d444221b7a635bb58038579b861a ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm" 1246382020 908 2921f8a10601f252058503cc6570e581 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm" 1246382020 940 75ac932a52f80982a9f8ea75d03a34cf ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm" 1246382020 940 228d6584342e91276bf566bcf9716b83 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm" 1136768653 1328 c834bbb027764024c09d3d2bf908b5f0 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx8.tfm" 1136768653 1332 1fde11373e221473104d6cc5993f046e ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmcsc10.tfm" 1136768653 1300 63a6111ee6274895728663cf4b4e7e81 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm" 1136768653 1512 f21f83efb36853c0b70002322c1ab3ad ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm" 1136768653 1520 eccf95517727cb11801f4f1aee3a21b4 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmr6.tfm" 1136768653 1300 b62933e007d01cfd073f79b963c01526 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmr8.tfm" 1136768653 1292 21c1c5bfeaebccffdb478fd231a0997d ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmss10.tfm" 1136768653 1316 b636689f1933f24d1294acdf6041daaa ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmss8.tfm" 1136768653 1296 d77f431d10d47c8ea2cc18cf45346274 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm" 1136768653 1116 933a60c408fc0a863a92debe84b2d294 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm" 1136768653 1120 8b7d695260f3cff42e636090a8002094 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti10.tfm" 1136768653 1480 aa8e34af0eb6a2941b776984cf1dfdc4 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti8.tfm" 1136768653 1504 1747189e0441d1c18f3ea56fafc1c480 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb" 1248133631 34811 78b52f49e893bcba91bd7581cdc144c0 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx8.pfb" 1248133631 32166 b0c356b15f19587482a9217ce1d8fa67 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb" 1248133631 32001 6aeea3afe875097b1eb0da29acd61e28 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb" 1248133631 36299 5f9df58c2139e7edcf37c8fca4bd384d ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb" 1248133631 37912 77d683123f92148345f3fc36a38d9ab1 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb" 1248133631 36281 c355509802a035cadc5f15869451dcee ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb" 1248133631 35752 024fb6c41858982481f6968b5fc26508 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb" 1248133631 32762 224316ccc9ad3ca0423a14971cfa7fc1 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb" 1248133631 32726 0a1aea6fcd6468ee2cf64d891f5c43c8 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb" 1248133631 24457 5cbb7bdf209d5d1ce9892a9b80a307cc ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb" 1248133631 32569 5e5ddc8df908dea60932f3c484a54c0d ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb" 1248133631 32716 08e384dc442464e7285e891af9f45947 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb" 1248133631 37944 359e864bd06cde3b1cf57bb20757fb06 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb" 1248133631 35660 fb24af7afbadb71801619f1415838111 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb" 1248133631 31764 459c573c03a4949a528c2cc7f557e217 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii" 1461363279 71627 94eb9990bed73c364d7f53f960cc8c5b ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex" 1601326656 992 855ff26741653ab54814101ca36e153c ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex" 1601326656 43820 1fef971b75380574ab35a0d37fd92608 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex" 1601326656 19324 f4e4c6403dd0f1605fd20ed22fa79dea ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex" 1601326656 6038 ccb406740cc3f03bbfb58ad504fe8c27 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex" 1601326656 6944 e12f8f7a7364ddf66f93ba30fb3a3742 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex" 1601326656 4883 42daaf41e27c3735286e23e48d2d7af9 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex" 1601326656 2544 8c06d2a7f0f469616ac9e13db6d2f842 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex" 1601326656 44195 5e390c414de027626ca5e2df888fa68d ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex" 1601326656 17311 2ef6b2e29e2fc6a2fc8d6d652176e257 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex" 1601326656 21302 788a79944eb22192a4929e46963a3067 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex" 1601326656 9690 01feb7cde25d4293ef36eef45123eb80 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex" 1601326656 33335 dd1fa4814d4e51f18be97d88bf0da60c ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex" 1601326656 2965 4c2b1f4e0826925746439038172e5d6f ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex" 1601326656 5196 2cc249e0ee7e03da5f5f6589257b1e5b ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex" 1601326656 20726 d4c8db1e2e53b72721d29916314a22ea ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex" 1601326656 35249 abd4adf948f960299a4b3d27c5dddf46 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex" 1601326656 21989 fdc867d05d228316de137a9fc5ec3bbe ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex" 1601326656 8893 e851de2175338fdf7c17f3e091d94618 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex" 1601326656 4572 4a19637ef65ce88ad2f2d5064b69541d ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex" 1608933718 11518 738408f795261b70ce8dd47459171309 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex" 1621110968 186007 6e7dfe0bd57520fd5f91641aa72dcac8 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex" 1601326656 32995 ac577023e12c0e4bd8aa420b2e852d1a ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfint.code.tex" 1557692582 3063 8c415c68a0f3394e45cfeca0b65f6ee6 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex" 1601326656 521 8e224a7af69b7fee4451d1bf76b46654 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex" 1601326656 13391 84d29568c13bdce4133ab4a214711112 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex" 1601326656 104935 184ed87524e76d4957860df4ce0cd1c3 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex" 1601326656 10165 cec5fa73d49da442e56efc2d605ef154 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex" 1601326656 28178 41c17713108e0795aac6fef3d275fbca ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex" 1601326656 9989 c55967bf45126ff9b061fa2ca0c4694f ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex" 1601326656 3865 ac538ab80c5cf82b345016e474786549 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex" 1557692582 3177 27d85c44fbfe09ff3b2cf2879e3ea434 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex" 1621110968 11024 0179538121bc2dba172013a3ef89519f ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex" 1608933718 7854 4176998eeefd8745ac6d2d4bd9c98451 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex" 1601326656 3379 781797a101f647bab82741a99944a229 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex" 1601326656 92405 f515f31275db273f97b9d8f52e1b0736 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex" 1601326656 37376 11cd75aac3da1c1b152b2848f30adc14 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex" 1601326656 8471 c2883569d03f69e8e1cabfef4999cfd7 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex" 1601326656 21201 08d231a2386e2b61d64641c50dc15abd ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex" 1601326656 16121 346f9013d34804439f7436ff6786cef7 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex" 1621110968 44784 cedaa399d15f95e68e22906e2cc09ef8 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/pgf.revision.tex" 1621110968 465 d68603f8b820ea4a08cce534944db581 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg" 1601326656 926 2963ea0dcf6cc6c0a770b69ec46a477b ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def" 1601326656 5546 f3f24d7898386cb7daac70bdd2c4d6dc ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def" 1601326656 12601 4786e597516eddd82097506db7cfa098 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex" 1621110968 61163 9b2eefc24e021323e0fc140e9826d016 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex" 1601326656 1896 b8e0ca0ac371d74c0ca05583f6313c91 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex" 1601326656 7778 53c8b5623d80238f6a20aa1df1868e63 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex" 1606168878 23997 a4bed72405fa644418bea7eac2887006 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex" 1621110968 37060 797782f0eb50075c9bc952374d9a659a ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex" 1601326656 37431 9abe862035de1b29c7a677f3205e3d9f ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex" 1601326656 4494 af17fb7efeafe423710479858e42fa7e ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex" 1601326656 7251 fb18c67117e09c64de82267e12cd8aa4 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex" 1621110968 29274 e15c5b7157d21523bd9c9f1dfa146b8e ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def" 1621110968 6825 a2b0ea5b539dda0625e99dd15785ab59 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls" 1591045760 61881 a7369c346c2922a758ae6283cc1ed014 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty" 1359763108 5949 3f3fd50a8cc94c3d4cbf4fc66cd3df1c ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty" 1359763108 13829 94730e64147574077f8ecfea9bb69af4 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd" 1359763108 961 6518c6525a34feb5e8250ffa91731cff ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd" 1359763108 961 d02606146ba5601b5645f987c92e6193 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty" 1622667781 2222 da905dc1db75412efd2d8f67739f0596 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty" 1622667781 4173 bc0410bcccdff806d6132d3c1ef35481 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty" 1636758526 87648 07fbb6e9169e00cb2a2f40b31b2dbf3c ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty" 1636758526 4128 8eea906621b6639f7ba476a472036bbe ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty" 1636758526 2444 926f379cc60fcf0c6e3fee2223b4370d ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty" 1579991033 13886 d1306dcf79a944f6988e688c1785f9ce ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/color.cfg" 1459978653 1213 620bba36b25224fa9b7e1ccb4ecb76fd ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg" 1465944070 1224 978390e9c2234eab29404bc21b268d1e ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def" 1601931164 19103 48d29b6e2a64cb717117ef65f107b404 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty" 1622581934 18399 7e40f80366dffb22c0e7b70517db5cb4 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty" 1636758526 7996 a8fb260d598dcaf305a7ae7b9c3e3229 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty" 1622581934 2671 4de6781a30211fe0ea4c672e4a2a8166 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty" 1636758526 4009 187ea2dc3194cd5a76cd99a8d7a6c4d0 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def" 1644269979 29921 d0acc05a38bd4aa3af2017f0b7c137ce ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg" 1279039959 678 4792914a8f45be57bb98413425e4c7af ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty" 1601326656 1090 bae35ef70b3168089ef166db3e66f5b2 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty" 1601326656 410 615550c46f918fcbee37641b02a862d9 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty" 1601326656 21013 f4ff83d25bb56552493b030f27c075ae ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty" 1601326656 989 c49c8ae06d96f8b15869da7428047b1e ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty" 1601326656 339 c2e180022e3afdb99c7d0ea5ce469b7d ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty" 1601326656 306 c56a323ca5bf9242f54474ced10fca71 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty" 1601326656 443 8c872229db56122037e86bcda49e14f3 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty" 1601326656 348 ee405e64380c11319f0e249fed57e6c5 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty" 1601326656 274 5ae372b7df79135d240456a1c6f2cf9a ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty" 1601326656 325 f9f16d12354225b7dd52a3321f085955 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty" 1635798903 56029 3f7889dab51d620aa43177c391b7b190 ""
|
||||
"/usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf" 1646502317 40171 cdab547de63d26590bebb3baff566530 ""
|
||||
"/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map" 1647878959 4410336 7d30a02e9fa9a16d7d1f8d037ba69641 ""
|
||||
"/usr/local/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt" 1665017617 2826443 7e98410c533054b636c6470db83a27bc ""
|
||||
"/usr/local/texlive/2022/texmf.cnf" 1647878952 577 209b46be99c9075fd74d4c0369380e8c ""
|
||||
"paper.aux" 1781485473 1312 7ba44acc160ff1167e676415e34169c0 "pdflatex"
|
||||
"paper.tex" 1781485463 17511 c613c597a654f07644b998ea69f242e5 ""
|
||||
(generated)
|
||||
"paper.aux"
|
||||
"paper.log"
|
||||
"paper.pdf"
|
||||
@@ -1,471 +0,0 @@
|
||||
PWD /Users/didericis/Code/math-research/papers/medial_pigeonhole_programme
|
||||
INPUT /usr/local/texlive/2022/texmf.cnf
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/web2c/texmf.cnf
|
||||
INPUT /usr/local/texlive/2022/texmf-var/web2c/pdftex/pdflatex.fmt
|
||||
INPUT paper.tex
|
||||
OUTPUT paper.log
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amscls/amsart.cls
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amstext.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsbsy.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsopn.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsmath/amsgen.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amssymb.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/amsfonts.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphics.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/trig.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-def/pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/pgf.revision.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/pgf.revision.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/graphicx.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics/keyval.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/xcolor/xcolor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/graphics-cfg/color.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonometric.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerarithmetics.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfint.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformations.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/basiclayer/pgfcorerdf.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgffor.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/math/pgfmath.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/pgf/utilities/pgfkeys.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/libraries/pgflibraryplothandlers.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/modules/pgfmodulematrix.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarytopaths.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarybackgrounds.code.tex
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/l3backend/l3backend-pdftex.def
|
||||
INPUT ./paper.aux
|
||||
INPUT paper.aux
|
||||
INPUT paper.aux
|
||||
OUTPUT paper.aux
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/map/fontname/texfonts.map
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmr8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmr6.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmmi6.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmsy6.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsa.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam5.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/amsfonts/umsb.fd
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm5.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/context/base/mkii/supp-pdf.mkii
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmcsc10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmcsc10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/cmextra/cmex7.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msam7.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/amsfonts/symbols/msbm7.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmss10.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmss8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmss8.tfm
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmti10.tfm
|
||||
OUTPUT paper.pdf
|
||||
INPUT /usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/tfm/public/cm/cmbx8.tfm
|
||||
INPUT paper.aux
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmbx8.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmcsc10.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi5.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi7.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr7.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmr8.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmss10.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy10.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb
|
||||
INPUT /usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb
|
||||
Binary file not shown.
@@ -1,442 +0,0 @@
|
||||
%% filename: amsart-template.tex
|
||||
%% American Mathematical Society
|
||||
%% AMS-LaTeX v.2 template for use with amsart
|
||||
%% ====================================================================
|
||||
|
||||
\documentclass{amsart}
|
||||
|
||||
\usepackage{amssymb}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{backgrounds}
|
||||
|
||||
\newtheorem{theorem}{Theorem}[section]
|
||||
\newtheorem{lemma}[theorem]{Lemma}
|
||||
\newtheorem{corollary}[theorem]{Corollary}
|
||||
\newtheorem{proposition}[theorem]{Proposition}
|
||||
\newtheorem{conjecture}[theorem]{Conjecture}
|
||||
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{definition}[theorem]{Definition}
|
||||
\newtheorem{example}[theorem]{Example}
|
||||
\newtheorem{xca}[theorem]{Exercise}
|
||||
|
||||
\theoremstyle{remark}
|
||||
\newtheorem{remark}[theorem]{Remark}
|
||||
|
||||
\numberwithin{equation}{section}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\title{The Medial Pigeonhole Programme}
|
||||
|
||||
% author one information
|
||||
\author{Eric Bauerfeld}
|
||||
\address{}
|
||||
\curraddr{}
|
||||
\email{}
|
||||
\thanks{}
|
||||
|
||||
\subjclass[2010]{Primary }
|
||||
|
||||
\keywords{plane graph, triangulation, medial graph, tire graph, Tait coloring, Kempe chain, Four Colour Theorem}
|
||||
|
||||
\date{}
|
||||
|
||||
\dedicatory{}
|
||||
|
||||
\begin{abstract}
|
||||
Building on the medial tire decomposition of a plane triangulation, we
|
||||
formulate a pigeonhole programme for the Four Colour Theorem in medial
|
||||
terms. Each tire carries a boundary-state restriction relation, and a
|
||||
proper vertex $3$-colouring of the full medial graph is a compatible
|
||||
selection of these boundary states across the tire tree. We state a
|
||||
chain-pigeonhole conjecture asserting that the restriction relations
|
||||
cannot remain mutually disjoint along every branch, and we refine the
|
||||
boundary states by recording how two-colour Kempe cycles are routed
|
||||
through each annular tire region. This yields a Kempe-enhanced
|
||||
restriction relation and a notion of Kempe-compatible gluing along level
|
||||
cycles.
|
||||
\end{abstract}
|
||||
|
||||
\maketitle
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
This paper continues the medial tire programme begun
|
||||
in~\cite{bauerfeld-medial-tire}. We use freely the terminology and
|
||||
notation introduced there. For a plane triangulation $G$ with fixed
|
||||
embedding, $M(G)$ denotes the full medial graph, and the tire-tree
|
||||
decomposition $\mathcal{T}(G,S)$ at a level source $S$
|
||||
of~\cite{bauerfeld-nested-tire-decompositions} induces a decomposition
|
||||
of $M(G)$ into full medial tire graphs $\mathsf{M}(T)$, one for each
|
||||
tread $T$, glued along their boundary medial vertex sets
|
||||
$\partial_{\mathrm{out}}\mathsf{M}(T)$ and
|
||||
$\partial_{\mathrm{in}}\mathsf{M}(T)$. We also use the annular medial
|
||||
cycle $A(T)$, its up and down teeth and their apexes, the bites and the
|
||||
auxiliary plane graph $B(T)$, and the medial tire restriction relation
|
||||
$R_T$ of~\cite{bauerfeld-medial-tire}.
|
||||
|
||||
By the Tait--medial correspondence of~\cite{bauerfeld-medial-tire},
|
||||
proper vertex $3$-colourings of $M(G)$ are in natural bijection with
|
||||
proper $3$-edge-colourings of the cubic planar dual $G^*$. Thus the
|
||||
Four Colour Theorem is the assertion that the full medial graph of every
|
||||
plane triangulation is properly vertex $3$-colourable, and the medial
|
||||
tire decomposition turns this into a question about how local boundary
|
||||
colourings compose across the tire tree.
|
||||
|
||||
\section{A medial pigeonhole programme}
|
||||
|
||||
The restriction relation $R_T$ records exactly the local information
|
||||
needed to pass a medial $3$-colouring through a tire. In a nested
|
||||
chain
|
||||
\[
|
||||
T_0 \supset T_1 \supset \cdots \supset T_k,
|
||||
\]
|
||||
the outer boundary state of $T_{i+1}$ must match an inner boundary
|
||||
state allowed by $R_{T_i}$. Thus a proof of the Four Colour Theorem in
|
||||
this framework would follow from a structural reason that these
|
||||
restriction sets cannot remain mutually disjoint along every branch of
|
||||
the tire tree.
|
||||
|
||||
\begin{definition}[Medial boundary state]
|
||||
\label{def:medial-boundary-state}
|
||||
A \emph{medial boundary state} on a boundary set
|
||||
$\partial\mathsf{M}(T)$ is a proper vertex $3$-colouring of the
|
||||
subgraph induced by that boundary set, considered up to permutation of
|
||||
the three colours and the dihedral symmetries of the boundary walk
|
||||
when that boundary is a cycle.
|
||||
\end{definition}
|
||||
|
||||
\begin{conjecture}[Medial chain-pigeonhole principle]
|
||||
\label{conj:medial-chain-pigeonhole}
|
||||
There is a function $N(k)$ such that the following holds. Let
|
||||
$T_0 \supset T_1 \supset \cdots \supset T_{N(k)}$ be a nested chain of
|
||||
tire treads whose relevant boundary medial walks have length at most
|
||||
$k$. Then two adjacent restriction relations in the chain have
|
||||
compatible medial boundary states after colour permutation and boundary
|
||||
symmetry. Equivalently, the chain contains a local gluing step that
|
||||
cannot be obstructed by disjoint proper vertex $3$-colouring
|
||||
restrictions.
|
||||
\end{conjecture}
|
||||
|
||||
\begin{conjecture}[Medial tire route to the Four Colour Theorem]
|
||||
\label{conj:medial-route-fct}
|
||||
For every plane triangulation $G$ and every level source $S$, the
|
||||
restriction relations $\{R_T : T \in V(\mathcal{T}(G,S))\}$ admit a
|
||||
compatible selection of boundary states across the tire tree. Hence
|
||||
$M(G)$ is properly vertex $3$-colourable, $G^*$ is properly
|
||||
$3$-edge-colourable, and $G$ is properly $4$-vertex-colourable.
|
||||
\end{conjecture}
|
||||
|
||||
\begin{remark}
|
||||
Conjecture~\ref{conj:medial-route-fct} is equivalent in strength to
|
||||
the Four Colour Theorem when combined with Tait's correspondence. The
|
||||
point of the formulation is not to weaken the target theorem, but to
|
||||
move the obstruction into finite boundary-state restrictions carried by
|
||||
annular medial tire pieces.
|
||||
\end{remark}
|
||||
|
||||
\section{Kempe-cycle conservation across medial tires}
|
||||
|
||||
We now record an additional structure carried by proper
|
||||
$3$-colourings of medial graphs. This structure will be useful for
|
||||
describing how colourings glue across level cycles.
|
||||
|
||||
Let $G$ be a plane triangulation and let $M=M(G)$ be its medial graph.
|
||||
Let
|
||||
\[
|
||||
\varphi:V(M)\to\{1,2,3\}
|
||||
\]
|
||||
be a proper $3$-colouring of $M$. For a two-element colour set
|
||||
$P=\{a,b\}\subseteq\{1,2,3\}$, let $M_P$ denote the subgraph of $M$
|
||||
induced by the vertices of colours $a$ and $b$.
|
||||
|
||||
Since $M$ is $4$-regular and $\varphi$ is proper, every vertex of
|
||||
$M_P$ has degree $2$ in $M_P$. Hence every component of $M_P$ is a
|
||||
cycle. We call these components the $P$-Kempe cycles of $\varphi$.
|
||||
|
||||
\begin{lemma}[Kempe chains are cycles]
|
||||
\label{lem:kempe-cycles}
|
||||
Let $G$ be a plane triangulation, let $M=M(G)$, and let
|
||||
$\varphi$ be a proper $3$-colouring of $M$. For each
|
||||
$P\in\{\{1,2\},\{2,3\},\{3,1\}\}$, every component of $M_P$ is a cycle.
|
||||
\end{lemma}
|
||||
|
||||
\begin{proof}
|
||||
Let $v\in V(M_P)$. In the medial graph $M$, the vertex $v$ has degree
|
||||
$4$. Since $\varphi$ is a proper $3$-colouring, none of the neighbours
|
||||
of $v$ has colour $\varphi(v)$. Thus all four neighbours of $v$ have
|
||||
one of the two colours different from $\varphi(v)$.
|
||||
|
||||
In the medial graph of a plane triangulation, the neighbours of a
|
||||
medial vertex occur in two opposite pairs corresponding to the two
|
||||
faces incident with the corresponding edge of $G$. Around each such
|
||||
triangular face, the three medial vertices receive all three colours.
|
||||
Consequently, at $v$ there are exactly two neighbours of each colour
|
||||
different from $\varphi(v)$. It follows that, in the subgraph induced
|
||||
by any two colours $P$, every vertex has degree $2$. Hence each
|
||||
component of $M_P$ is a cycle.
|
||||
\end{proof}
|
||||
|
||||
Let $T$ be a medial tire region. We regard $T$ as an annular transition
|
||||
region whose boundary consists of one outer level cycle and finitely
|
||||
many inner level cycles:
|
||||
\[
|
||||
\partial T = C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
Here $C_0$ is the outer level cycle of $T$, and the cycles
|
||||
$C_1,\ldots,C_m$ are the inner level cycles. Each inner level cycle
|
||||
$C_i$ is also the outer level cycle of the corresponding child region
|
||||
in the tire tree.
|
||||
|
||||
The following lemma is the basic conservation principle.
|
||||
|
||||
\begin{lemma}[Kempe-cycle conservation across level cycles]
|
||||
\label{lem:kempe-conservation}
|
||||
Let $C$ be a level cycle of $M$ separating a parent side from a child
|
||||
side. Let $K$ be a $P$-Kempe cycle for some
|
||||
$P\in\{\{1,2\},\{2,3\},\{3,1\}\}$. Then $K$ cannot enter the child side
|
||||
of $C$ without also leaving it.
|
||||
|
||||
Equivalently, the incidences of $K$ with $C$ are paired by the
|
||||
components of $K$ lying on the child side of $C$, and also paired by the
|
||||
components of $K$ lying on the parent side of $C$.
|
||||
\end{lemma}
|
||||
|
||||
\begin{proof}
|
||||
By the preceding lemma, $K$ is a cycle. The level cycle $C$ separates
|
||||
the sphere into two closed regions, which we call the parent side and
|
||||
the child side. Consider the intersection of $K$ with one of these
|
||||
regions. Since $K$ is a cycle, no component of this intersection can
|
||||
have exactly one boundary endpoint on $C$. Each component is either
|
||||
closed within the region, or is a path with two boundary endpoints on
|
||||
$C$. Thus every entrance through $C$ is paired with an exit through
|
||||
$C$.
|
||||
\end{proof}
|
||||
|
||||
We now use these Kempe cycles to single out the colourings of a full
|
||||
medial tire graph that respect the annular tooth structure.
|
||||
|
||||
\begin{definition}[Kempe-balanced colouring]
|
||||
\label{def:kempe-balanced}
|
||||
Let $\varphi$ be a proper $3$-colouring of the full medial tire graph
|
||||
$\mathsf{M}(T)$. For a colour pair $P=\{a,b\}$, let $\mathsf{M}(T)_P$ be
|
||||
the subgraph induced by the vertices of colours $a$ and $b$. Since
|
||||
$\mathsf{M}(T)$ need not be $4$-regular, the components of
|
||||
$\mathsf{M}(T)_P$ are paths or cycles; we call them the $P$-\emph{Kempe
|
||||
chains} of $\varphi$. Every vertex of colour $a$ or $b$ lies on exactly
|
||||
one $P$-Kempe chain.
|
||||
|
||||
A \emph{valid face} is the outer face of $\mathsf{M}(T)$, or an interior
|
||||
face of $B(T)$ that is not a tooth---namely the root face or a bite
|
||||
inner-gap face in the sense of~\cite{bauerfeld-medial-tire}. The
|
||||
\emph{tooth apexes incident to} a valid face $F$ are:
|
||||
\begin{itemize}
|
||||
\item the up-tooth apexes (\cite{bauerfeld-medial-tire}), when
|
||||
$F$ is the outer face;
|
||||
\item the singleton down-tooth apexes whose annular edge lies on $F$,
|
||||
when $F$ is interior---the apex on annular edge $m$ being incident to
|
||||
the innermost bite $(i,j)$ with $i<m<j$, or to the root face if there
|
||||
is none.
|
||||
\end{itemize}
|
||||
Bite apexes are never incident to a valid face in this sense.
|
||||
|
||||
For a colour pair $P=\{a,b\}$ write $\nu_P(F)$ for the number of tooth
|
||||
apexes incident to $F$ that are coloured $a$ or $b$---equivalently, that
|
||||
lie on a $P$-Kempe chain. The colouring $\varphi$ is
|
||||
\emph{Kempe-balanced} if $\nu_P(F)$ is even for every valid face $F$ and
|
||||
every colour pair $P$.
|
||||
\end{definition}
|
||||
|
||||
\begin{remark}[Necessity of Kempe-balance]
|
||||
\label{rem:kempe-balance-necessary}
|
||||
A proper $3$-colouring of $\mathsf{M}(T)$ can be part of a proper
|
||||
$3$-colouring of the whole medial graph $M(G)$ only when it is
|
||||
Kempe-balanced: if $\varphi$ is the restriction to $\mathsf{M}(T)$ of a
|
||||
proper $3$-colouring of $M(G)$, then $\varphi$ is Kempe-balanced.
|
||||
Equivalently, a colouring of $\mathsf{M}(T)$ that fails the parity
|
||||
condition at some valid face and colour pair cannot extend to a proper
|
||||
$3$-colouring of $M(G)$. This is an instance of Kempe-cycle
|
||||
conservation (Lemma~\ref{lem:kempe-conservation}). The tooth apexes
|
||||
incident to a valid face are boundary medial vertices
|
||||
(\cite{bauerfeld-medial-tire}) lying on a single level
|
||||
cycle of the tire decomposition: the up-tooth apexes lie on the outer
|
||||
level cycle, and the singleton down-tooth apexes incident to an interior
|
||||
non-tooth face lie on the inner level cycle bounding that face. In the
|
||||
$4$-regular graph $M(G)$ each $P$-Kempe chain of $\mathsf{M}(T)$ closes
|
||||
up into a $P$-Kempe cycle, which by Lemma~\ref{lem:kempe-conservation}
|
||||
meets each level cycle in an even number of $P$-coloured incidences; for
|
||||
a given valid face these incidences are exactly its incident tooth
|
||||
apexes coloured $a$ or $b$, whence $\nu_P(F)$ is even.
|
||||
|
||||
This argument is verified computationally. For bite-free pieces---capped
|
||||
triangulated annuli on annular cycles of length $6,8,10,12$---every proper
|
||||
$3$-colouring of $M(G)$ restricts to a Kempe-balanced colouring. The same
|
||||
holds for pieces carrying a bite, including the case where singleton down
|
||||
teeth lie in the bite's inner-gap face: there the inner level cycle splits
|
||||
into a child level cycle per gap, and conservation across each child cycle
|
||||
supplies the parity (in the checked example the three singleton down apexes
|
||||
of a bite gap are a rainbow in every restriction).
|
||||
\end{remark}
|
||||
|
||||
More generally, let $T$ be a medial tire region with boundary
|
||||
\[
|
||||
\partial T = C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
For a $P$-Kempe cycle $K$, every component of $K\cap T$ is either a
|
||||
cycle contained in $T$, or a path with two endpoints on
|
||||
$\partial T$. Thus the $P$-Kempe arcs inside $T$ define a pairing of
|
||||
the $P$-coloured boundary incidences of
|
||||
\[
|
||||
C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
This motivates the following refinement of boundary states.
|
||||
|
||||
\begin{definition}[Kempe-enhanced boundary state]
|
||||
Let $T$ be a medial tire region with outer level cycle $C_0$ and inner
|
||||
level cycles $C_1,\ldots,C_m$. Let
|
||||
\[
|
||||
\mathcal C(T)=C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
A \emph{Kempe-enhanced boundary state} on $T$ consists of the following
|
||||
data:
|
||||
\begin{enumerate}
|
||||
\item a boundary colouring
|
||||
\[
|
||||
\alpha:V(\mathcal C(T))\to\{1,2,3\};
|
||||
\]
|
||||
\item for each colour pair
|
||||
\[
|
||||
P\in\{\{1,2\},\{2,3\},\{3,1\}\},
|
||||
\]
|
||||
a pairing $\pi_P$ of the $P$-coloured boundary incidences of
|
||||
$\mathcal C(T)$ induced by the $P$-Kempe arcs lying inside $T$.
|
||||
\end{enumerate}
|
||||
We write such a state as
|
||||
\[
|
||||
\kappa=(\alpha,\pi_{12},\pi_{23},\pi_{31}).
|
||||
\]
|
||||
\end{definition}
|
||||
|
||||
Given a proper $3$-colouring $\varphi$ of the medial tire graph
|
||||
$M(T)$, the restriction of $\varphi$ to the boundary level cycles gives
|
||||
the boundary colouring $\alpha$, while the two-colour Kempe arcs inside
|
||||
$T$ give the pairings $\pi_{12},\pi_{23},\pi_{31}$. Thus $\varphi$
|
||||
determines a Kempe-enhanced boundary state, denoted
|
||||
\[
|
||||
\kappa_T(\varphi).
|
||||
\]
|
||||
|
||||
\begin{definition}[Kempe-enhanced restriction relation]
|
||||
The \emph{Kempe-enhanced restriction relation} of $T$ is
|
||||
\[
|
||||
\mathcal K_T
|
||||
=
|
||||
\left\{
|
||||
\kappa_T(\varphi):
|
||||
\varphi \text{ is a proper }3\text{-colouring of } M(T)
|
||||
\right\}.
|
||||
\]
|
||||
This refines the ordinary boundary-colouring relation by recording not
|
||||
only which boundary colourings extend across $T$, but also how the
|
||||
two-colour Kempe cycles are routed through the annular tire region.
|
||||
\end{definition}
|
||||
|
||||
The annular structure of a tire is useful in two distinct ways. First,
|
||||
it gives a bounded transition region between level cycles: the colouring
|
||||
of the annular medial cycle controls, and in many cases determines, the
|
||||
colouring of the remaining medial tire vertices. Thus the number of
|
||||
possible transition states is bounded in terms of the annular structure,
|
||||
rather than the total size of the subtree below the tire. Second, it
|
||||
describes how the outer level cycle and the inner level cycles are
|
||||
related by Kempe arcs. The level cycles are the gluing interfaces, while
|
||||
the annular tire is the transition operator between them.
|
||||
|
||||
\begin{definition}[Kempe-compatible gluing]
|
||||
Let $T$ be a medial tire region and let $U$ be a child region glued to
|
||||
$T$ along a common level cycle $C$. Thus $C$ is an inner level cycle of
|
||||
$T$ and the outer level cycle of $U$.
|
||||
|
||||
Let
|
||||
\[
|
||||
\kappa_T=(\alpha_T,\pi^T_{12},\pi^T_{23},\pi^T_{31})
|
||||
\in \mathcal K_T
|
||||
\]
|
||||
and
|
||||
\[
|
||||
\kappa_U=(\alpha_U,\pi^U_{12},\pi^U_{23},\pi^U_{31})
|
||||
\in \mathcal K_U.
|
||||
\]
|
||||
We say that $\kappa_T$ and $\kappa_U$ are \emph{Kempe-compatible along
|
||||
$C$} if:
|
||||
\begin{enumerate}
|
||||
\item the boundary colourings agree on $C$:
|
||||
\[
|
||||
\alpha_T|_{V(C)}=\alpha_U|_{V(C)};
|
||||
\]
|
||||
\item for each colour pair
|
||||
\[
|
||||
P\in\{\{1,2\},\{2,3\},\{3,1\}\},
|
||||
\]
|
||||
the pairings $\pi^T_P$ and $\pi^U_P$ compose along the
|
||||
$P$-coloured incidences of $C$ without producing an unpaired endpoint.
|
||||
\end{enumerate}
|
||||
When these conditions hold, the composed pairings determine a
|
||||
Kempe-enhanced boundary state on the exposed boundary of
|
||||
$T\cup_C U$.
|
||||
\end{definition}
|
||||
|
||||
In these terms, gluing local colourings is not merely a matter of
|
||||
matching boundary colours. The colourings must also route their
|
||||
two-colour Kempe arcs compatibly across every shared level cycle. The
|
||||
ordinary restriction relation records whether a boundary colouring can
|
||||
be extended locally; the Kempe-enhanced relation additionally records
|
||||
the conservation of Kempe-cycle flow through the annular transition
|
||||
region.
|
||||
|
||||
For a tire with one outer level cycle and several inner level cycles,
|
||||
\[
|
||||
\partial T=C_0\sqcup C_1\sqcup\cdots\sqcup C_m,
|
||||
\]
|
||||
the parent tire may correlate the boundary states on the different
|
||||
inner cycles. The Kempe-enhanced relation records this correlation as
|
||||
a system of pairings among the $P$-coloured incidences of all boundary
|
||||
level cycles simultaneously. Thus one should view a medial tire as a
|
||||
multi-output transition operator
|
||||
\[
|
||||
\mathcal K_T:
|
||||
C_0 \leadsto (C_1,\ldots,C_m),
|
||||
\]
|
||||
rather than as an independent collection of binary transitions.
|
||||
|
||||
The guiding principle is therefore:
|
||||
|
||||
\begin{quote}
|
||||
Level cycles are the interfaces used for gluing, while annular tire
|
||||
regions are the bounded transition regions that route Kempe cycles
|
||||
between those interfaces.
|
||||
\end{quote}
|
||||
|
||||
|
||||
\begin{thebibliography}{9}
|
||||
|
||||
\bibitem{bauerfeld-medial-tire}
|
||||
E.~Bauerfeld,
|
||||
\emph{Medial Tire Decompositions of Plane Triangulations},
|
||||
manuscript (math-research repository), 2026.
|
||||
|
||||
\bibitem{bauerfeld-nested-tire-decompositions}
|
||||
E.~Bauerfeld,
|
||||
\emph{Nested Tire Decompositions of Plane Triangulations},
|
||||
manuscript (math-research repository), 2026.
|
||||
|
||||
\bibitem{tait-original}
|
||||
P.~G. Tait,
|
||||
\emph{Remarks on the colourings of maps},
|
||||
Proceedings of the Royal Society of Edinburgh \textbf{10} (1880),
|
||||
729--729.
|
||||
|
||||
\end{thebibliography}
|
||||
|
||||
\end{document}
|
||||
@@ -0,0 +1,286 @@
|
||||
"""Draw the walk-depth labelling and cut of a medial tire decomposition.
|
||||
|
||||
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 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 59 > panels.tex
|
||||
.venv/bin/python draw_medial_tire_cut.py -n 20 --seed 59 --whole > whole.tex
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import math
|
||||
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,
|
||||
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, min_degree=min_degree, attempts=attempts)
|
||||
panels = []
|
||||
for d in sorted(result["results"]):
|
||||
rec = result["results"][d]
|
||||
panels.append(to_tikz(rec["g"], depth=rec["depth"], cuts=rec["cuts"],
|
||||
entry_edge=rec["entry_edge"], scale=scale))
|
||||
return result, panels
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Figure 3: the source graph and midpoint drawing of the whole medial graph.
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
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 _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 _edge_label(edge) -> str:
|
||||
u, v = edge
|
||||
return f"${u}\\!{{-}}\\!{v}$"
|
||||
|
||||
|
||||
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"]):
|
||||
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(" 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_med(edge):
|
||||
x, y = medial_pos[edge]
|
||||
return f"({x:.3f},{y:.3f})"
|
||||
|
||||
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,
|
||||
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 7.0))
|
||||
return
|
||||
|
||||
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)")
|
||||
for d, panel in zip(treads, panels):
|
||||
g = result["results"][d]["g"]
|
||||
print(f"% --- tread {d}: |A(T)|={g.n} word={g.tooth_word} "
|
||||
f"bites={sorted(g.bites)} ---")
|
||||
print(panel)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,388 @@
|
||||
"""Walk-depth labelling and cut of a full medial tire graph.
|
||||
|
||||
Implements the procedure of Definition 2.1 ("Walk-depth labelling and cut") of
|
||||
the *Medial Tire Cuts* paper:
|
||||
|
||||
1. Pick an arbitrary up tooth, the entry tooth; it has walk depth d.
|
||||
2. Traverse all teeth bounding the inner face incident to the entry tooth
|
||||
clockwise until reaching the entry tooth, incrementing the walk depth by 1
|
||||
for each tooth traversed.
|
||||
3. On reaching the last tooth in the face, perform a cut by duplicating the
|
||||
annular vertex at which the traversal closes (the annular vertex shared by
|
||||
the last tooth and the closing tooth).
|
||||
4. Find the tooth t of highest walk depth that is a member of a bite.
|
||||
5. If t is incident to a face F with unlabelled teeth, traverse the teeth of F
|
||||
starting from t in the direction of the unlabelled tooth incident to t
|
||||
(sharing an annular vertex), incrementing the walk depth as you go.
|
||||
6. Repeat steps 3-5 until all teeth are labelled.
|
||||
|
||||
The full medial tire graph model (annular cycle A(T), up/down teeth, bites, the
|
||||
auxiliary plane graph B(T) and its inner faces) is the one from the companion
|
||||
``full_medial_tire_generator.py`` of the medial tire decompositions paper, which
|
||||
we import.
|
||||
|
||||
Teeth are identified with the annular edges that carry them: edge i sits on the
|
||||
annular vertices a_i and a_{(i+1) mod n} and carries exactly one tooth. A bite
|
||||
(i, j) carries two teeth, one on edge i and one on edge j, that share the bite
|
||||
apex p. The inner non-tooth faces of B(T) are the root face (written ``None``)
|
||||
and one inner-gap face per bite.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import math
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Import the full medial tire model from the companion paper's experiments.
|
||||
_GEN_DIR = os.path.normpath(os.path.join(
|
||||
os.path.dirname(__file__), "..", "..",
|
||||
"medial_tire_decompositions_of_plane_triangulations", "experiments",
|
||||
))
|
||||
sys.path.insert(0, _GEN_DIR)
|
||||
|
||||
from full_medial_tire_generator import ( # noqa: E402
|
||||
FullMedialTireGraph,
|
||||
has_incident_bite,
|
||||
innermost_bite,
|
||||
satisfies_bite_face_condition,
|
||||
)
|
||||
|
||||
Face = "tuple[int, int] | None" # a bite (i, j), or None for the root face
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Face structure of B(T).
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def parent_face(graph: FullMedialTireGraph, bite: tuple[int, int]) -> Face:
|
||||
"""The face directly enclosing ``bite``: the minimal-span bite strictly
|
||||
containing it, or the root face ``None``."""
|
||||
i, j = bite
|
||||
enclosing = [b for b in graph.bites if b[0] < i and b[1] > j]
|
||||
if not enclosing:
|
||||
return None
|
||||
return min(enclosing, key=lambda b: b[1] - b[0])
|
||||
|
||||
|
||||
def door_bite(graph: FullMedialTireGraph, edge: int) -> tuple[int, int] | None:
|
||||
"""The bite that ``edge`` is a door of (i.e. a bite edge), or None."""
|
||||
for b in graph.bites:
|
||||
if edge in b:
|
||||
return b
|
||||
return None
|
||||
|
||||
|
||||
def faces_bordered(graph: FullMedialTireGraph, edge: int) -> list[Face]:
|
||||
"""The inner non-tooth faces whose boundary the tooth on ``edge`` lies on.
|
||||
|
||||
A bite door borders two faces (its bite's gap and that bite's parent); any
|
||||
other tooth borders the single face directly containing its edge.
|
||||
"""
|
||||
bite = door_bite(graph, edge)
|
||||
if bite is not None:
|
||||
return [bite, parent_face(graph, bite)]
|
||||
return [innermost_bite(edge, graph.bites)]
|
||||
|
||||
|
||||
def face_boundary(graph: FullMedialTireGraph, face: Face) -> list[int]:
|
||||
"""The teeth (annular edges) bounding ``face``, in clockwise cyclic order.
|
||||
|
||||
Clockwise is increasing edge index. For the root face the boundary is read
|
||||
around the whole cycle; for a bite gap (i, j) it is read along the arc
|
||||
i, i+1, ..., j and closes through the bite apex. Edges enclosed by a child
|
||||
bite are skipped (they belong to the child's gap face).
|
||||
"""
|
||||
n = graph.n
|
||||
arc = range(n) if face is None else range(face[0], face[1] + 1)
|
||||
return [k for k in arc if face in faces_bordered(graph, k)]
|
||||
|
||||
|
||||
def all_faces(graph: FullMedialTireGraph) -> list[Face]:
|
||||
return [None] + sorted(graph.bites)
|
||||
|
||||
|
||||
def shared_annular_vertex(graph: FullMedialTireGraph, e1: int, e2: int) -> int | None:
|
||||
"""The annular vertex a_k shared by edges ``e1`` and ``e2``, or None."""
|
||||
n = graph.n
|
||||
common = {e1, (e1 + 1) % n} & {e2, (e2 + 1) % n}
|
||||
return next(iter(common)) if common else None
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# The walk-depth labelling and cut.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
class Cut:
|
||||
"""A cut performed when a face traversal closes: the duplicated annular
|
||||
vertex, together with the last labelled tooth and the closing tooth that
|
||||
share it, and the face being closed."""
|
||||
|
||||
__slots__ = ("vertex", "last_tooth", "closing_tooth", "face", "order")
|
||||
|
||||
def __init__(self, vertex, last_tooth, closing_tooth, face, order):
|
||||
self.vertex = vertex
|
||||
self.last_tooth = last_tooth
|
||||
self.closing_tooth = closing_tooth
|
||||
self.face = face
|
||||
self.order = order
|
||||
|
||||
def __repr__(self):
|
||||
f = "root" if self.face is None else f"bite{self.face}"
|
||||
return (f"Cut(order={self.order}, a{self.vertex}, "
|
||||
f"last=e{self.last_tooth}, closing=e{self.closing_tooth}, face={f})")
|
||||
|
||||
|
||||
def label_and_cut(graph: FullMedialTireGraph, entry_edge: int,
|
||||
start_depth: int = 0) -> tuple[dict[int, int], list[Cut]]:
|
||||
"""Run the procedure starting from up tooth ``entry_edge``.
|
||||
|
||||
Returns ``(depth, cuts)`` where ``depth`` maps each annular edge (tooth) to
|
||||
its walk depth, and ``cuts`` is the list of cuts in the order performed.
|
||||
"""
|
||||
if graph.tooth_word[entry_edge] != "U":
|
||||
raise ValueError(f"entry edge {entry_edge} is not an up tooth")
|
||||
|
||||
depth: dict[int, int] = {}
|
||||
cuts: list[Cut] = []
|
||||
counter = start_depth
|
||||
|
||||
def traverse(face: Face, start_edge: int, is_entry: bool) -> None:
|
||||
nonlocal counter
|
||||
boundary = face_boundary(graph, face)
|
||||
m = len(boundary)
|
||||
pos = boundary.index(start_edge)
|
||||
if is_entry:
|
||||
depth[start_edge] = counter
|
||||
counter += 1
|
||||
direction = +1
|
||||
else:
|
||||
# head toward the unlabelled tooth incident to the door t
|
||||
direction = +1 if boundary[(pos + 1) % m] not in depth else -1
|
||||
last_new = start_edge
|
||||
i = pos
|
||||
while True:
|
||||
i = (i + direction) % m
|
||||
edge = boundary[i]
|
||||
if edge in depth: # the closing tooth
|
||||
cuts.append(Cut(
|
||||
vertex=shared_annular_vertex(graph, last_new, edge),
|
||||
last_tooth=last_new, closing_tooth=edge,
|
||||
face=face, order=len(cuts),
|
||||
))
|
||||
return
|
||||
depth[edge] = counter
|
||||
counter += 1
|
||||
last_new = edge
|
||||
|
||||
# Steps 1-3: the entry face.
|
||||
traverse(innermost_bite(entry_edge, graph.bites), entry_edge, is_entry=True)
|
||||
|
||||
# Steps 4-6: descend (or ascend) through bites, deepest first. The root
|
||||
# face is ``None``, so we use a distinct sentinel for "no unlabelled face".
|
||||
_MISSING = object()
|
||||
while len(depth) < graph.n:
|
||||
labelled_bite_teeth = sorted(
|
||||
(e for e in depth if door_bite(graph, e) is not None),
|
||||
key=lambda e: depth[e], reverse=True,
|
||||
)
|
||||
for t in labelled_bite_teeth:
|
||||
target = next((F for F in faces_bordered(graph, t)
|
||||
if any(e not in depth for e in face_boundary(graph, F))),
|
||||
_MISSING)
|
||||
if target is not _MISSING:
|
||||
traverse(target, t, is_entry=False)
|
||||
break
|
||||
else:
|
||||
break # no progress possible
|
||||
|
||||
return depth, cuts
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# TikZ rendering.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def _coords(graph: FullMedialTireGraph,
|
||||
r_ann=1.0, r_up=1.46, r_down=0.60) -> dict[str, tuple[float, float]]:
|
||||
n = graph.n
|
||||
|
||||
def ang(k): # a_0 at the top, increasing k clockwise
|
||||
return math.radians(90.0 - k * 360.0 / n)
|
||||
|
||||
def edge_mid_dir(i): # angle of the bisector of edge i's two endpoints
|
||||
a0, a1 = ang(i), ang((i + 1) % n)
|
||||
return math.atan2(math.sin(a0) + math.sin(a1), math.cos(a0) + math.cos(a1))
|
||||
|
||||
pos = {f"a{k}": (r_ann * math.cos(ang(k)), r_ann * math.sin(ang(k)))
|
||||
for k in range(n)}
|
||||
for i in graph.up_edges:
|
||||
a = edge_mid_dir(i)
|
||||
pos[f"u{i}"] = (r_up * math.cos(a), r_up * math.sin(a))
|
||||
for i in graph.singleton_down_edges:
|
||||
a = edge_mid_dir(i)
|
||||
pos[f"d{i}"] = (r_down * math.cos(a), r_down * math.sin(a))
|
||||
for (i, j) in graph.bites:
|
||||
pts = [pos[f"a{i}"], pos[f"a{(i + 1) % n}"],
|
||||
pos[f"a{j}"], pos[f"a{(j + 1) % n}"]]
|
||||
cx = sum(p[0] for p in pts) / 4.0
|
||||
cy = sum(p[1] for p in pts) / 4.0
|
||||
pos[f"p{i}_{j}"] = (0.9 * cx, 0.9 * cy)
|
||||
return pos
|
||||
|
||||
|
||||
def _edge_midpoint(pos, graph, edge):
|
||||
n = graph.n
|
||||
a, b = pos[f"a{edge}"], pos[f"a{(edge + 1) % n}"]
|
||||
return (0.5 * (a[0] + b[0]), 0.5 * (a[1] + b[1]))
|
||||
|
||||
|
||||
def to_tikz(graph: FullMedialTireGraph,
|
||||
depth: dict[int, int] | None = None,
|
||||
cuts: list[Cut] | None = None,
|
||||
entry_edge: int | None = None,
|
||||
scale: float = 2.2) -> str:
|
||||
"""A standalone ``tikzpicture`` for ``graph``; if ``depth`` is given, draw
|
||||
the walk-depth labels and (with ``cuts``) the cut marks."""
|
||||
pos = _coords(graph)
|
||||
n = graph.n
|
||||
L = []
|
||||
A = L.append
|
||||
A(f"\\begin{{tikzpicture}}[scale={scale},")
|
||||
A(" ann/.style={circle, fill=black, inner sep=1.0pt},")
|
||||
A(" upv/.style={circle, draw=blue!70!black, fill=blue!12, inner sep=1.4pt},")
|
||||
A(" downv/.style={circle, draw=red!70!black, fill=red!12, inner sep=1.4pt},")
|
||||
A(" bitev/.style={circle, draw=red!70!black, fill=red!32, inner sep=1.7pt},")
|
||||
A(" cyc/.style={black, line width=1.0pt},")
|
||||
A(" tth/.style={black!55, line width=0.4pt},")
|
||||
A(" lbl/.style={font=\\scriptsize},")
|
||||
A(" dlbl/.style={font=\\scriptsize\\bfseries, text=black},")
|
||||
A(" cut/.style={red!80!black, line width=1.3pt},")
|
||||
A(" cutlbl/.style={font=\\tiny, text=red!75!black}]")
|
||||
|
||||
def pt(name):
|
||||
x, y = pos[name]
|
||||
return f"({x:.3f},{y:.3f})"
|
||||
|
||||
# annular cycle
|
||||
cyc = "--".join(pt(f"a{k}") for k in range(n)) + "--cycle"
|
||||
A(f"\\draw[cyc] {cyc};")
|
||||
# spokes
|
||||
for i in graph.up_edges:
|
||||
A(f"\\draw[tth] {pt(f'u{i}')}--{pt(f'a{i}')} {pt(f'u{i}')}--{pt(f'a{(i+1)%n}')};")
|
||||
for i in graph.singleton_down_edges:
|
||||
A(f"\\draw[tth] {pt(f'd{i}')}--{pt(f'a{i}')} {pt(f'd{i}')}--{pt(f'a{(i+1)%n}')};")
|
||||
for (i, j) in graph.bites:
|
||||
apex = f"p{i}_{j}"
|
||||
for e in (i, j):
|
||||
A(f"\\draw[tth] {pt(apex)}--{pt(f'a{e}')} {pt(apex)}--{pt(f'a{(e+1)%n}')};")
|
||||
# vertices
|
||||
for k in range(n):
|
||||
A(f"\\node[ann] at {pt(f'a{k}')} {{}};")
|
||||
for i in graph.up_edges:
|
||||
A(f"\\node[upv] at {pt(f'u{i}')} {{}};")
|
||||
for i in graph.singleton_down_edges:
|
||||
A(f"\\node[downv] at {pt(f'd{i}')} {{}};")
|
||||
for (i, j) in sorted(graph.bites):
|
||||
A(f"\\node[bitev] at {pt(f'p{i}_{j}')} {{}};")
|
||||
|
||||
# walk-depth labels: placed along the spoke from apex toward the edge mid
|
||||
if depth is not None:
|
||||
for edge in range(n):
|
||||
apex = graph.apex_of_edge(edge)
|
||||
ax, ay = pos[apex]
|
||||
mx, my = _edge_midpoint(pos, graph, edge)
|
||||
f = 0.5
|
||||
lx, ly = ax + f * (mx - ax), ay + f * (my - ay)
|
||||
A(f"\\node[dlbl] at ({lx:.3f},{ly:.3f}) {{{depth[edge]}}};")
|
||||
|
||||
# cut marks: a short red slit across the duplicated annular vertex
|
||||
if cuts:
|
||||
for c in cuts:
|
||||
if c.vertex is None:
|
||||
continue
|
||||
vx, vy = pos[f"a{c.vertex}"]
|
||||
rad = math.atan2(vy, vx)
|
||||
dx, dy = 0.16 * math.cos(rad), 0.16 * math.sin(rad)
|
||||
A(f"\\draw[cut] ({vx-dx:.3f},{vy-dy:.3f})--({vx+dx:.3f},{vy+dy:.3f});")
|
||||
lx, ly = vx + 0.30 * math.cos(rad), vy + 0.30 * math.sin(rad)
|
||||
A(f"\\node[cutlbl] at ({lx:.3f},{ly:.3f}) {{cut {c.order+1}}};")
|
||||
|
||||
if entry_edge is not None:
|
||||
ex, ey = pos[graph.apex_of_edge(entry_edge)]
|
||||
rad = math.atan2(ey, ex)
|
||||
tx, ty = ex + 0.34 * math.cos(rad), ey + 0.34 * math.sin(rad)
|
||||
A(f"\\node[lbl, text=blue!60!black] at ({tx:.3f},{ty:.3f}) {{entry}};")
|
||||
|
||||
A("\\end{tikzpicture}")
|
||||
return "\n".join(L)
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# Worked example and CLI.
|
||||
# ---------------------------------------------------------------------------
|
||||
|
||||
def worked_example() -> FullMedialTireGraph:
|
||||
"""A clean 8-tooth piece: one bite (0,4), three down singletons 1,2,3 in its
|
||||
gap, three up teeth 5,6,7 in the root face."""
|
||||
return FullMedialTireGraph(n=8, tooth_word="DDDDDUUU", bites=frozenset({(0, 4)}))
|
||||
|
||||
|
||||
def _check(graph: FullMedialTireGraph) -> None:
|
||||
assert not has_incident_bite(graph.bites, graph.n), "bite uses incident edges"
|
||||
assert satisfies_bite_face_condition(graph.tooth_word, graph.bites), \
|
||||
"violates the bite-face condition"
|
||||
assert graph.tooth_word.count("U") >= 3, "fewer than three up teeth"
|
||||
|
||||
|
||||
def _describe(graph, depth, cuts) -> str:
|
||||
lines = ["edge type walk-depth"]
|
||||
for e in range(graph.n):
|
||||
t = graph.tooth_word[e]
|
||||
kind = {"U": "up"}.get(t, "down")
|
||||
if door_bite(graph, e) is not None:
|
||||
kind = "bite"
|
||||
lines.append(f" e{e} {kind:<5} {depth[e]}")
|
||||
lines.append("cuts (in order):")
|
||||
for c in cuts:
|
||||
f = "root" if c.face is None else f"bite{c.face}"
|
||||
lines.append(f" cut {c.order+1}: duplicate a{c.vertex} "
|
||||
f"(closing tooth e{c.closing_tooth} of {f})")
|
||||
return "\n".join(lines)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(description=__doc__,
|
||||
formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument("--entry", default="u5",
|
||||
help="entry up tooth, as an edge index or apex name like u5")
|
||||
parser.add_argument("--start-depth", type=int, default=0)
|
||||
parser.add_argument("--tikz", choices=["plain", "labelled", "both"],
|
||||
help="emit TikZ for the worked example")
|
||||
args = parser.parse_args()
|
||||
|
||||
entry = args.entry
|
||||
edge = int(entry[1:]) if isinstance(entry, str) and entry.startswith("u") else int(entry)
|
||||
|
||||
graph = worked_example()
|
||||
_check(graph)
|
||||
depth, cuts = label_and_cut(graph, edge, start_depth=args.start_depth)
|
||||
|
||||
if args.tikz == "plain":
|
||||
print(to_tikz(graph))
|
||||
elif args.tikz == "labelled":
|
||||
print(to_tikz(graph, depth=depth, cuts=cuts, entry_edge=edge))
|
||||
elif args.tikz == "both":
|
||||
print("% --- plain ---")
|
||||
print(to_tikz(graph))
|
||||
print("% --- labelled + cut ---")
|
||||
print(to_tikz(graph, depth=depth, cuts=cuts, entry_edge=edge))
|
||||
else:
|
||||
print(f"worked example: n={graph.n} word={graph.tooth_word} "
|
||||
f"bites={sorted(graph.bites)} entry=e{edge}")
|
||||
print(_describe(graph, depth, cuts))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,414 @@
|
||||
"""Medial tire cut experiment.
|
||||
|
||||
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), 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.
|
||||
4. Walk-depth label and cut each full medial tire graph, chaining the labels
|
||||
down the tire tree, and assemble one final cut graph of M(G) with a global
|
||||
label map.
|
||||
|
||||
This script produces *data* (the final cut graph and its labels); it draws
|
||||
nothing. Anything for the paper (figures) lives in a separate script that
|
||||
imports ``run_experiment`` from here.
|
||||
|
||||
Chaining rule (walk depths across the tire tree).
|
||||
* The root tread (no recognised parent) is entered at an arbitrary up tooth
|
||||
with walk depth 0.
|
||||
* A child tread is entered at the up tooth whose apex is the *same medial
|
||||
vertex* as the parent's down tooth of lowest walk depth -- a parent down
|
||||
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``.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import random
|
||||
import subprocess
|
||||
import sys
|
||||
|
||||
import networkx as nx
|
||||
|
||||
# Reuse the realization pipeline from the medial tire decompositions paper, and
|
||||
# the walk-depth labelling/cut from this paper's companion script.
|
||||
_HERE = os.path.dirname(os.path.abspath(__file__))
|
||||
_MTD = os.path.normpath(os.path.join(
|
||||
_HERE, "..", "..",
|
||||
"medial_tire_decompositions_of_plane_triangulations", "experiments"))
|
||||
sys.path.insert(0, _MTD)
|
||||
sys.path.insert(0, _HERE)
|
||||
|
||||
from tire_realization_analysis import ( # noqa: E402
|
||||
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
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# 4. Walk-depth labelling and cut, chained down the tire tree.
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def _apex_vertex(g, bij, edge):
|
||||
"""The medial vertex that is the apex of the tooth on annular ``edge``."""
|
||||
return bij[g.apex_of_edge(edge)]
|
||||
|
||||
|
||||
def _label_treads(treads, results):
|
||||
"""Fill ``results[d]`` with the walk-depth labelling and cuts for each
|
||||
recognised tread ``d``, chaining child entries to parent down teeth."""
|
||||
for d in sorted(treads):
|
||||
g, bij = treads[d]
|
||||
parent = treads.get(d - 1)
|
||||
if parent is None:
|
||||
entry_edge, start_depth = g.up_edges[0], 0 # arbitrary root entry
|
||||
else:
|
||||
pg, pbij = parent
|
||||
pdepth = results[d - 1]["depth"]
|
||||
# parent down teeth, lowest walk depth first
|
||||
down = sorted((pdepth[k], _apex_vertex(pg, pbij, k))
|
||||
for k in pg.down_edges)
|
||||
child_up_apex = {bij[f"u{m}"]: m for m in g.up_edges}
|
||||
entry_edge = start_depth = None
|
||||
for value, apex in down:
|
||||
if apex in child_up_apex:
|
||||
entry_edge, start_depth = child_up_apex[apex], value + 1
|
||||
break
|
||||
if entry_edge is None: # no shared apex (degenerate); root-style
|
||||
entry_edge, start_depth = g.up_edges[0], 0
|
||||
depth, cuts = label_and_cut(g, entry_edge, start_depth=start_depth)
|
||||
results[d] = {"g": g, "bij": bij, "entry_edge": entry_edge,
|
||||
"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, cap_cuts=None):
|
||||
"""Apply every tread's cuts to M(G).
|
||||
|
||||
Each cut duplicates an annular medial vertex, splitting its four incident
|
||||
medial edges along the slit between the two teeth meeting there: the tooth
|
||||
on the previous annular edge (with that edge's far annular vertex) goes to
|
||||
one copy, the tooth on the next annular edge to the other.
|
||||
|
||||
Returns ``(H, label_records, warnings)`` where ``H`` is the cut graph (a
|
||||
networkx graph whose split vertices are keyed ``(medial_vertex, "A"/"B",
|
||||
tread)``) and ``label_records`` lists every tooth's walk depth.
|
||||
"""
|
||||
# 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
|
||||
for c in results[d]["cuts"]:
|
||||
kk = c.vertex
|
||||
if kk is None:
|
||||
continue
|
||||
mv = bij[f"a{kk}"]
|
||||
if mv in split:
|
||||
warnings.append(f"annular vertex a{kk} of tread {d} cut twice; "
|
||||
f"second cut not applied")
|
||||
continue
|
||||
e_prev, e_next = (kk - 1) % n, kk
|
||||
copy_a = (mv, "A", d)
|
||||
copy_b = (mv, "B", d)
|
||||
split[mv] = {
|
||||
bij[f"a{(kk - 1) % n}"]: copy_a,
|
||||
_apex_vertex(g, bij, e_prev): copy_a,
|
||||
bij[f"a{(kk + 1) % n}"]: copy_b,
|
||||
_apex_vertex(g, bij, e_next): copy_b,
|
||||
}
|
||||
|
||||
def resolve(node, other):
|
||||
return split[node][other] if node in split else node
|
||||
|
||||
H = nx.Graph()
|
||||
H.add_nodes_from(v for v in M.nodes() if v not in split)
|
||||
for v, copies in split.items():
|
||||
H.add_nodes_from(set(copies.values()))
|
||||
for u, v in M.edges():
|
||||
H.add_edge(resolve(u, v), resolve(v, u))
|
||||
|
||||
label_records = []
|
||||
for d in sorted(results):
|
||||
g, bij, depth = results[d]["g"], results[d]["bij"], results[d]["depth"]
|
||||
for k in range(g.n):
|
||||
role = ("up" if g.tooth_word[k] == "U"
|
||||
else "bite" if door_bite(g, k) is not None else "down")
|
||||
label_records.append({
|
||||
"tread": d, "edge": k, "role": role,
|
||||
"apex": _apex_vertex(g, bij, k), "walk": depth[k],
|
||||
})
|
||||
return H, label_records, warnings
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Driver.
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
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)),
|
||||
``results`` (dict depth -> labelling/cut record), ``skipped`` (list of
|
||||
(depth, reason)), ``cut_graph`` (networkx graph), ``labels`` (list of tooth
|
||||
records), ``warnings``.
|
||||
"""
|
||||
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-{graph_seed}").choice(sorted(G.nodes()))
|
||||
levels = nx.single_source_shortest_path_length(G, source)
|
||||
|
||||
treads, skipped = {}, []
|
||||
for d in range(max(levels.values())):
|
||||
tread = extract_tread(faces, levels, d)
|
||||
if tread is None:
|
||||
skipped.append((d, "no tread faces"))
|
||||
continue
|
||||
if len(tread["up"]) < 3:
|
||||
skipped.append((d, f"only {len(tread['up'])} up teeth"))
|
||||
continue
|
||||
rec = recognise(medial_tire_facemodel(tread["tread_faces"]), tread)
|
||||
if rec is None:
|
||||
skipped.append((d, "not a valid full medial tire graph"))
|
||||
continue
|
||||
treads[d] = rec
|
||||
|
||||
results = {}
|
||||
_label_treads(treads, 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, "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,
|
||||
}
|
||||
|
||||
|
||||
# --------------------------------------------------------------------------- #
|
||||
# Serialization / reporting.
|
||||
# --------------------------------------------------------------------------- #
|
||||
|
||||
def _vname(v) -> str:
|
||||
"""Stable string name for a medial vertex (an edge key) or a split node."""
|
||||
if isinstance(v, tuple) and len(v) == 3 and v[1] in ("A", "B"):
|
||||
mv, side, d = v
|
||||
return f"{mv[0]}-{mv[1]}#{side}@T{d}"
|
||||
return f"{v[0]}-{v[1]}"
|
||||
|
||||
|
||||
def to_json(result: dict) -> dict:
|
||||
res = result["results"]
|
||||
treads_out = []
|
||||
for d in sorted(res):
|
||||
g, bij = res[d]["g"], res[d]["bij"]
|
||||
depth, cuts = res[d]["depth"], res[d]["cuts"]
|
||||
teeth = [{
|
||||
"edge": k,
|
||||
"role": ("up" if g.tooth_word[k] == "U"
|
||||
else "bite" if door_bite(g, k) is not None else "down"),
|
||||
"apex": _vname(_apex_vertex(g, bij, k)),
|
||||
"walk": depth[k],
|
||||
} for k in range(g.n)]
|
||||
treads_out.append({
|
||||
"depth": d, "n": g.n, "tooth_word": g.tooth_word,
|
||||
"bites": sorted(list(b) for b in g.bites),
|
||||
"entry_edge": res[d]["entry_edge"], "start_depth": res[d]["start_depth"],
|
||||
"teeth": teeth,
|
||||
"cuts": [{
|
||||
"annular_index": c.vertex,
|
||||
"annular_vertex": _vname(bij[f"a{c.vertex}"]),
|
||||
"last_edge": c.last_tooth, "closing_edge": c.closing_tooth,
|
||||
} for c in cuts],
|
||||
})
|
||||
H = result["cut_graph"]
|
||||
return {
|
||||
"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()),
|
||||
"edges": sorted([_vname(u), _vname(v)] for u, v in H.edges()),
|
||||
},
|
||||
"labels": [{
|
||||
"tread": r["tread"], "edge": r["edge"], "role": r["role"],
|
||||
"apex": _vname(r["apex"]), "walk": r["walk"],
|
||||
} for r in result["labels"]],
|
||||
"warnings": result["warnings"],
|
||||
}
|
||||
|
||||
|
||||
def summary(result: dict) -> str:
|
||||
H, res = result["cut_graph"], result["results"]
|
||||
lines = [
|
||||
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)}",
|
||||
f"skipped treads: {result['skipped']}",
|
||||
]
|
||||
for d in sorted(res):
|
||||
g = res[d]["g"]
|
||||
ncuts = len(res[d]["cuts"])
|
||||
lines.append(
|
||||
f" tread {d}: |A(T)|={g.n} word={g.tooth_word} "
|
||||
f"bites={sorted(g.bites)} entry=e{res[d]['entry_edge']} "
|
||||
f"start_depth={res[d]['start_depth']} cuts={ncuts}")
|
||||
lines.append(
|
||||
f"final cut graph: {H.number_of_nodes()} vertices, "
|
||||
f"{H.number_of_edges()} edges, "
|
||||
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)
|
||||
|
||||
|
||||
def main() -> None:
|
||||
parser = argparse.ArgumentParser(
|
||||
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
|
||||
parser.add_argument("-n", type=int, default=12, help="number of vertices")
|
||||
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,
|
||||
min_degree=args.min_degree, attempts=args.attempts)
|
||||
print(summary(result))
|
||||
if args.json:
|
||||
with open(args.json, "w") as fh:
|
||||
json.dump(to_json(result), fh, indent=2)
|
||||
print(f"wrote {args.json}")
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
@@ -0,0 +1,29 @@
|
||||
\relax
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Introduction}}{1}{}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{2}{Cutting a full medial tire graph}}{1}{}\protected@file@percent }
|
||||
\newlabel{def:walk-depth-cut}{{2.1}{1}}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\newlabel{rem:closing-tooth}{{2.2}{2}}
|
||||
\newlabel{ex:worked-cut}{{2.3}{2}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{3}{Chaining across the tire tree}}{2}{}\protected@file@percent }
|
||||
\citation{bauerfeld-medial-tire}
|
||||
\@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}{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 {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) 14 JUN 2026 21:05
|
||||
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.
|
||||
@@ -495,35 +495,39 @@ File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv
|
||||
e
|
||||
))
|
||||
[1{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
|
||||
[2] [3] [4] [5] [6] (./paper.aux) )
|
||||
|
||||
LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
|
||||
[2] [3] (./whole_medial_seed59_min5.tikz) [4] [5] (./paper.aux) )
|
||||
Here is how much of TeX's memory you used:
|
||||
13536 strings out of 478268
|
||||
270232 string characters out of 5846347
|
||||
537626 words of memory out of 5000000
|
||||
31366 multiletter control sequences out of 15000+600000
|
||||
476880 words of font info for 57 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,7n,89p,414b,277s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</usr/local/texlive/2022/texmf-dist/fonts/ty
|
||||
pe1/public/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dist/fonts/typ
|
||||
e1/public/amsfonts/cm/cmbx8.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/cmmi5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pu
|
||||
blic/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/publ
|
||||
ic/amsfonts/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public
|
||||
/amsfonts/cm/cmr7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/am
|
||||
sfonts/cm/cmr8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfo
|
||||
nts/cm/cmss10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfon
|
||||
ts/cm/cmsy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfont
|
||||
s/cm/cmsy7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/
|
||||
cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/c
|
||||
m/cmti8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/sym
|
||||
bols/msam10.pfb>
|
||||
Output written on paper.pdf (6 pages, 211901 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:
|
||||
101 PDF objects out of 1000 (max. 8388607)
|
||||
62 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.
@@ -0,0 +1,438 @@
|
||||
%% filename: amsart-template.tex
|
||||
%% American Mathematical Society
|
||||
%% AMS-LaTeX v.2 template for use with amsart
|
||||
%% ====================================================================
|
||||
|
||||
\documentclass{amsart}
|
||||
|
||||
\usepackage{amssymb}
|
||||
\usepackage{graphicx}
|
||||
\usepackage{tikz}
|
||||
\usetikzlibrary{backgrounds}
|
||||
|
||||
\newtheorem{theorem}{Theorem}[section]
|
||||
\newtheorem{lemma}[theorem]{Lemma}
|
||||
\newtheorem{corollary}[theorem]{Corollary}
|
||||
\newtheorem{proposition}[theorem]{Proposition}
|
||||
\newtheorem{conjecture}[theorem]{Conjecture}
|
||||
|
||||
\theoremstyle{definition}
|
||||
\newtheorem{definition}[theorem]{Definition}
|
||||
\newtheorem{example}[theorem]{Example}
|
||||
\newtheorem{xca}[theorem]{Exercise}
|
||||
|
||||
\theoremstyle{remark}
|
||||
\newtheorem{remark}[theorem]{Remark}
|
||||
|
||||
\numberwithin{equation}{section}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\title{Medial Tire Cuts}
|
||||
|
||||
% author one information
|
||||
\author{Eric Bauerfeld}
|
||||
\address{}
|
||||
\curraddr{}
|
||||
\email{}
|
||||
\thanks{}
|
||||
|
||||
\subjclass[2010]{Primary }
|
||||
|
||||
\keywords{plane graph, triangulation, medial graph, tire graph, Tait coloring, Four Colour Theorem}
|
||||
|
||||
\date{}
|
||||
|
||||
\dedicatory{}
|
||||
|
||||
\begin{abstract}
|
||||
Starting from the medial tire decomposition of a plane triangulation, we
|
||||
study the cuts that medial tires make in the full medial graph. We will
|
||||
show how to use medial tires to decompose the medial graph into a tree of
|
||||
three faces.
|
||||
\end{abstract}
|
||||
|
||||
\maketitle
|
||||
|
||||
\section{Introduction}
|
||||
|
||||
This paper builds on the medial tire decomposition
|
||||
of~\cite{bauerfeld-medial-tire}. For a plane triangulation $G$ with
|
||||
fixed embedding we use freely the terminology and notation introduced
|
||||
there: the full medial graph $M(G)$, its decomposition into full medial
|
||||
tire graphs $\mathsf{M}(T)$ indexed by the treads $T$ of the tire tree
|
||||
$\mathcal{T}(G,S)$ at a level source $S$, the annular medial cycle
|
||||
$A(T)$, and the boundary medial vertex sets.
|
||||
|
||||
We will show how to use medial tires to decompose the medial graph into
|
||||
a tree of three faces.
|
||||
|
||||
\section{Cutting a full medial tire graph}
|
||||
|
||||
We first describe a procedure that simultaneously \emph{labels} and
|
||||
\emph{cuts} a single full medial tire graph $\mathsf{M}(T)$ so that,
|
||||
after the cuts, the only faces are the outer face and $3$-faces
|
||||
(triangles)---the teeth of~\cite{bauerfeld-medial-tire}. The labelling
|
||||
assigns to each tooth an integer \emph{walk depth}; the cuts break the
|
||||
cyclic adjacencies of the teeth so that what remains is a tree of
|
||||
$3$-faces.
|
||||
|
||||
By a \emph{cut} we mean the duplication of a single vertex of
|
||||
$\mathsf{M}(T)$: the vertex is split into two copies and the embedding is
|
||||
slit open along it (a planar unzip), separating the faces that meet only
|
||||
at that vertex. A cut therefore reduces the number of bounded faces that
|
||||
are not teeth.
|
||||
|
||||
Throughout we use the teeth, up and down teeth, apexes, bites, the
|
||||
annular medial cycle $A(T)$, and the auxiliary plane graph $B(T)$
|
||||
of~\cite{bauerfeld-medial-tire}. Each tooth is a $3$-face of
|
||||
$\mathsf{M}(T)$, and the inner faces of $B(T)$ (the root face and the
|
||||
bite inner-gap faces) are the larger faces to be cut into teeth.
|
||||
|
||||
\begin{definition}[Walk-depth labelling and cut]
|
||||
\label{def:walk-depth-cut}
|
||||
Let $\mathsf{M}(T)$ be a full medial tire graph. Assign walk depths and
|
||||
cuts as follows.
|
||||
\begin{enumerate}
|
||||
\item Pick an arbitrary up tooth, the \emph{entry tooth}. It has walk
|
||||
depth $d$.
|
||||
\item Traverse all the teeth that bound the inner face incident to the
|
||||
entry tooth clockwise until we reach the entry tooth, incrementing the
|
||||
walk depth by $1$ for each tooth traversed. (The \emph{inner face
|
||||
incident to the entry tooth} is the inner face of $B(T)$ whose boundary
|
||||
contains the annular edge of $A(T)$ carrying the entry tooth.)
|
||||
\item When you reach the last tooth in the face, perform a \emph{cut}
|
||||
by duplicating the annular vertex at which the traversal closes---the
|
||||
annular vertex of $A(T)$ shared by the last tooth and the entry tooth.
|
||||
\item Find the tooth $t$ with the highest walk depth which is a member
|
||||
of a bite.
|
||||
\item If $t$ is incident to a face $F$ with unlabelled teeth, traverse
|
||||
the teeth in $F$ starting from $t$ in the direction of the tooth
|
||||
incident to $t$ which is unlabelled, and increment the walk depth by
|
||||
$1$ as you travel. (Here a tooth is \emph{incident to $t$} when it
|
||||
shares an annular vertex of $A(T)$ with $t$.)
|
||||
\item Repeat steps (3)--(5) until all teeth have been labelled.
|
||||
\end{enumerate}
|
||||
\end{definition}
|
||||
|
||||
\begin{remark}[Closing tooth of a descended face]
|
||||
\label{rem:closing-tooth}
|
||||
For the entry face the traversal of step (2) closes by returning to the
|
||||
entry tooth, so the cut of step (3) duplicates the annular vertex shared
|
||||
by the last tooth and the entry tooth. For a face $F$ entered in step
|
||||
(5), the traversal instead closes upon reaching an already-labelled
|
||||
tooth: the other tooth of the bite through which $F$ was entered. In
|
||||
both cases the cut of step (3) duplicates the annular vertex shared by
|
||||
the last newly labelled tooth and this \emph{closing tooth}. Since both
|
||||
teeth of a bite are labelled while traversing its parent face, every
|
||||
descended face closes on such a tooth.
|
||||
\end{remark}
|
||||
|
||||
\begin{example}[A worked walk-depth labelling and cut]
|
||||
\label{ex:worked-cut}
|
||||
Figure~\ref{fig:worked-cut} shows a full medial tire graph with annular
|
||||
cycle of length $8$, generated by the full medial tire generator
|
||||
of~\cite{bauerfeld-medial-tire}. Its eight teeth are: three up teeth on
|
||||
the annular edges $5,6,7$ in the root face; one bite pairing the annular
|
||||
edges $0$ and $4$; and three singleton down teeth on the annular edges
|
||||
$1,2,3$ lying in that bite's inner-gap face.
|
||||
|
||||
Take the up tooth on edge $5$ as the entry tooth, with walk depth $0$.
|
||||
Its inner face is the root face, bounded by the teeth on edges
|
||||
$5,6,7,0,4$ in clockwise order. Step (2) labels them
|
||||
\[
|
||||
5\mapsto 0,\quad 6\mapsto 1,\quad 7\mapsto 2,\quad
|
||||
0\mapsto 3,\quad 4\mapsto 4,
|
||||
\]
|
||||
and step (3) cuts by duplicating the annular vertex $a_5$ shared by the
|
||||
last tooth (edge $4$) and the entry tooth (edge $5$). The highest-depth
|
||||
bite tooth is now the one on edge $4$ (walk depth $4$); it is incident to
|
||||
the still-unlabelled inner-gap face of the bite $(0,4)$. Entering that
|
||||
face from edge $4$ toward its unlabelled neighbour, step (5) labels the
|
||||
three down teeth
|
||||
\[
|
||||
3\mapsto 5,\quad 2\mapsto 6,\quad 1\mapsto 7,
|
||||
\]
|
||||
and closes on the already-labelled bite tooth of edge $0$, so step (3)
|
||||
cuts by duplicating the annular vertex $a_1$
|
||||
(Remark~\ref{rem:closing-tooth}). All eight teeth are now labelled, and
|
||||
the two cuts leave only the outer face and the eight teeth as
|
||||
$3$-faces. The labelling and cuts are produced by the script
|
||||
\texttt{experiments/medial\_tire\_cut\_labelling.py}.
|
||||
\end{example}
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\begin{tikzpicture}[scale=1.6,
|
||||
ann/.style={circle, fill=black, inner sep=1.0pt},
|
||||
upv/.style={circle, draw=blue!70!black, fill=blue!12, inner sep=1.4pt},
|
||||
downv/.style={circle, draw=red!70!black, fill=red!12, inner sep=1.4pt},
|
||||
bitev/.style={circle, draw=red!70!black, fill=red!32, inner sep=1.7pt},
|
||||
cyc/.style={black, line width=1.0pt},
|
||||
tth/.style={black!55, line width=0.4pt},
|
||||
lbl/.style={font=\scriptsize},
|
||||
dlbl/.style={font=\scriptsize\bfseries, text=black},
|
||||
cut/.style={red!80!black, line width=1.3pt},
|
||||
cutlbl/.style={font=\tiny, text=red!75!black}]
|
||||
\draw[cyc] (0.000,1.000)--(0.707,0.707)--(1.000,0.000)--(0.707,-0.707)--(0.000,-1.000)--(-0.707,-0.707)--(-1.000,-0.000)--(-0.707,0.707)--cycle;
|
||||
\draw[tth] (-1.349,-0.559)--(-0.707,-0.707) (-1.349,-0.559)--(-1.000,-0.000);
|
||||
\draw[tth] (-1.349,0.559)--(-1.000,-0.000) (-1.349,0.559)--(-0.707,0.707);
|
||||
\draw[tth] (-0.559,1.349)--(-0.707,0.707) (-0.559,1.349)--(0.000,1.000);
|
||||
\draw[tth] (0.554,0.230)--(0.707,0.707) (0.554,0.230)--(1.000,0.000);
|
||||
\draw[tth] (0.554,-0.230)--(1.000,0.000) (0.554,-0.230)--(0.707,-0.707);
|
||||
\draw[tth] (0.230,-0.554)--(0.707,-0.707) (0.230,-0.554)--(0.000,-1.000);
|
||||
\draw[tth] (0.000,-0.000)--(0.000,1.000) (0.000,-0.000)--(0.707,0.707);
|
||||
\draw[tth] (0.000,-0.000)--(0.000,-1.000) (0.000,-0.000)--(-0.707,-0.707);
|
||||
\node[ann] at (0.000,1.000) {};
|
||||
\node[ann] at (0.707,0.707) {};
|
||||
\node[ann] at (1.000,0.000) {};
|
||||
\node[ann] at (0.707,-0.707) {};
|
||||
\node[ann] at (0.000,-1.000) {};
|
||||
\node[ann] at (-0.707,-0.707) {};
|
||||
\node[ann] at (-1.000,-0.000) {};
|
||||
\node[ann] at (-0.707,0.707) {};
|
||||
\node[upv] at (-1.349,-0.559) {};
|
||||
\node[upv] at (-1.349,0.559) {};
|
||||
\node[upv] at (-0.559,1.349) {};
|
||||
\node[downv] at (0.554,0.230) {};
|
||||
\node[downv] at (0.554,-0.230) {};
|
||||
\node[downv] at (0.230,-0.554) {};
|
||||
\node[bitev] at (0.000,-0.000) {};
|
||||
\end{tikzpicture}
|
||||
\qquad
|
||||
\begin{tikzpicture}[scale=1.6,
|
||||
ann/.style={circle, fill=black, inner sep=1.0pt},
|
||||
upv/.style={circle, draw=blue!70!black, fill=blue!12, inner sep=1.4pt},
|
||||
downv/.style={circle, draw=red!70!black, fill=red!12, inner sep=1.4pt},
|
||||
bitev/.style={circle, draw=red!70!black, fill=red!32, inner sep=1.7pt},
|
||||
cyc/.style={black, line width=1.0pt},
|
||||
tth/.style={black!55, line width=0.4pt},
|
||||
lbl/.style={font=\scriptsize},
|
||||
dlbl/.style={font=\scriptsize\bfseries, text=black},
|
||||
cut/.style={red!80!black, line width=1.3pt},
|
||||
cutlbl/.style={font=\tiny, text=red!75!black}]
|
||||
\draw[cyc] (0.000,1.000)--(0.707,0.707)--(1.000,0.000)--(0.707,-0.707)--(0.000,-1.000)--(-0.707,-0.707)--(-1.000,-0.000)--(-0.707,0.707)--cycle;
|
||||
\draw[tth] (-1.349,-0.559)--(-0.707,-0.707) (-1.349,-0.559)--(-1.000,-0.000);
|
||||
\draw[tth] (-1.349,0.559)--(-1.000,-0.000) (-1.349,0.559)--(-0.707,0.707);
|
||||
\draw[tth] (-0.559,1.349)--(-0.707,0.707) (-0.559,1.349)--(0.000,1.000);
|
||||
\draw[tth] (0.554,0.230)--(0.707,0.707) (0.554,0.230)--(1.000,0.000);
|
||||
\draw[tth] (0.554,-0.230)--(1.000,0.000) (0.554,-0.230)--(0.707,-0.707);
|
||||
\draw[tth] (0.230,-0.554)--(0.707,-0.707) (0.230,-0.554)--(0.000,-1.000);
|
||||
\draw[tth] (0.000,-0.000)--(0.000,1.000) (0.000,-0.000)--(0.707,0.707);
|
||||
\draw[tth] (0.000,-0.000)--(0.000,-1.000) (0.000,-0.000)--(-0.707,-0.707);
|
||||
\node[ann] at (0.000,1.000) {};
|
||||
\node[ann] at (0.707,0.707) {};
|
||||
\node[ann] at (1.000,0.000) {};
|
||||
\node[ann] at (0.707,-0.707) {};
|
||||
\node[ann] at (0.000,-1.000) {};
|
||||
\node[ann] at (-0.707,-0.707) {};
|
||||
\node[ann] at (-1.000,-0.000) {};
|
||||
\node[ann] at (-0.707,0.707) {};
|
||||
\node[upv] at (-1.349,-0.559) {};
|
||||
\node[upv] at (-1.349,0.559) {};
|
||||
\node[upv] at (-0.559,1.349) {};
|
||||
\node[downv] at (0.554,0.230) {};
|
||||
\node[downv] at (0.554,-0.230) {};
|
||||
\node[downv] at (0.230,-0.554) {};
|
||||
\node[bitev] at (0.000,-0.000) {};
|
||||
\node[dlbl] at (0.177,0.427) {3};
|
||||
\node[dlbl] at (0.704,0.292) {7};
|
||||
\node[dlbl] at (0.704,-0.292) {6};
|
||||
\node[dlbl] at (0.292,-0.704) {5};
|
||||
\node[dlbl] at (-0.177,-0.427) {4};
|
||||
\node[dlbl] at (-1.101,-0.456) {0};
|
||||
\node[dlbl] at (-1.101,0.456) {1};
|
||||
\node[dlbl] at (-0.456,1.101) {2};
|
||||
\draw[cut] (-0.594,-0.594)--(-0.820,-0.820);
|
||||
\node[cutlbl] at (-0.919,-0.919) {cut 1};
|
||||
\draw[cut] (0.594,0.594)--(0.820,0.820);
|
||||
\node[cutlbl] at (0.919,0.919) {cut 2};
|
||||
\node[lbl, text=blue!60!black] at (-1.663,-0.689) {entry};
|
||||
\end{tikzpicture}
|
||||
\caption{A full medial tire graph (left) and its walk-depth labelling and
|
||||
cut (right), from Example~\ref{ex:worked-cut}. 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~1} duplicates $a_5$ as the root-face traversal closes, and
|
||||
\emph{cut~2} duplicates $a_1$ as the bite's inner-gap face closes. After
|
||||
the cuts the only bounded faces are the eight teeth.}
|
||||
\label{fig:worked-cut}
|
||||
\end{figure}
|
||||
|
||||
\section{Chaining across the tire tree}
|
||||
|
||||
Definition~\ref{def:walk-depth-cut} labels and cuts a single full medial
|
||||
tire graph. We extend it to the whole medial graph $M(G)$ through the
|
||||
medial tire decomposition of~\cite{bauerfeld-medial-tire}: the tire tree
|
||||
decomposes $M(G)$ into full medial tire graphs $\mathsf{M}(T)$, one per
|
||||
tread $T$, glued along their boundary medial vertices. A parent tread's
|
||||
inner level cycle is a child tread's outer level cycle, and the boundary
|
||||
medial vertices on that shared cycle belong to both treads.
|
||||
|
||||
The key incidence is this. A \emph{boundary} (singleton) down tooth of a
|
||||
parent tread and the up tooth of the child tread glued to it across the
|
||||
shared level cycle have the \emph{same apex}: both apexes are the same
|
||||
medial vertex of $M(G)$, namely the medial vertex of an edge with both
|
||||
endpoints on the shared level cycle. We use this to carry the walk depth
|
||||
from a parent into its children.
|
||||
|
||||
We label tread by tread, outward from the root:
|
||||
\begin{itemize}
|
||||
\item a tread with no parent in the decomposition---in particular the
|
||||
innermost recognised tread---is treated as a \emph{root} and entered at
|
||||
an arbitrary up tooth with walk depth $0$;
|
||||
\item a child tread is entered at the up tooth whose apex is the parent's
|
||||
boundary down tooth of lowest walk depth; that entry up tooth's walk depth
|
||||
is one more than that down tooth's, and the walk then increments locally
|
||||
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
|
||||
\emph{boundary} (singleton) down teeth of the parent: those lying in a
|
||||
single tread face, whose apex is the shared boundary medial vertex glued to
|
||||
a child up tooth. A bite's two down teeth are \emph{not} eligible. By the
|
||||
definition of a bite in~\cite{bauerfeld-medial-tire} its annular edge borders
|
||||
two tread faces, so a bite tooth is interior to the parent tread and its
|
||||
apex is a boundary medial vertex of no child. Hence ``the down tooth of
|
||||
lowest walk depth'' is read among the boundary down teeth only; a bite of
|
||||
even lower walk depth is skipped.
|
||||
\end{remark}
|
||||
|
||||
Applying every tread's cuts to $M(G)$ assembles the per-tread labellings
|
||||
and cuts into a single cut graph of $M(G)$ together with a global
|
||||
walk-depth label map. This pipeline---random maximal planar graph, medial
|
||||
graph, tire decomposition at a vertex level source, and chained walk-depth
|
||||
labelling and cut---is carried out by the experiment script
|
||||
\texttt{experiments/run\_medial\_tire\_cut\_experiment.py}.
|
||||
|
||||
\begin{example}[A medial tire cut from a random graph]
|
||||
\label{ex:real-cut}
|
||||
Run on a random maximal planar graph on $20$ vertices (seed $72$, level
|
||||
source vertex $9$), the experiment yields a single recognised tread
|
||||
$T_2$, drawn in Figure~\ref{fig:real-cut} with the walk-depth labelling
|
||||
and cut emitted by the graphics companion
|
||||
\texttt{experiments/draw\_medial\_tire\_cut.py}. Its annular cycle has
|
||||
length $8$, with up teeth on annular edges $0,3,4$, singleton down teeth
|
||||
on $1,6,7$, and a bite on the non-incident annular edges $2$ and $5$ (the
|
||||
central shared apex). Entering at the up tooth on edge $0$ with walk
|
||||
depth $0$, the root face is labelled in order ($0,1,2$ then $3,4,5$) and
|
||||
\emph{cut~1} duplicates $a_0$ as it closes; the walk then descends through
|
||||
the bite into its inner-gap face, labelling the two teeth there ($6,7$),
|
||||
and \emph{cut~2} duplicates $a_3$ as that face closes. The two cuts leave
|
||||
only the outer face and the eight teeth as $3$-faces.
|
||||
\end{example}
|
||||
|
||||
\begin{figure}[h]
|
||||
\centering
|
||||
\begin{tikzpicture}[scale=1.6,
|
||||
ann/.style={circle, fill=black, inner sep=1.0pt},
|
||||
upv/.style={circle, draw=blue!70!black, fill=blue!12, inner sep=1.4pt},
|
||||
downv/.style={circle, draw=red!70!black, fill=red!12, inner sep=1.4pt},
|
||||
bitev/.style={circle, draw=red!70!black, fill=red!32, inner sep=1.7pt},
|
||||
cyc/.style={black, line width=1.0pt},
|
||||
tth/.style={black!55, line width=0.4pt},
|
||||
lbl/.style={font=\scriptsize},
|
||||
dlbl/.style={font=\scriptsize\bfseries, text=black},
|
||||
cut/.style={red!80!black, line width=1.3pt},
|
||||
cutlbl/.style={font=\tiny, text=red!75!black}]
|
||||
\draw[cyc] (0.000,1.000)--(0.707,0.707)--(1.000,0.000)--(0.707,-0.707)--(0.000,-1.000)--(-0.707,-0.707)--(-1.000,-0.000)--(-0.707,0.707)--cycle;
|
||||
\draw[tth] (0.559,1.349)--(0.000,1.000) (0.559,1.349)--(0.707,0.707);
|
||||
\draw[tth] (0.559,-1.349)--(0.707,-0.707) (0.559,-1.349)--(0.000,-1.000);
|
||||
\draw[tth] (-0.559,-1.349)--(0.000,-1.000) (-0.559,-1.349)--(-0.707,-0.707);
|
||||
\draw[tth] (0.554,0.230)--(0.707,0.707) (0.554,0.230)--(1.000,0.000);
|
||||
\draw[tth] (-0.554,0.230)--(-1.000,-0.000) (-0.554,0.230)--(-0.707,0.707);
|
||||
\draw[tth] (-0.230,0.554)--(-0.707,0.707) (-0.230,0.554)--(0.000,1.000);
|
||||
\draw[tth] (0.000,-0.318)--(1.000,0.000) (0.000,-0.318)--(0.707,-0.707);
|
||||
\draw[tth] (0.000,-0.318)--(-0.707,-0.707) (0.000,-0.318)--(-1.000,-0.000);
|
||||
\node[ann] at (0.000,1.000) {};
|
||||
\node[ann] at (0.707,0.707) {};
|
||||
\node[ann] at (1.000,0.000) {};
|
||||
\node[ann] at (0.707,-0.707) {};
|
||||
\node[ann] at (0.000,-1.000) {};
|
||||
\node[ann] at (-0.707,-0.707) {};
|
||||
\node[ann] at (-1.000,-0.000) {};
|
||||
\node[ann] at (-0.707,0.707) {};
|
||||
\node[upv] at (0.559,1.349) {};
|
||||
\node[upv] at (0.559,-1.349) {};
|
||||
\node[upv] at (-0.559,-1.349) {};
|
||||
\node[downv] at (0.554,0.230) {};
|
||||
\node[downv] at (-0.554,0.230) {};
|
||||
\node[downv] at (-0.230,0.554) {};
|
||||
\node[bitev] at (0.000,-0.318) {};
|
||||
\node[dlbl] at (0.456,1.101) {0};
|
||||
\node[dlbl] at (0.704,0.292) {1};
|
||||
\node[dlbl] at (0.427,-0.336) {2};
|
||||
\node[dlbl] at (0.456,-1.101) {7};
|
||||
\node[dlbl] at (-0.456,-1.101) {6};
|
||||
\node[dlbl] at (-0.427,-0.336) {3};
|
||||
\node[dlbl] at (-0.704,0.292) {4};
|
||||
\node[dlbl] at (-0.292,0.704) {5};
|
||||
\draw[cut] (0.000,0.840)--(0.000,1.160);
|
||||
\node[cutlbl] at (0.000,1.300) {cut 1};
|
||||
\draw[cut] (0.594,-0.594)--(0.820,-0.820);
|
||||
\node[cutlbl] at (0.919,-0.919) {cut 2};
|
||||
\node[lbl, text=blue!60!black] at (0.689,1.663) {entry};
|
||||
\end{tikzpicture}
|
||||
\caption{The recognised tread $T_2$ of the medial tire decomposition of a
|
||||
random maximal planar graph on $20$ vertices
|
||||
(Example~\ref{ex:real-cut}), 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.}
|
||||
\label{fig:real-cut}
|
||||
\end{figure}
|
||||
|
||||
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_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}
|
||||
|
||||
\begin{thebibliography}{9}
|
||||
|
||||
\bibitem{bauerfeld-medial-tire}
|
||||
E.~Bauerfeld,
|
||||
\emph{Medial Tire Decompositions of Plane Triangulations},
|
||||
manuscript (math-research repository), 2026.
|
||||
|
||||
\end{thebibliography}
|
||||
|
||||
\end{document}
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 262 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 224 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 283 KiB |
@@ -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}
|
||||
@@ -0,0 +1,382 @@
|
||||
% 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}
|
||||
@@ -1,5 +1,4 @@
|
||||
\relax
|
||||
\citation{bauerfeld-medial-pigeonhole}
|
||||
\citation{bauerfeld-nested-tire-decompositions}
|
||||
\citation{bauerfeld-nested-tire-decompositions}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{1}{Introduction}}{1}{}\protected@file@percent }
|
||||
@@ -14,7 +13,7 @@
|
||||
\newlabel{thm:annular-medial-colour-bound}{{3.3}{3}}
|
||||
\newlabel{def:annular-teeth}{{3.4}{3}}
|
||||
\newlabel{rem:teeth-sharing}{{3.5}{3}}
|
||||
\newlabel{rem:up-teeth-count}{{3.6}{4}}
|
||||
\newlabel{rem:up-teeth-count}{{3.6}{3}}
|
||||
\newlabel{def:bite}{{3.7}{4}}
|
||||
\newlabel{rem:bite-face-count}{{3.8}{4}}
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces A full medial tire graph $\mathsf {M}(T)$ illustrating the tooth terminology. The thick cycle is the annular medial cycle $A(T)$, whose black vertices are the annular medial vertices. Each edge of $A(T)$ carries one tooth: up teeth (blue apexes, outer-boundary medial vertices) point into the outer region, and down teeth (red apexes, inner-boundary medial vertices) point into the inner region. The two down teeth meeting at the central shared apex (larger red vertex) form a bite; that shared apex splits the inner region into two faces, one with four down teeth on its boundary and one with none.}}{4}{}\protected@file@percent }
|
||||
@@ -27,17 +26,25 @@
|
||||
\newlabel{fig:medial-annular-cycle-counterexample}{{3}{5}}
|
||||
\newlabel{def:medial-restriction-relation}{{3.10}{5}}
|
||||
\citation{bauerfeld-nested-tire-decompositions}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{4}{Decomposition}}{6}{}\protected@file@percent }
|
||||
\newlabel{cor:medial-tire-decomposition}{{4.1}{6}}
|
||||
\newlabel{def:compatible-family}{{4.2}{6}}
|
||||
\newlabel{prop:gluing-criterion}{{4.3}{6}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{5}{A medial pigeonhole programme}}{6}{}\protected@file@percent }
|
||||
\newlabel{def:medial-boundary-state}{{5.1}{6}}
|
||||
\newlabel{conj:medial-chain-pigeonhole}{{5.2}{7}}
|
||||
\newlabel{conj:medial-route-fct}{{5.3}{7}}
|
||||
\@writefile{toc}{\contentsline {subsection}{\tocsubsection {}{5.1}{Kempe-cycle conservation across medial tires}}{7}{}\protected@file@percent }
|
||||
\newlabel{lem:kempe-cycles}{{5.5}{7}}
|
||||
\newlabel{lem:kempe-conservation}{{5.6}{8}}
|
||||
\newlabel{def:kempe-balanced}{{5.7}{8}}
|
||||
\newlabel{rem:kempe-balance-necessary}{{5.8}{8}}
|
||||
\bibcite{bauerfeld-nested-tire-decompositions}{1}
|
||||
\bibcite{bauerfeld-medial-pigeonhole}{2}
|
||||
\bibcite{tait-original}{3}
|
||||
\bibcite{tait-original}{2}
|
||||
\newlabel{tocindent-1}{0pt}
|
||||
\newlabel{tocindent0}{12.7778pt}
|
||||
\newlabel{tocindent1}{17.77782pt}
|
||||
\newlabel{tocindent2}{29.38873pt}
|
||||
\newlabel{tocindent3}{0pt}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{4}{Decomposition}}{6}{}\protected@file@percent }
|
||||
\newlabel{cor:medial-tire-decomposition}{{4.1}{6}}
|
||||
\newlabel{def:compatible-family}{{4.2}{6}}
|
||||
\newlabel{prop:gluing-criterion}{{4.3}{6}}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{6}{}\protected@file@percent }
|
||||
\gdef \@abspage@last{6}
|
||||
\@writefile{toc}{\contentsline {section}{\tocsection {}{}{References}}{11}{}\protected@file@percent }
|
||||
\gdef \@abspage@last{11}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 14 JUN 2026 21:07
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022) (preloaded format=pdflatex 2022.10.5) 11 JUN 2026 16:44
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
@@ -496,7 +496,7 @@ e
|
||||
))
|
||||
[1{/usr/local/texlive/2022/texmf-var/fonts/map/pdftex/updmap/pdftex.map}]
|
||||
[2] [3]
|
||||
Overfull \hbox (62.13657pt too wide) in paragraph at lines 366--375
|
||||
Overfull \hbox (62.13657pt too wide) in paragraph at lines 363--372
|
||||
[][]
|
||||
[]
|
||||
|
||||
@@ -506,39 +506,39 @@ LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
|
||||
LaTeX Warning: `h' float specifier changed to `ht'.
|
||||
|
||||
[4] [5] [6] (./paper.aux) )
|
||||
[4] [5] [6] [7] [8] [9] [10] [11] (./paper.aux) )
|
||||
Here is how much of TeX's memory you used:
|
||||
14413 strings out of 478268
|
||||
283613 string characters out of 5846347
|
||||
608323 words of memory out of 5000000
|
||||
32242 multiletter control sequences out of 15000+600000
|
||||
14419 strings out of 478268
|
||||
283755 string characters out of 5846347
|
||||
609349 words of memory out of 5000000
|
||||
32248 multiletter control sequences out of 15000+600000
|
||||
477048 words of font info for 58 fonts, out of 8000000 for 9000
|
||||
1302 hyphenation exceptions out of 8191
|
||||
84i,8n,89p,736b,838s stack positions out of 10000i,1000n,20000p,200000b,200000s
|
||||
</usr/local/texlive/2022/texmf-dist/fonts/type1/publ
|
||||
ic/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/publi
|
||||
c/amsfonts/cm/cmbx8.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/a
|
||||
msfonts/cm/cmmi5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/ams
|
||||
fonts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfo
|
||||
nts/cm/cmmi8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfont
|
||||
s/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/
|
||||
cm/cmr7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/
|
||||
cmr8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cms
|
||||
s10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy
|
||||
10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy5
|
||||
.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy6.p
|
||||
fb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmsy7.pfb
|
||||
></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti10.pfb>
|
||||
</usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmti8.pfb></
|
||||
usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/cm/cmtt8.pfb></us
|
||||
r/local/texlive/2022/texmf-dist/fonts/type1/public/amsfonts/symbols/msam10.pfb>
|
||||
|
||||
Output written on paper.pdf (6 pages, 250239 bytes).
|
||||
</usr/local/texlive/2022/texmf
|
||||
-dist/fonts/type1/public/amsfonts/cm/cmbx10.pfb></usr/local/texlive/2022/texmf-
|
||||
dist/fonts/type1/public/amsfonts/cm/cmbx8.pfb></usr/local/texlive/2022/texmf-di
|
||||
st/fonts/type1/public/amsfonts/cm/cmcsc10.pfb></usr/local/texlive/2022/texmf-di
|
||||
st/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/local/texlive/2022/texmf-dis
|
||||
t/fonts/type1/public/amsfonts/cm/cmmi5.pfb></usr/local/texlive/2022/texmf-dist/
|
||||
fonts/type1/public/amsfonts/cm/cmmi7.pfb></usr/local/texlive/2022/texmf-dist/fo
|
||||
nts/type1/public/amsfonts/cm/cmmi8.pfb></usr/local/texlive/2022/texmf-dist/font
|
||||
s/type1/public/amsfonts/cm/cmr10.pfb></usr/local/texlive/2022/texmf-dist/fonts/
|
||||
type1/public/amsfonts/cm/cmr7.pfb></usr/local/texlive/2022/texmf-dist/fonts/typ
|
||||
e1/public/amsfonts/cm/cmr8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/
|
||||
public/amsfonts/cm/cmss10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/p
|
||||
ublic/amsfonts/cm/cmsy10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/pu
|
||||
blic/amsfonts/cm/cmsy5.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/publ
|
||||
ic/amsfonts/cm/cmsy6.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public
|
||||
/amsfonts/cm/cmsy7.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/a
|
||||
msfonts/cm/cmti10.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/am
|
||||
sfonts/cm/cmti8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsf
|
||||
onts/cm/cmtt8.pfb></usr/local/texlive/2022/texmf-dist/fonts/type1/public/amsfon
|
||||
ts/symbols/msam10.pfb>
|
||||
Output written on paper.pdf (11 pages, 277538 bytes).
|
||||
PDF statistics:
|
||||
121 PDF objects out of 1000 (max. 8388607)
|
||||
74 compressed objects within 1 object stream
|
||||
138 PDF objects out of 1000 (max. 8388607)
|
||||
86 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.
@@ -53,12 +53,9 @@ isomorphic to the medial graph of the planar dual $G^*$, and proper
|
||||
$3$-vertex-colourings of $M(G)$ are equivalent to proper
|
||||
$3$-edge-colourings of the cubic dual. Thus Tait's reformulation of
|
||||
the Four Colour Theorem may be studied through proper vertex
|
||||
$3$-colourings of medial subgraphs. We define medial tire pieces and
|
||||
their boundary-state restriction relations, and show that a proper
|
||||
vertex $3$-colouring of $M(G)$ amounts to a compatible selection of
|
||||
these boundary states across the tire tree. The resulting
|
||||
pigeonhole programme for the Four Colour Theorem is developed
|
||||
in~\cite{bauerfeld-medial-pigeonhole}.
|
||||
$3$-colourings of medial subgraphs. We define medial tire pieces,
|
||||
their boundary-state restriction relations, and a chain-pigeonhole
|
||||
conjecture for compatible medial boundary states across the tire tree.
|
||||
\end{abstract}
|
||||
|
||||
\maketitle
|
||||
@@ -659,6 +656,340 @@ properness is already enforced by one of the local colourings. Hence
|
||||
$\varphi$ is a proper vertex $3$-colouring of $M(G)$.
|
||||
\end{proof}
|
||||
|
||||
\section{A medial pigeonhole programme}
|
||||
|
||||
The restriction relation $R_T$ records exactly the local information
|
||||
needed to pass a medial $3$-colouring through a tire. In a nested
|
||||
chain
|
||||
\[
|
||||
T_0 \supset T_1 \supset \cdots \supset T_k,
|
||||
\]
|
||||
the outer boundary state of $T_{i+1}$ must match an inner boundary
|
||||
state allowed by $R_{T_i}$. Thus a proof of the Four Colour Theorem in
|
||||
this framework would follow from a structural reason that these
|
||||
restriction sets cannot remain mutually disjoint along every branch of
|
||||
the tire tree.
|
||||
|
||||
\begin{definition}[Medial boundary state]
|
||||
\label{def:medial-boundary-state}
|
||||
A \emph{medial boundary state} on a boundary set
|
||||
$\partial\mathsf{M}(T)$ is a proper vertex $3$-colouring of the
|
||||
subgraph induced by that boundary set, considered up to permutation of
|
||||
the three colours and the dihedral symmetries of the boundary walk
|
||||
when that boundary is a cycle.
|
||||
\end{definition}
|
||||
|
||||
\begin{conjecture}[Medial chain-pigeonhole principle]
|
||||
\label{conj:medial-chain-pigeonhole}
|
||||
There is a function $N(k)$ such that the following holds. Let
|
||||
$T_0 \supset T_1 \supset \cdots \supset T_{N(k)}$ be a nested chain of
|
||||
tire treads whose relevant boundary medial walks have length at most
|
||||
$k$. Then two adjacent restriction relations in the chain have
|
||||
compatible medial boundary states after colour permutation and boundary
|
||||
symmetry. Equivalently, the chain contains a local gluing step that
|
||||
cannot be obstructed by disjoint proper vertex $3$-colouring
|
||||
restrictions.
|
||||
\end{conjecture}
|
||||
|
||||
\begin{conjecture}[Medial tire route to the Four Colour Theorem]
|
||||
\label{conj:medial-route-fct}
|
||||
For every plane triangulation $G$ and every level source $S$, the
|
||||
restriction relations $\{R_T : T \in V(\mathcal{T}(G,S))\}$ admit a
|
||||
compatible selection of boundary states across the tire tree. Hence
|
||||
$M(G)$ is properly vertex $3$-colourable, $G^*$ is properly
|
||||
$3$-edge-colourable, and $G$ is properly $4$-vertex-colourable.
|
||||
\end{conjecture}
|
||||
|
||||
\begin{remark}
|
||||
Conjecture~\ref{conj:medial-route-fct} is equivalent in strength to
|
||||
the Four Colour Theorem when combined with Tait's correspondence. The
|
||||
point of the formulation is not to weaken the target theorem, but to
|
||||
move the obstruction into finite boundary-state restrictions carried by
|
||||
annular medial tire pieces.
|
||||
\end{remark}
|
||||
|
||||
\subsection{Kempe-cycle conservation across medial tires}
|
||||
|
||||
We now record an additional structure carried by proper
|
||||
$3$-colourings of medial graphs. This structure will be useful for
|
||||
describing how colourings glue across level cycles.
|
||||
|
||||
Let $G$ be a plane triangulation and let $M=M(G)$ be its medial graph.
|
||||
Let
|
||||
\[
|
||||
\varphi:V(M)\to\{1,2,3\}
|
||||
\]
|
||||
be a proper $3$-colouring of $M$. For a two-element colour set
|
||||
$P=\{a,b\}\subseteq\{1,2,3\}$, let $M_P$ denote the subgraph of $M$
|
||||
induced by the vertices of colours $a$ and $b$.
|
||||
|
||||
Since $M$ is $4$-regular and $\varphi$ is proper, every vertex of
|
||||
$M_P$ has degree $2$ in $M_P$. Hence every component of $M_P$ is a
|
||||
cycle. We call these components the $P$-Kempe cycles of $\varphi$.
|
||||
|
||||
\begin{lemma}[Kempe chains are cycles]
|
||||
\label{lem:kempe-cycles}
|
||||
Let $G$ be a plane triangulation, let $M=M(G)$, and let
|
||||
$\varphi$ be a proper $3$-colouring of $M$. For each
|
||||
$P\in\{\{1,2\},\{2,3\},\{3,1\}\}$, every component of $M_P$ is a cycle.
|
||||
\end{lemma}
|
||||
|
||||
\begin{proof}
|
||||
Let $v\in V(M_P)$. In the medial graph $M$, the vertex $v$ has degree
|
||||
$4$. Since $\varphi$ is a proper $3$-colouring, none of the neighbours
|
||||
of $v$ has colour $\varphi(v)$. Thus all four neighbours of $v$ have
|
||||
one of the two colours different from $\varphi(v)$.
|
||||
|
||||
In the medial graph of a plane triangulation, the neighbours of a
|
||||
medial vertex occur in two opposite pairs corresponding to the two
|
||||
faces incident with the corresponding edge of $G$. Around each such
|
||||
triangular face, the three medial vertices receive all three colours.
|
||||
Consequently, at $v$ there are exactly two neighbours of each colour
|
||||
different from $\varphi(v)$. It follows that, in the subgraph induced
|
||||
by any two colours $P$, every vertex has degree $2$. Hence each
|
||||
component of $M_P$ is a cycle.
|
||||
\end{proof}
|
||||
|
||||
Let $T$ be a medial tire region. We regard $T$ as an annular transition
|
||||
region whose boundary consists of one outer level cycle and finitely
|
||||
many inner level cycles:
|
||||
\[
|
||||
\partial T = C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
Here $C_0$ is the outer level cycle of $T$, and the cycles
|
||||
$C_1,\ldots,C_m$ are the inner level cycles. Each inner level cycle
|
||||
$C_i$ is also the outer level cycle of the corresponding child region
|
||||
in the tire tree.
|
||||
|
||||
The following lemma is the basic conservation principle.
|
||||
|
||||
\begin{lemma}[Kempe-cycle conservation across level cycles]
|
||||
\label{lem:kempe-conservation}
|
||||
Let $C$ be a level cycle of $M$ separating a parent side from a child
|
||||
side. Let $K$ be a $P$-Kempe cycle for some
|
||||
$P\in\{\{1,2\},\{2,3\},\{3,1\}\}$. Then $K$ cannot enter the child side
|
||||
of $C$ without also leaving it.
|
||||
|
||||
Equivalently, the incidences of $K$ with $C$ are paired by the
|
||||
components of $K$ lying on the child side of $C$, and also paired by the
|
||||
components of $K$ lying on the parent side of $C$.
|
||||
\end{lemma}
|
||||
|
||||
\begin{proof}
|
||||
By the preceding lemma, $K$ is a cycle. The level cycle $C$ separates
|
||||
the sphere into two closed regions, which we call the parent side and
|
||||
the child side. Consider the intersection of $K$ with one of these
|
||||
regions. Since $K$ is a cycle, no component of this intersection can
|
||||
have exactly one boundary endpoint on $C$. Each component is either
|
||||
closed within the region, or is a path with two boundary endpoints on
|
||||
$C$. Thus every entrance through $C$ is paired with an exit through
|
||||
$C$.
|
||||
\end{proof}
|
||||
|
||||
We now use these Kempe cycles to single out the colourings of a full
|
||||
medial tire graph that respect the annular tooth structure.
|
||||
|
||||
\begin{definition}[Kempe-balanced colouring]
|
||||
\label{def:kempe-balanced}
|
||||
Let $\varphi$ be a proper $3$-colouring of the full medial tire graph
|
||||
$\mathsf{M}(T)$. For a colour pair $P=\{a,b\}$, let $\mathsf{M}(T)_P$ be
|
||||
the subgraph induced by the vertices of colours $a$ and $b$. Since
|
||||
$\mathsf{M}(T)$ need not be $4$-regular, the components of
|
||||
$\mathsf{M}(T)_P$ are paths or cycles; we call them the $P$-\emph{Kempe
|
||||
chains} of $\varphi$. Every vertex of colour $a$ or $b$ lies on exactly
|
||||
one $P$-Kempe chain.
|
||||
|
||||
A \emph{valid face} is the outer face of $\mathsf{M}(T)$, or an interior
|
||||
face of $B(T)$ that is not a tooth---namely the root face or a bite
|
||||
inner-gap face of Remark~\ref{rem:bite-face-count}. The \emph{tooth
|
||||
apexes incident to} a valid face $F$ are:
|
||||
\begin{itemize}
|
||||
\item the up-tooth apexes (Definition~\ref{def:annular-teeth}), when
|
||||
$F$ is the outer face;
|
||||
\item the singleton down-tooth apexes whose annular edge lies on $F$,
|
||||
when $F$ is interior---the apex on annular edge $m$ being incident to
|
||||
the innermost bite $(i,j)$ with $i<m<j$, or to the root face if there
|
||||
is none.
|
||||
\end{itemize}
|
||||
Bite apexes are never incident to a valid face in this sense.
|
||||
|
||||
For a colour pair $P=\{a,b\}$ write $\nu_P(F)$ for the number of tooth
|
||||
apexes incident to $F$ that are coloured $a$ or $b$---equivalently, that
|
||||
lie on a $P$-Kempe chain. The colouring $\varphi$ is
|
||||
\emph{Kempe-balanced} if $\nu_P(F)$ is even for every valid face $F$ and
|
||||
every colour pair $P$.
|
||||
\end{definition}
|
||||
|
||||
\begin{remark}[Necessity of Kempe-balance]
|
||||
\label{rem:kempe-balance-necessary}
|
||||
A proper $3$-colouring of $\mathsf{M}(T)$ can be part of a proper
|
||||
$3$-colouring of the whole medial graph $M(G)$ only when it is
|
||||
Kempe-balanced: if $\varphi$ is the restriction to $\mathsf{M}(T)$ of a
|
||||
proper $3$-colouring of $M(G)$, then $\varphi$ is Kempe-balanced.
|
||||
Equivalently, a colouring of $\mathsf{M}(T)$ that fails the parity
|
||||
condition at some valid face and colour pair cannot extend to a proper
|
||||
$3$-colouring of $M(G)$. This is an instance of Kempe-cycle
|
||||
conservation (Lemma~\ref{lem:kempe-conservation}). The tooth apexes
|
||||
incident to a valid face are boundary medial vertices
|
||||
(Definition~\ref{def:boundary-medial-vertices}) lying on a single level
|
||||
cycle of the tire decomposition: the up-tooth apexes lie on the outer
|
||||
level cycle, and the singleton down-tooth apexes incident to an interior
|
||||
non-tooth face lie on the inner level cycle bounding that face. In the
|
||||
$4$-regular graph $M(G)$ each $P$-Kempe chain of $\mathsf{M}(T)$ closes
|
||||
up into a $P$-Kempe cycle, which by Lemma~\ref{lem:kempe-conservation}
|
||||
meets each level cycle in an even number of $P$-coloured incidences; for
|
||||
a given valid face these incidences are exactly its incident tooth
|
||||
apexes coloured $a$ or $b$, whence $\nu_P(F)$ is even.
|
||||
|
||||
This argument is verified computationally. For bite-free pieces---capped
|
||||
triangulated annuli on annular cycles of length $6,8,10,12$---every proper
|
||||
$3$-colouring of $M(G)$ restricts to a Kempe-balanced colouring. The same
|
||||
holds for pieces carrying a bite, including the case where singleton down
|
||||
teeth lie in the bite's inner-gap face: there the inner level cycle splits
|
||||
into a child level cycle per gap, and conservation across each child cycle
|
||||
supplies the parity (in the checked example the three singleton down apexes
|
||||
of a bite gap are a rainbow in every restriction).
|
||||
\end{remark}
|
||||
|
||||
More generally, let $T$ be a medial tire region with boundary
|
||||
\[
|
||||
\partial T = C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
For a $P$-Kempe cycle $K$, every component of $K\cap T$ is either a
|
||||
cycle contained in $T$, or a path with two endpoints on
|
||||
$\partial T$. Thus the $P$-Kempe arcs inside $T$ define a pairing of
|
||||
the $P$-coloured boundary incidences of
|
||||
\[
|
||||
C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
This motivates the following refinement of boundary states.
|
||||
|
||||
\begin{definition}[Kempe-enhanced boundary state]
|
||||
Let $T$ be a medial tire region with outer level cycle $C_0$ and inner
|
||||
level cycles $C_1,\ldots,C_m$. Let
|
||||
\[
|
||||
\mathcal C(T)=C_0\sqcup C_1\sqcup\cdots\sqcup C_m.
|
||||
\]
|
||||
A \emph{Kempe-enhanced boundary state} on $T$ consists of the following
|
||||
data:
|
||||
\begin{enumerate}
|
||||
\item a boundary colouring
|
||||
\[
|
||||
\alpha:V(\mathcal C(T))\to\{1,2,3\};
|
||||
\]
|
||||
\item for each colour pair
|
||||
\[
|
||||
P\in\{\{1,2\},\{2,3\},\{3,1\}\},
|
||||
\]
|
||||
a pairing $\pi_P$ of the $P$-coloured boundary incidences of
|
||||
$\mathcal C(T)$ induced by the $P$-Kempe arcs lying inside $T$.
|
||||
\end{enumerate}
|
||||
We write such a state as
|
||||
\[
|
||||
\kappa=(\alpha,\pi_{12},\pi_{23},\pi_{31}).
|
||||
\]
|
||||
\end{definition}
|
||||
|
||||
Given a proper $3$-colouring $\varphi$ of the medial tire graph
|
||||
$M(T)$, the restriction of $\varphi$ to the boundary level cycles gives
|
||||
the boundary colouring $\alpha$, while the two-colour Kempe arcs inside
|
||||
$T$ give the pairings $\pi_{12},\pi_{23},\pi_{31}$. Thus $\varphi$
|
||||
determines a Kempe-enhanced boundary state, denoted
|
||||
\[
|
||||
\kappa_T(\varphi).
|
||||
\]
|
||||
|
||||
\begin{definition}[Kempe-enhanced restriction relation]
|
||||
The \emph{Kempe-enhanced restriction relation} of $T$ is
|
||||
\[
|
||||
\mathcal K_T
|
||||
=
|
||||
\left\{
|
||||
\kappa_T(\varphi):
|
||||
\varphi \text{ is a proper }3\text{-colouring of } M(T)
|
||||
\right\}.
|
||||
\]
|
||||
This refines the ordinary boundary-colouring relation by recording not
|
||||
only which boundary colourings extend across $T$, but also how the
|
||||
two-colour Kempe cycles are routed through the annular tire region.
|
||||
\end{definition}
|
||||
|
||||
The annular structure of a tire is useful in two distinct ways. First,
|
||||
it gives a bounded transition region between level cycles: the colouring
|
||||
of the annular medial cycle controls, and in many cases determines, the
|
||||
colouring of the remaining medial tire vertices. Thus the number of
|
||||
possible transition states is bounded in terms of the annular structure,
|
||||
rather than the total size of the subtree below the tire. Second, it
|
||||
describes how the outer level cycle and the inner level cycles are
|
||||
related by Kempe arcs. The level cycles are the gluing interfaces, while
|
||||
the annular tire is the transition operator between them.
|
||||
|
||||
\begin{definition}[Kempe-compatible gluing]
|
||||
Let $T$ be a medial tire region and let $U$ be a child region glued to
|
||||
$T$ along a common level cycle $C$. Thus $C$ is an inner level cycle of
|
||||
$T$ and the outer level cycle of $U$.
|
||||
|
||||
Let
|
||||
\[
|
||||
\kappa_T=(\alpha_T,\pi^T_{12},\pi^T_{23},\pi^T_{31})
|
||||
\in \mathcal K_T
|
||||
\]
|
||||
and
|
||||
\[
|
||||
\kappa_U=(\alpha_U,\pi^U_{12},\pi^U_{23},\pi^U_{31})
|
||||
\in \mathcal K_U.
|
||||
\]
|
||||
We say that $\kappa_T$ and $\kappa_U$ are \emph{Kempe-compatible along
|
||||
$C$} if:
|
||||
\begin{enumerate}
|
||||
\item the boundary colourings agree on $C$:
|
||||
\[
|
||||
\alpha_T|_{V(C)}=\alpha_U|_{V(C)};
|
||||
\]
|
||||
\item for each colour pair
|
||||
\[
|
||||
P\in\{\{1,2\},\{2,3\},\{3,1\}\},
|
||||
\]
|
||||
the pairings $\pi^T_P$ and $\pi^U_P$ compose along the
|
||||
$P$-coloured incidences of $C$ without producing an unpaired endpoint.
|
||||
\end{enumerate}
|
||||
When these conditions hold, the composed pairings determine a
|
||||
Kempe-enhanced boundary state on the exposed boundary of
|
||||
$T\cup_C U$.
|
||||
\end{definition}
|
||||
|
||||
In these terms, gluing local colourings is not merely a matter of
|
||||
matching boundary colours. The colourings must also route their
|
||||
two-colour Kempe arcs compatibly across every shared level cycle. The
|
||||
ordinary restriction relation records whether a boundary colouring can
|
||||
be extended locally; the Kempe-enhanced relation additionally records
|
||||
the conservation of Kempe-cycle flow through the annular transition
|
||||
region.
|
||||
|
||||
For a tire with one outer level cycle and several inner level cycles,
|
||||
\[
|
||||
\partial T=C_0\sqcup C_1\sqcup\cdots\sqcup C_m,
|
||||
\]
|
||||
the parent tire may correlate the boundary states on the different
|
||||
inner cycles. The Kempe-enhanced relation records this correlation as
|
||||
a system of pairings among the $P$-coloured incidences of all boundary
|
||||
level cycles simultaneously. Thus one should view a medial tire as a
|
||||
multi-output transition operator
|
||||
\[
|
||||
\mathcal K_T:
|
||||
C_0 \leadsto (C_1,\ldots,C_m),
|
||||
\]
|
||||
rather than as an independent collection of binary transitions.
|
||||
|
||||
The guiding principle is therefore:
|
||||
|
||||
\begin{quote}
|
||||
Level cycles are the interfaces used for gluing, while annular tire
|
||||
regions are the bounded transition regions that route Kempe cycles
|
||||
between those interfaces.
|
||||
\end{quote}
|
||||
|
||||
|
||||
\begin{thebibliography}{9}
|
||||
|
||||
\bibitem{bauerfeld-nested-tire-decompositions}
|
||||
@@ -666,11 +997,6 @@ E.~Bauerfeld,
|
||||
\emph{Nested Tire Decompositions of Plane Triangulations},
|
||||
manuscript (math-research repository), 2026.
|
||||
|
||||
\bibitem{bauerfeld-medial-pigeonhole}
|
||||
E.~Bauerfeld,
|
||||
\emph{The Medial Pigeonhole Programme},
|
||||
manuscript (math-research repository), 2026.
|
||||
|
||||
\bibitem{tait-original}
|
||||
P.~G. Tait,
|
||||
\emph{Remarks on the colourings of maps},
|
||||
|
||||
Reference in New Issue
Block a user