Jekyll2019-01-16T06:11:47+00:00https://11011110.github.io/blog/feed.xml11011110Geometry, graphs, algorithms, and moreDavid EppsteinLinkage2019-01-15T22:07:00+00:002019-01-15T22:07:00+00:00https://11011110.github.io/blog/2019/01/15/linkage<p>For the new year, I’ve decided to try to get back into taking photos more frequently, and to make it lower-overhead I’m making individual Mastodon posts for some of them rather than writing a longer blog post for every batch of photos. So that’s why you see a couple of those images inline here.</p>
<ul>
<li>
<p><a href="https://community.wolfram.com/groups/-/m/t/1579272">Fitting in</a> (<a href="https://mathstodon.xyz/@shonk/101320172170027222"><script type="math/tex">\mathbb{M}</script></a>). Animated GIF of 124 disks packed (supposedly optimally) on a sphere and then steregraphically projected to the plane, by Clayton Shonkwiler.</p>
</li>
<li>
<p><a href="https://twitter.com/BrunoLevy01/status/1080085027210309632">More animated GIFs of fluids with splashy frothy surfaces</a> by Bruno Levy (<a href="https://mathstodon.xyz/@11011110/101349213452607605"><script type="math/tex">\mathbb{M}</script></a>). The fluids are modeled as power diagrams of systems of discrete points and simulated using methods from <a href="https://arxiv.org/abs/1605.00568">arXiv:1605.00568</a>.
See follow-up tweets for source code and long explanatory video.</p>
</li>
<li>
<p><a href="https://arxiv.org/help/stats/2018_by_area/index">Lots of charts and plots of the growth of arXiv.org through 2018</a> (<a href="https://mathstodon.xyz/@11011110/101355877277070622"><script type="math/tex">\mathbb{M}</script></a>). In the area I moderate (cs.DS, algorithms and data structures) the number of preprints grew from 1597 in 2017 to 1767 in 2018, but this was a little below the 14% growth rate for arXiv overall, and was far outpaced by the rapid growth in cs.CV (computer vision), cs.LG (machine learning), and cs.CL (natural language processing).</p>
</li>
<li>
<p><a href="https://www.fortbraggalleywayart.org/the-fish-mural.html">Matsya And The Great Deluge</a> (<a href="https://mathstodon.xyz/@11011110/101361278765845519"><script type="math/tex">\mathbb{M}</script></a>). Street art from Fort Bragg illustrating an ancient Indian folk tale.</p>
<p style="text-align:center"><a href="https://www.ics.uci.edu/~eppstein/pix/mfb/MatsyaAndTheGreatDeluge.html"><img src="https://www.ics.uci.edu/~eppstein/pix/mfb/MatsyaAndTheGreatDeluge-m.jpg" alt=""Matsya And The Great Deluge" street art in Fort Bragg, California" style="border-style:solid;border-color:black;" /></a></p>
</li>
<li>
<p><a href="https://www.metafilter.com/178580/Orange-Peels-and-Fresnel-Integrals-Train-Sets-The-Urinal-Problem">Orange peels and fresnel integrals! Train sets! The urinal problem!</a> (<a href="https://mathstodon.xyz/@11011110/101366435174480182"><script type="math/tex">\mathbb{M}</script></a>). Metafilter discovers <a href="https://mathstodon.xyz/@esoterica">Interesting Esoterica</a>.</p>
</li>
<li><a href="https://doi.org/10.1137/1.9781611975482"><em>Proceedings of the Thirtieth Annual ACM-SIAM Symposium on Discrete Algorithms (SODA 2019)</em></a> (<a href="https://mathstodon.xyz/@11011110/101373871420970067"><script type="math/tex">\mathbb{M}</script></a>). My favorite talk from the first day of SODA was “<a href="https://doi.org/10.1137/1.9781611975482.27">Extremal and probabilistic results for order types</a>” (Jie Han, Yoshiharu Kohayakawa, Marcelo T. Sales, and Henrique Stagni).
Its main results are
<ol>
<li>the probability that a random point set has a specific order type is upper and lower bounded by functions of the smallest size of a grid containing the order type, and</li>
<li>every nontrivial hereditary property of point sets has probability <script type="math/tex">1/\exp\bigl(\Theta(n\log n)\bigr)</script> of being true of random point sets.</li>
</ol>
</li>
<li>
<p><a href="https://www.latimes.com/world/la-fg-iran-demographer-arrests-20190107-story.html">Iran arrests demographers, the latest target amid an escalating crackdown on academics and activists</a> (<a href="https://mathstodon.xyz/@11011110/101379517186873559"><script type="math/tex">\mathbb{M}</script></a>). One of the two arrestees is an Iranian-Australian dual citizen; the other is director of the Iranian National Institute of Population Research. The apparent reason for the arrest is that their research contradicted a political narrative of Iranian hardliners according to which Iran is suffering a population crash and must increase fertility.</p>
</li>
<li>
<p>The first sighting of one of my Wikipedia illustrations in a SODA talk goes to Michał Włodarczyk’s “<a href="https://doi.org/10.1137/1.9781611975482.104">Losing treewidth by separating subsets</a>” (<a href="https://mathstodon.xyz/@11011110/101389040748549759"><script type="math/tex">\mathbb{M}</script></a>). It concerns removing few graph vertices to reach a subgraph with some desired property. If the optimal solution removes <script type="math/tex">k</script> vertices and graphs with the property have treewidth <script type="math/tex">\le t</script>, then his solution removes <script type="math/tex">O(k\log t)</script> vertices and takes the same time as exactly solving <script type="math/tex">O(\log n)</script> subproblems of size <script type="math/tex">O(t\log t)</script>.</p>
</li>
<li>
<p><a href="http://mybiasedcoin.blogspot.com/2019/01/analco-sosa-soda-post.html">Michael Mitzenmacher blogs about SODA, SOSA, ALENEX, and ANALCO</a> (<a href="https://mathstodon.xyz/@11011110/101390458273110460"><script type="math/tex">\mathbb{M}</script></a>).
Michael was PC co-chair of <a href="https://simplicityinalgorithms.com/">SOSA</a>, which I was skeptical about (shouldn’t all the best algorithms be simple?), but the session I attended favorably impressed me. Here’s an example, a simple algorithm for <a href="https://arxiv.org/abs/1501.07460">2-approximating maximum genus oriented graph embedding</a>: greedily remove 2-edge paths while preserving connectivity. <script type="math/tex">\text{#paths} \le \text{max genus} \le 2\cdot\text{#paths}</script>.</p>
</li>
<li>
<p><a href="http://www.ics.uci.edu/~eppstein/pubs/EppRee-SODA-19-slides.pdf">My SODA talk slides on finding laminar 3-vertex separators</a> (<a href="https://mathstodon.xyz/@11011110/101396845733518307"><script type="math/tex">\mathbb{M}</script></a>). At the talk, someone asked about finding a maximum set of laminar 3-separators. It’s NP-complete: use Uehara’s “<a href="https://www.jaist.ac.jp/~uehara/pdf/triangle.pdf">NP-complete problems on a 3-connected cubic graph and their applications</a>” to find cubic planar graphs whose <script type="math/tex">\le 3</script>-separators are vertex neighborhoods (so laminar separators = neighbors of independent vertices) in which maximum independent set is hard.</p>
</li>
<li>
<p>Spotted on the Cambridge University Press display table at SODA (<a href="https://mathstodon.xyz/@11011110/101402305412043483"><script type="math/tex">\mathbb{M}</script></a>):</p>
<p style="text-align:center"><a href="https://www.ics.uci.edu/~eppstein/pix/soda-books/index.html"><img src="https://www.ics.uci.edu/~eppstein/pix/soda-books/books-m.jpg" alt="Forbidden Configurations in Discrete Geometry on display alongside other Cambridge University Press books" style="border-style:solid;border-color:black;" /></a></p>
</li>
<li>
<p><a href="https://codeparade.itch.io/marblemarcher">Marble Marcher</a> (<a href="https://mathstodon.xyz/@11011110/101407478247456589"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://news.ycombinator.com/item?id=18805717">via</a>). A game of guiding a marble across a dynamically changing fractal surface. The key is to use the recursive structure of the fractal to make a data structure that can handle the interactions between the marble and the fractal surface quickly enough to run in realtime.</p>
</li>
<li>
<p><a href="https://thehighergeometer.wordpress.com/2019/01/13/some-serious-open-access-journals-in-mathematics/">A list of (respectable) open access journals in mathematics</a> (<a href="https://mathstodon.xyz/@11011110/101410796814360458"><script type="math/tex">\mathbb{M}</script></a>). <a href="http://jgaa.info/">JGAA</a> and <a href="http://jocg.org/">JoCG</a> not yet listed but maybe soon?</p>
</li>
<li>
<p><a href="https://www.metafilter.com/178755/Space-filling-curves-the-hard-way">Wacław Szpakowski’s space-filling curve art</a> (<a href="https://mastodon.social/@joshmillard/101415993062003559"><script type="math/tex">\mathbb{M}</script></a>).</p>
</li>
<li><a href="https://en.wikipedia.org/wiki/De_Bruijn%E2%80%93Erd%C5%91s_theorem_(graph_theory)">The De Bruijn–Erdős theorem</a> (<a href="https://mathstodon.xyz/@11011110/101421411362488773"><script type="math/tex">\mathbb{M}</script></a>): when all finite subgraphs of an infinite graph are <script type="math/tex">k</script>-colorable, so is the whole graph. Now a Good Article on Wikipedia.</li>
</ul>David EppsteinFor the new year, I’ve decided to try to get back into taking photos more frequently, and to make it lower-overhead I’m making individual Mastodon posts for some of them rather than writing a longer blog post for every batch of photos. So that’s why you see a couple of those images inline here.Linkage for the end of the year2018-12-31T16:41:00+00:002018-12-31T16:41:00+00:00https://11011110.github.io/blog/2018/12/31/linkage<ul>
<li>
<p><a href="https://twitter.com/trannosaurusma/status/959423514485841925?s=21">LaTeX, the game</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101252368314388741"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/BAwHG7Tnc2N">G+</a>, <a href="https://mathstodon.xyz/@ejk/101201955004129570">via</a>). It should be an even higher level to get the commutative diagram to format in Wikipedia’s lobotomized version of LaTeX.</p>
</li>
<li>
<p><a href="http://aperiodical.com/2018/12/byrnes-euclid-recreated-for-the-web/">Byrne’s Euclid recreated for the web</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101259384727886209"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/4Z1pWdmcWui">G+</a>, <a href="https://plus.google.com/+Aperiodical/posts/KdfBH9YMFMV">via</a>, <a href="https://www.metafilter.com/178260/Byrnes-Euclid">also via</a>. Beautiful three-color figures, hard-to-read old-faſhioned orthography, and all. I have the Taſchen reprint in my office, but I prefer the Dover Heath edition for actually uſing the books rather than looking pretty.</p>
</li>
<li>
<p><a href="https://www.theengineer.co.uk/electric-eel-hydrogel-battery/">Electric eel inspires biocompatible hydrogel battery</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101264841241151850"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/EioURA7NEmH">G+</a>, <a href="https://www.nature.com/articles/nature24670">original paper</a>, <a href="https://news.umich.edu/electricity-eel-style-soft-power-cells-could-run-tomorrow-s-implantables/">see also</a>). The part that caught my attention is that they’re using a Miura fold to simultaneously align and press together many pairs of droplets of four types (salty, fresh water, or two kinds of charge-selective hydrogel), creating an origami-activated electrical discharge.</p>
</li>
<li>
<p><a href="https://www.quantamagazine.org/in-the-universe-of-equations-virtually-all-are-prime-20181210/">In the universe of equations, virtually all are prime</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101270526352782325"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/d7hvGtho5FJ">G+</a>, <a href="https://plus.google.com/+QuantamagazineOrgNews/posts/9e2bRyNfyeF">via</a>, <a href="https://arxiv.org/abs/1810.13360">original paper</a>). Choose a polynomial’s coefficients randomly and independently from your favorite nontrivial distribution. Then it should be irreducible with high probability for polynomials of high enough degree. This was previously conjectured for the uniform distribution on <script type="math/tex">\{0,1\}</script> by Odlyzko and Poonen; now Breuillard and Varjú have proven that it follows from a form of the Riemann hypothesis.</p>
</li>
<li>
<p>A tricky Sudoku (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101277538292220348"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/NDeATkTyEKT">G+</a>):</p>
<p style="text-align:center"><img src="/blog/assets/2018/sudoku.svg" alt="A sudoku puzzle" /></p>
</li>
<li>
<p><a href="https://www.chronicle.com/article/In-Talks-With-Elsevier-UCLA/245311">UCLA suggests that its faculty refrain from publishing with or reviewing for Elsevier while negotiations are ongoing</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101281900329465390"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/E4KAhwXct6y">G+</a>). For those willing to take a longer-term stand, there’s always <a href="http://thecostofknowledge.com/">thecostofknowledge.com</a>.</p>
</li>
<li>
<p><a href="https://suomela.github.io/snowflake/">A161330 Snowflake</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101293131395532694"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/N1gsDwSmjrX">G+</a>, <a href="https://plus.google.com/+JukkaSuomela/posts/b7rngpsTaVc">via</a>). An animated holiday greeting from <a href="https://twitter.com/JukkaSuomela">Jukka Suomela</a> based on <a href="https://oeis.org/A161330">integer sequence A161330</a>.</p>
</li>
<li>
<p><a href="https://mathstodon.xyz/@unknown/101273978649098365">Festive two-to-one star dissection</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101298812633911915"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/Bf3kWzhc9Yh">G+</a>). A Christmas greeting from <a href="https://mathstodon.xyz/@unknown/">@unknown@mathstodon.xyz</a>.</p>
</li>
<li>
<p><a href="https://www.youtube.com/watch?v=uNJ7riiPHOY">Journeys of women in mathematics</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101311027456154189"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/5CXnPF36FMz">G+</a>, <a href="https://blogs.scientificamerican.com/roots-of-unity/women-mathematicians-in-their-own-words/">via</a>). A 20-minute documentary profiling three women mathematicians from developing countries: Neela Nataraj of IIT Bombay in India, Aminatou Pecha Nijahouo from Cameroon, and Carolina Araujo at IMPA in Brazil, with brief quotes from many more.</p>
</li>
<li>
<p><a href="https://wikiedu.org/blog/2018/12/20/three-things-i-learned-as-a-wiki-scholar/">Three things i learned as a Wiki scholar</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101314727270253883"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/hmWXq3eDTqf">G+</a>, <a href="https://en.wikipedia.org/wiki/Wikipedia_talk:WikiProject_Women_in_Red">via</a>). Historian Rachel Boyle on some cultural differences between academia and Wikipedia.</p>
</li>
<li>
<p><a href="https://commons.wikimedia.org/wiki/File:Mendocino_Beacon_Building.jpg">Mendocino Beacon Building</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101320263516053157"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/ik4GHTux6wN">G+</a>). It feels like I haven’t been taking and posting enough photos. So here’s a cell phone shot that I took to illustrate the Wikipedia article on the <em><a href="https://en.wikipedia.org/wiki/Mendocino_Beacon">Mendocino Beacon</a></em>. The <em>Beacon</em> hasn’t actually lived there for nearly 20 years, but their old sign still hangs on the building.</p>
</li>
<li>
<p><em><a href="http://algorithms.wtf/">Algorithms</a></em> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101327166193790839"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/Vsin2Hxwpaj">G+</a>, <a href="https://3dpancakes.typepad.com/ernie/2018/12/steal-this-book-1.html">via</a>). Jeff Erickson’s open-licensed algorithms text is finally more-or-less complete and available in prepublication form.</p>
</li>
<li>
<p><a href="https://wyss.harvard.edu/studying-aliens-of-the-deep/">Using unfolded polyhedra to catch and later release deep-sea creatures without harming them</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101332999043783606"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/j42xnNxs7nW">G+</a>, <a href="https://news.ycombinator.com/item?id=18769435">via</a>).</p>
</li>
<li>
<p><a href="https://plus.google.com/100003628603413742554/posts/WSizeQTqrZH">In which I say goodbye to Google+</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101338372532836995"><script type="math/tex">\mathbb{M}</script></a>).</span></p>
</li>
</ul>David EppsteinLaTeX, the game (, G+, via). It should be an even higher level to get the commutative diagram to format in Wikipedia’s lobotomized version of LaTeX.Motorcycle graphs and the eventual fate of sparse Life2018-12-27T17:24:00+00:002018-12-27T17:24:00+00:00https://11011110.github.io/blog/2018/12/27/motorcycle-graphs-eventual<p>The <a href="http://jeffe.cs.illinois.edu/open/cycles.html">motorcycle graph</a> is a geometric structure devised by Jeff Erickson as a simplified model for the behavior of <a href="https://en.wikipedia.org/wiki/Straight_skeleton">straight skeletons</a>, motivated by the light cycle game in the movie Tron. Its initial data consists of a set of points in the plane (the motorcycles), each with an initial velocity. The motorcycles leave a trail behind them as they move, and a motorcycle crashes (stopping the growth of its trail) when it hits the trail of another motorcycle.</p>
<p style="text-align:center"><img src="/blog/assets/2018/motorcycle-graph.svg" alt="A motorcycle graph" /></p>
<p>The motorcycles can be constrained in various ways, and one of these constrained variants is much older. It’s the <a href="https://en.wikipedia.org/wiki/Gilbert_tessellation">Gilbert tessellation</a>, a motorcycle graph in which the motorcycles start out in pairs traveling in opposite directions, all at the same speed, with a random initial placement for the pairs. Edgar Gilbert wrote about it in 1967, as a model for the growth of <a href="https://en.wikipedia.org/wiki/Acicular_(crystal_habit)">acicular (needle-shaped) crystals</a> and similar systems.</p>
<p style="text-align:center"><a href="https://commons.wikimedia.org/wiki/File:Gilbert_tessellation.svg"><img src="/blog/assets/2018/Gilbert-tessellation.svg" alt="A Gilbert tessellation, by Claudio Rocchini" /></a></p>
<p>One obvious difference between the Gilbert tessellation and more general types of motorcycle graph is that all the Gilbert tessellation cells are convex polygons. More general motorcycle graphs leave degree-one vertices at the starting position of each motorcycle, but this is hidden by the way the Gilbert graph starts motorcycles in pairs. If we constrain the motorcycles even more, to travel in axis-parallel directions, the polygons become rectangles.</p>
<p style="text-align:center"><a href="https://commons.wikimedia.org/wiki/File:Gilbert_tessellation_axis.svg"><img src="/blog/assets/2018/Gilbert-rectangles.svg" alt="Axis-aligned Gilbert tessellation subdivides the plane into rectangles, by Claudio Rocchini" /></a></p>
<p>In my paper “<a href="https://arxiv.org/abs/0911.2890">Growth and decay in life-like cellular automata</a>” I noticed that the <a href="https://en.wikipedia.org/wiki/Life-like_cellular_automaton">Life-like cellular automaton</a> rule B017/S1 has a very simple <a href="https://en.wikipedia.org/wiki/Replicator_(cellular_automaton)">replicator</a> consisting of two orthogonally-adjacent live cells, and that initial fields consisting of very sparse randomly placed live cells become dominated by rows and columns of these replicators. Here’s an example for an initial random fill density of 1%, the lowest I can go in <a href="http://golly.sourceforge.net/">Golly</a>.</p>
<p style="text-align:center"><img src="/blog/assets/2018/b017s1.png" alt="Replicator chaos in B017/S1" /></p>
<p>Although I didn’t notice it at the time, this looks very similar to the rectangular Gilbert tessellation! I think that’s not a coincidence. With a fill density of <script type="math/tex">\varepsilon</script>, the most common constellation (connected group of live cells) of the initial configuration will be a single live cell, with density (number of constellations per unit area) approximately <script type="math/tex">1/\varepsilon</script> . But the isolated cells all die off immediately. The second most common constellations, with density <script type="math/tex">\Theta(1/\varepsilon^2)</script>, have two live cells. If the two cells are diagonally adjacent, they form a small oscillator, and if they are orthogonally adjacent, they form a replicator. The replicators will then grow either horizontally or vertically in both directions until they run into something, usually (but not always) another replicator. When two replicators collide, they tend to form a stable blob that blocks both of them. The one that was there first will usually (but not always) have copies of itself on both sides of the blob, so its line of copies stays more or less unchanged in place. The replicator that arrives second will usually (but not always) be blocked by the first replicator, and stay on one side of the collision point. And when replicators are bounded on both sides by stable blobs, they usually (but not always) turn into stable oscillators, continuing to fill the line they have already marked out. If all of the usual things always happened, we would get a Gilbert tessellation; instead, we get something that looks a lot like a Gilbert tessellation but with typically a constant number of oscillators in its rectangles and with occasional other differences from the expected behavior.</p>
<p>Could this happen for sparse initial conditions of <a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Conway’s Game of Life</a>? Maybe!</p>
<p>In a sequence of papers from 1998 to his 2010 “<a href="https://doi.org/10.1007/978-1-84996-217-9_20">Emergent Complexity in Conway’s Game of Life</a>”, Nick Gotts has explored the behavior of random Life initial conditions, in the limit as the fill density <script type="math/tex">\varepsilon</script> goes to zero. We don’t know what happens to these patterns in the long term, but we can say something rigorous about their behavior in the short and medium terms. Here, by “short term” I mean what happens after a constant number of steps, and by “medium term” I mean a number of steps that’s polynomial in <script type="math/tex">1/\varepsilon</script> with a small-enough exponent.</p>
<p>Initially, near most points of the plane, the nearest objects will be isolated cells, spaced <script type="math/tex">\Theta(\varepsilon^{-1/2})</script> units from each other (the inverse square root of their density). However, these immediately die off. So in the short term, the nearest objects will usually be “blonks” (blinkers and blocks, generated from initial constellations of three live cells), with density <script type="math/tex">\Theta(\varepsilon^3)</script> and spacing <script type="math/tex">\Theta(\varepsilon^{-3/2})</script>. More widely scattered are gliders, either generated directly from constellations of five initial live cells, or from <a href="http://www.conwaylife.com/wiki/R-pentomino">R pentominos</a> which create a bounded number of gliders before stabilizing. Both possibilities give the gliders density <script type="math/tex">\Theta(\varepsilon^5)</script>. Even more widely scattered, at density <script type="math/tex">\Theta(\varepsilon^{10})</script>, are the simplest patterns that produce infinite growth rather than stability or simple motion: the <a href="http://www.conwaylife.com/wiki/Block-laying_switch_engine">block-laying switch engines</a>, generated from initial constellations of ten live cells. These are puffer trains rather than replicators: they have a single live head that lays down a trail of blocks as it moves.</p>
<p>If the field stayed like this throughout the medium term, things would be boring. The gliders and switch engines would typically crash into blonks in <script type="math/tex">\Theta(\varepsilon^{-3})</script> steps, in most cases stopping their motion. And so one might expect that at numbers of steps with higher exponents, most points would have only stable or low-period debris as their nearest live pattern. Occasionally there would be a trail of a crashed and dead switch engine but these would be very far apart, at a typical distance <script type="math/tex">\Theta(\varepsilon^{-5})</script>, compared to their typical length of <script type="math/tex">\Theta(\varepsilon^{-3})</script>. So from a high-level point of view, these trails would just look like randomly placed line segments rather than forming anything like a motorcycle graph or Gilbert tessellation.</p>
<p>However, what Gotts discovered is that something much more complicated and confusing happens. The gliders (with short-term density <script type="math/tex">\varepsilon^5</script>) start crashing into blonks, but when they do they sometimes produce one or more new gliders. Those gliders, in turn, might crash into something else and produce even more gliders, perhaps including some that return to the previous crash site. Gotts defines a “standard collision sequence” to be a sequence of events of this type, involving a single initial glider and a widely scattered collection of blonks. There are finitely many different standard collision sequences that involve a given number <script type="math/tex">b</script> of initial blonks. Any one of these sequences can happen to a given glider with a probability that tends to a constant as the number of time steps goes to <script type="math/tex">\Theta(\varepsilon^{-3})</script>, the expected time for any glider to complete its collision sequence in the absence of interactions with the crash debris of other gliders.</p>
<p>But the crash debris starts to add up, preventing this analysis from actually staying valid all the way to that limiting point. In particular, some standard collision sequences can produce infinite growth patterns like the block-laying switch engine. If we ignored interactions with other gliders and just considered standard collision sequences, it would appear that the density of switch engines constructed in this way would approach <script type="math/tex">\varepsilon^5</script> as the number of time steps went to <script type="math/tex">\varepsilon^{-3}</script>, and therefore that the density of blocks in switch engine trails would approach <script type="math/tex">\varepsilon^2</script>, much more dense than the density of initial blonks. That can’t happen, and our analysis breaks down. What’s less clear and not rigorously proven is exactly how it breaks down.</p>
<p>One possibility for the breakdown is the following. Switch engines or other puffer engines start being produced in increasing density by standard collision sequences, and they start growing trails of blocks behind them. As their trails grow and the typical distance between the puffers shrinks, at some point these two distances cross over, and the trails become longer than the typical distance. This crossover distance is well below the <script type="math/tex">\varepsilon^{-3}</script> distance one would expect a puffer to travel before hitting an initial blonk. Once this happens, most puffers will crash into the trail of another puffer, and their trails will divide up space into something resembling a motorcycle graph. (It’s not a Gilbert tessellation, because each puffer starts out moving in a single direction.) The cells of this graph prevent anything else from moving across it, leading to eventual stabilization.</p>
<p>Another possibility is that some other pattern (perhaps initial or perhaps produced by a standard collision sequence) does something quickly enough to disrupt the creation of a motorcycle graph before it happens, or breaks through it after it is constructed. We don’t know what these patterns might look like, but we also don’t know that they don’t exist. Life patterns can do complicated things. Because so much is still unknown, what Gotts actually proves is more cautious: either infinite-growth patterns created from collision sequences eventually cause the total population to be significantly denser than its original density, or the infinite-growth patterns created through standard collision sequences will themselves become more dense than they were in the initial field.</p>
<p>(<a href="https://mathstodon.xyz/@11011110/101316148318254282"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/ehARHPdEkde">G+</a>)</p>David EppsteinThe motorcycle graph is a geometric structure devised by Jeff Erickson as a simplified model for the behavior of straight skeletons, motivated by the light cycle game in the movie Tron. Its initial data consists of a set of points in the plane (the motorcycles), each with an initial velocity. The motorcycles leave a trail behind them as they move, and a motorcycle crashes (stopping the growth of its trail) when it hits the trail of another motorcycle.Circles crossing at equal angles2018-12-22T14:39:00+00:002018-12-22T14:39:00+00:00https://11011110.github.io/blog/2018/12/22/circles-crossing-equal<p>Let <script type="math/tex">A</script>, <script type="math/tex">B</script>, <script type="math/tex">C</script>, and <script type="math/tex">D</script> be four circles, with pairs <script type="math/tex">AB</script>, <script type="math/tex">BC</script>, <script type="math/tex">CD</script>, and <script type="math/tex">DA</script> crossing at equal angles (and no crossings among the other two pairs). Then it turns out that the two curvy quadrilaterals forming the inside and outside boundaries of the union of disks each have a circle through their four vertices:</p>
<p style="text-align:center"><img src="/blog/assets/2018/4circle-45.svg" alt="Four circles crossing at equal angles, and the two circles through their crossing points" /></p>
<p>The proof of the theorem is not difficult, once you notice that it’s invariant under Möbius transformations: the four given circles and their crossing angles transform to another four circles with the same crossing angles, preserving any cocircularities among the eight crossing points.
So start by finding a Möbius transformation that makes two opposite circles <script type="math/tex">A</script> and <script type="math/tex">C</script> become the same size as each other. Because of the equality of crossing angles, both of the other two circles must have centers on the perpendicular bisector to line <script type="math/tex">AC</script>. There’s still a one-dimensional family of Möbius transformations remaining that preserves the position of <script type="math/tex">A</script> and <script type="math/tex">C</script> but moves the other circles along this bisector; use this remaining degree of freedom to move the other two circles so that their centers are equidistant from line <script type="math/tex">AC</script>. Then, because of the equality of crossing angles, circles <script type="math/tex">B</script> and <script type="math/tex">D</script> must have the same radii. So we have transformed the input to a position where the circles are centered at the vertices of a rhombus with opposite pairs having the same radius. By symmetry, the crossing points must lie on two rectangles, and the four corners of each rectangle are cocircular.</p>
<p style="text-align:center"><img src="/blog/assets/2018/4circle-rect.svg" alt="Four circles crossing at equal angles at the corners of a rhombus, and the two rectangles through their crossing points" /></p>
<p>This can be extended to some configurations of circles where the opposite pairs cross each other rather than staying disjoint, but you have to be more careful about what happens when more than two circles cross at one point, and about determining which of the two supplementary angles at each crossing to use as the crossing angle of the two circles. If you’re not careful, you get situations like the one below where two degenerate circles (the coordinate axes) are crossed at equal angles by two more circles, but where the eight crossings do not form another two circles.</p>
<p style="text-align:center"><img src="/blog/assets/2018/4circle-bad.svg" alt="Two degenerate circles (the coordinate axes) and two circles that cross them at equal angles, without forming two more sets of four cocircular points" /></p>
<p>Maybe the easiest way to state the more general result is that if a non-self-crossing quadrilateral with circular-arc sides has four equal interior angles at its vertices, then it is <a href="https://en.wikipedia.org/wiki/Cyclic_quadrilateral">cyclic</a>.
I used a special case of this, for right-angled quadrilaterals, in my paper “A Möbius-invariant power diagram and its applications to soap bubbles and planar Lombardi drawing” (<a href="https://doi.org/10.1007/s00454-014-9627-0"><em>Discrete Comput. Geom.</em> 2014</a>).
This formulation also works for the special case when all four angles are zero, which was used in a mesh generation algorithm by Bern, Mitchell, and Ruppert (“Linear-size nonobtuse triangulation of polygons”, <a href="https://doi.org/10.1007/BF02570715"><em>Discrete Comput. Geom.</em> 1995</a>).</p>
<p style="text-align:center"><img src="/blog/assets/2018/4circle-cusp.svg" alt="A chain of four tangent circles and a fifth circle through their four points of tangency" /></p>
<p>I don’t know whether this theorem has appeared previously, but it’s obviously related to <a href="/blog/2006/03/22/miquels-six-circles.html">Miquel’s six-circle theorem</a>, which takes five circles (without assumption about angles) and produces a sixth in a configuration closely resembling what you get from the four given circles and two produced circles of this theorem.</p>
<p>(<a href="https://mathstodon.xyz/@11011110/101287137001551762"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/9p3Hza4hGE1">G+</a>)</p>David EppsteinLet , , , and be four circles, with pairs , , , and crossing at equal angles (and no crossings among the other two pairs). Then it turns out that the two curvy quadrilaterals forming the inside and outside boundaries of the union of disks each have a circle through their four vertices:Linkage2018-12-15T16:21:00+00:002018-12-15T16:21:00+00:00https://11011110.github.io/blog/2018/12/15/linkage<p>This is my penultimate link roundup before I give up on Google+, rather than holding out for its <a href="https://www.theverge.com/2018/12/10/18134541/google-plus-privacy-api-data-leak-developers">rapidly-approaching demise</a>.</p>
<ul>
<li>
<p><a href="https://www.heise.de/newsticker/meldung/Urteil-gegen-Wikipedia-Keine-rufschaedigende-Kritik-ohne-Recherche-4209610.html">State Court of Berlin orders German Wikipedia to remove claims linking CS prof Alex Waibel to US intelligence</a> (<span style="white-space:nowrap"><a href="https://mathstodon.xyz/@11011110/101168679601881508"><script type="math/tex">\mathbb{M}</script></a>,</span> <a href="https://plus.google.com/100003628603413742554/posts/bZz9rbwxGyy">G+</a>, <a href="https://en.wikipedia.org/wiki/Wikipedia:Wikipedia_Signpost/2018-12-01/In_the_media">via</a>). “Whether the claims were justified or not was not taken into account by the court” — instead it seems the court disagrees with Wikipedia’s policy of repeating claims from published sources, and insists that potentially-harmful claims can only be published by people who have researched them directly.</p>
</li>
<li>
<p><a href="https://boingboing.net/2018/11/21/how-to-make-a-hollow-geodesic.html">How to make a hollow geodesic plywood ball</a> (<a href="https://mathstodon.xyz/@11011110/101181005688834045"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/hezBmdrQEby">G+</a>). I don’t actually care about the how-to part of the linked video, but the malachite-like patterns that emerge from the plywood layers on the resulting ball are quite pretty. If you think about it, it’s reversed from actual malachite, where the 3d structure involves nested spheres, and you get the patterns from a flat cut. Here, the 3d structure involves flat layers, and you get the patterns from a spherical cut.</p>
</li>
<li>
<p><a href="https://www.ceu.edu/article/2018-12-03/ceu-forced-out-budapest-launch-us-degree-programs-vienna-september-2019">The Hungarian far right forces the eviction of an entire university</a> (<a href="https://mathstodon.xyz/@11011110/101187102149104603"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/8Jtp8p7D3or">G+</a>, <a href="https://www.metafilter.com/178034/Chasing-away-individual-academics-is-so-20th-century">via</a>). They’ve also <a href="https://www.cnn.com/2018/10/19/europe/hungary-bans-gender-study-at-colleges-trnd/index.html">forbidden universities in the country from teaching gender studies</a>, using binary gender-essentialist rhetoric to do so.</p>
</li>
<li>
<p><a href="https://arxiv.org/abs/1812.01160">Rigid foldability is NP-hard</a> (<a href="https://mathstodon.xyz/@11011110/101192738067042040"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/6UzJZZ9mrR5">G+</a>). It was previously known that folding a purported origami folding pattern to a flat state is NP-hard, because you can encode logic in the way the paper gets in the way of itself. But this paper proves that it’s hard even to tell whether you can make any rigid motion at all starting from completely unfolded paper, well before self-interference kicks in. Instead, the difficulty involves getting sums of angles to come out right.</p>
</li>
<li>
<p><a href="https://www.acm.org/media-center/2018/december/fellows-2018">ACM announces their 2018 class of fellows</a> (<a href="https://mathstodon.xyz/@11011110/101198112257554333"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/g2WBXQiXJVC">G+</a>). Congratulations, new fellows! See also <a href="https://en.wikipedia.org/wiki/List_of_Fellows_of_the_Association_for_Computing_Machinery">Wikipedia’s coverage of all the ACM fellows</a>.
Quite a few are still missing articles, so if you want to improve Wikipedia’s coverage of computer scientists there’s still plenty to do.</p>
</li>
<li>
<p><a href="https://www.theguardian.com/technology/2018/dec/08/australias-war-on-encryption-the-sweeping-new-powers-rushed-into-law">Australia’s war on encryption: the sweeping new powers rushed into law</a> (<a href="https://mathstodon.xyz/@11011110/101203721468845168"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/bnDjwLdSwzb">G+</a>). With all the vague “end of the internet!” or “why is everyone so upset at such good idea” stories elsewhere on the new Australian backdoor-your-apps law, it’s good to see a piece that explains what it actually does. The moral seems to be: don’t allow or agree to any automatic updates while in Australia. Australians, if you want security from government snooping and from security flaws, tough luck.</p>
</li>
<li>
<p>“<a href="https://www.latimes.com/business/hiltzik/la-fi-hiltzik-uc-elsevier-20181207-story.html">In UC’s battle with the world’s largest scientific publisher, the future of information is at stake</a>” (<a href="https://mathstodon.xyz/@11011110/101206931146105182"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/bqo3gBpLKpG">G+</a>, <a href="http://retractionwatch.com/2018/12/08/weekend-reads-prominent-doctors-who-dont-disclose-conflicts-and-the-journals-that-enable-them-a-nudge-study-faces-scrutiny/">via</a>). Michael Hiltzik of the LA Times on the negotiations between the University of California and Elsevier over open access publishing. See also <a href="https://osc.universityofcalifornia.edu/scholarly-publishing/publisher-negotiations/">UC’s official summary of the negotiations</a>.</p>
</li>
<li>
<p><a href="https://gowers.wordpress.com/2018/12/09/taylor-and-francis-doing-trumps-dirty-work-for-him/">Taylor and Francis refuse to publish a mathematics paper after its editors and referees accepted it, because one ot its authors is Iranian</a> (<a href="https://mathstodon.xyz/@11011110/101218345151063193"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/7M1QGM5g3Lc">G+</a>). The paper in question appears to be “<a href="https://arxiv.org/abs/1408.1835">Saturation of generalized partially hyperbolic attractors</a>” by A. Fakhari and M. Soufi. The decision was <a href="http://euro-math-soc.eu/news/18/12/12/ems-condemns-taylor-franciss-attack-freedom-science">condemned by the European Mathematical Society</a> and <a href="https://www.insidehighered.com/quicktakes/2018/12/12/reversal-article-rejected-due-iran-sanctions">reversed after creating an uproar</a>, but it’s not clear from the reversal statement whether the publisher might try doing this again later.</p>
</li>
<li>
<p><a href="https://pudding.cool/2018/12/3d-cities-story/">Population mountains</a> (<a href="https://mathstodon.xyz/@11011110/101223944003938781"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/PTxsYK14jyA">G+</a>, <a href="https://www.metafilter.com/178163/Population-Mountains">via</a>). Nice 3d visualization of global urban population patterns, by Matt Daniels.</p>
</li>
<li>
<p><a href="https://gilkalai.wordpress.com/2018/12/12/nima-anari-kuikui-liu-shayan-oveis-gharan-and-cynthia-vinzant-solved-the-mihail-vazirani-conjecture/">Flip graphs of matroids are expanders</a> (<a href="https://mathstodon.xyz/@11011110/101229867536898045"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/idPdFLjsDHp">G+</a>, <a href="https://plus.google.com/117271457236114081433/posts/BBWDnosHkqy">via</a>). Gil Kalai reports on a new <a href="https://arxiv.org/abs/1811.01816">proof by Nima Anari, Kuikui Liu, Shayan Oveis Gharan, and Cynthia Vinzant</a> of a conjecture by Milena Mihail and Umesh Vazirani that any subset <script type="math/tex">S</script> of at most half of the bases of a matroid has at least <script type="math/tex">\vert S\vert</script> flips to a base outside <script type="math/tex">S</script>.</p>
</li>
<li>
<p><a href="http://www.citypages.com/news/this-data-map-of-minnesota-wolves-is-incredible/502160411">Map of the tracks of six wolf packs shows them carefully partitioning the wilderness into non-overlapping territories, and staying within their own</a> (<a href="https://mathstodon.xyz/@11011110/101237968215679261"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/LPuJdsJ8vAd">G+</a>). Higher resolution version at the linked reddit page.</p>
</li>
<li>
<p><a href="https://xkcd.com/2085/">xkcd on arXiv vs the commercial journals</a> (<a href="https://mathstodon.xyz/@11011110/101240953192359476"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/U7WxbHrPHoK">G+</a>). Infer what you will from the fact that xkcd is published open-access.</p>
</li>
<li>
<p><a href="https://www.metafilter.com/178225/Focus-on-the-Science-Not-the-Scientist">A move to double-blind reviewing fixes huge gender bias in acceptance rates for space telescope allocation competition</a> (<a href="https://mathstodon.xyz/@11011110/101242747864078086"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/8XTaw7uRPSv">G+</a>)</p>
</li>
</ul>David EppsteinThis is my penultimate link roundup before I give up on Google+, rather than holding out for its rapidly-approaching demise.General-position hypercube projections2018-12-08T16:40:00+00:002018-12-08T16:40:00+00:00https://11011110.github.io/blog/2018/12/08/general-position-hypercube<p>I recently posted about finding solutions to the <a href="https://en.wikipedia.org/wiki/No-three-in-line_problem">no-three-in-line problem</a> of finding large general-position subsets of grids, by <a href="/blog/2018/11/10/random-no-three.html">using the probabilistic method</a> or by <a href="/blog/2018/11/12/gurobi-vs-no.html">throwing an integer linear program solver at the problem</a>. Another potential method for finding solutions involves finding large general-position subsets in higher dimensions, where it’s easier (there’s more room to move the points out of the way of each other), and then projecting back down while being careful not to introduce any new collinearities.</p>
<p>A particularly nice family of general-position subsets is given by the hypercubes. The vertices of a <script type="math/tex">d</script>-dimensional hypercube can be described as the points in <script type="math/tex">d</script>-dimensional space all of whose coordinates are zeros and ones. There’s no way for three such points to lie on a line, because the middle of the three points would have to have fractional coordinates somewhere between the zero-one coordinates of the outer two points. So for the purposes of the no-three-in-line problem these points are in general position.</p>
<p>A projection of a hypercube onto the integer grid can be described (up to translations) by choosing <script type="math/tex">d</script> two-dimensional vectors and letting the projected points be all sums of subsets of these vectors. There are <script type="math/tex">2^d</script> subsets (including the empty subset and the subset of all vectors), and their sums give <script type="math/tex">2^d</script> points in the plane. It’s always possible to choose a <script type="math/tex">d</script>-tuple of vectors that causes these <script type="math/tex">2^d</script> points to remain in general position, but the question is how small we can make these vectors in order to make the projection stay within a small grid.</p>
<p>For <script type="math/tex">d\in\{2,3,4\}</script> the answer is that we can fit the points into a grid of size <script type="math/tex">2^{d-1}\times 2^{d-1}</script>. This is optimal because any smaller grid would cause more than two points to lie on the same horizontal or vertical grid line.</p>
<p style="text-align:center"><img src="/blog/assets/2018/gen-pos-cubes.svg" alt="hypercubes of dimension 2, 3, and 4, projected in general position into optimally-small grid squares" /></p>
<p>The simplicity of the <script type="math/tex">4</script>-dimensional projection (<script type="math/tex">16</script> points in an <script type="math/tex">8\times 8</script> grid with no three in line) makes me wonder whether this solution was the one Dudeney was trying to avoid in his <a href="https://archive.org/stream/amusementsinmath00dude#page/94/mode/2up">1917 statement of the problem</a>, when he added the extra condition that the solutions (described in terms of pawns on a chessboard) must include pawns at e4 and d5.</p>
<p>Unfortunately the <script type="math/tex">5</script>-dimensional hypercube doesn’t have a general-position projection onto a <script type="math/tex">16\times 16</script> grid. The best <a href="/blog/assets/2018/projcube.py">my search software</a> could find were several different <script type="math/tex">18\times 19</script> solutions. Here’s one of them:</p>
<p style="text-align:center"><img src="/blog/assets/2018/5cube-18x19.svg" alt="hypercube of dimension 5, projected in general position into an 18x19 grid" /></p>
<p>Beyond these specific examples, it would be interesting to obtain asymptotic bounds on how big a grid is needed for all hypercubes.</p>
<p>(<a href="https://mathstodon.xyz/@11011110/101208363611245952"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/iADVC9CsL1b">G+</a>)</p>David EppsteinI recently posted about finding solutions to the no-three-in-line problem of finding large general-position subsets of grids, by using the probabilistic method or by throwing an integer linear program solver at the problem. Another potential method for finding solutions involves finding large general-position subsets in higher dimensions, where it’s easier (there’s more room to move the points out of the way of each other), and then projecting back down while being careful not to introduce any new collinearities.Triply-Hamiltonian edge colorings2018-12-02T17:58:00+00:002018-12-02T17:58:00+00:00https://11011110.github.io/blog/2018/12/02/triply-hamiltonian-edge<p>Mark Jason Dominus recently made a blog post about the interesting observation that the <a href="https://blog.plover.com/math/dodecahedral-3-coloring.html">regular dodecahedron can have its edges properly colored with three colors so that every two colors form a Hamiltonian cycle</a>. Here’s another view of the same dodecahedral coloring:</p>
<p style="text-align:center"><img src="/blog/assets/2018/hamiltonian-dodecahedron.svg" alt="Triply-Hamiltonian edge coloring of a regular dodecahedron" /></p>
<p>Mark’s drawing is easier to recognize as the dodecahedron, but this drawing style makes clear the Hamiltonicity of one of the pairs of colors: just look at the outer cycle. As with every planar graph drawn like this as a Hamiltonian cycle plus some diagonals, the diagonals can be partitioned into two non-crossing subsets, belonging to the front and back sides of an embedding of the graph onto a <a href="https://en.wikipedia.org/wiki/Dihedron">dihedron</a>. I’ve shown this by casing the crossings to show which diagonal is front and which is back at each crossing. The diagonals subdivide the front and back into the faces of the planar embedding and you can trace through the faces to check that there are 12 pentagons, six on the front and six on the back.</p>
<p>This property of having a triply-Hamiltonian edge coloring is not special to the dodecahedron. It’s known to be true of every 3-regular graph whose edge coloring is unique (up to permutation of colors). This class of graphs includes the graph of the tetrahedron (<script type="math/tex">K_4</script>) as well as the non-planar generalized Petersen graph <script type="math/tex">G(9,2)</script>.</p>
<p style="text-align:center"><img src="/blog/assets/2018/generalized-Petersen-9-2.svg" alt="Triply-Hamiltonian edge coloring of the generalized Petersen graph G(9,2)" /></p>
<p>The proof that uniquely 3-edge colorable graphs must be triply Hamiltonian is easy: if not, some two colors would form a 2-regular subgraph with multiple connected components, and you could get a different edge coloring by swapping the colors in one of the components. And there cannot be any other Hamiltonian cycles in these graphs, because every Hamiltonian cycle leads to a coloring like the one in the first illustration that alternates colors around the cycle and uses the third color for the diagonals. The larger generalized Petersen graphs <script type="math/tex">G(6k+3,2)</script> are still triply-Hamiltonian; they have exactly three Hamiltonian cycles but do not have a unique edge coloring.<sup id="fnref:t82"><a href="#fn:t82" class="footnote">1</a></sup></p>
<p>Two uniquely 3-edge colorable graphs can be glued together by removing one vertex from each graph and reattaching the neighbors of the removed vertices by three new edges.</p>
<p style="text-align:center"><img src="/blog/assets/2018/glue-edge-coloring.svg" alt="Gluing two 3-edge-colored graphs together)" /></p>
<p>Starting from <script type="math/tex">K_4</script> and <script type="math/tex">G(9,2)</script>, this produces infinitely many uniquely 3-edge colorable graphs. The ones glued from only copies of <script type="math/tex">K_4</script> are planar (the duals of the <a href="https://en.wikipedia.org/wiki/Apollonian_network">Apollonian networks</a>) but the ones involving <script type="math/tex">G(9,2)</script> are nonplanar.<sup id="fnref:bh15"><a href="#fn:bh15" class="footnote">2</a></sup>
As far as I know, all uniquely 3-edge colorable graphs are generated from <script type="math/tex">K_4</script> and <script type="math/tex">G(9,2)</script> by this operation, with one exception: the two-vertex three-edge multigraph, which is the identity element for the operation.
If so, this would lead to a polynomial time algorithm for recognizing and coloring these graphs. The same operation also preserves triply-Hamiltonian edge colorings even when they aren’t the unique 3-edge-coloring of the graph.</p>
<p>Another operation does not preserve unique 3-edge-coloring, but it does preserve triply-Hamiltonian edge coloring: take any two differently-colored edges of a single graph, subdivide them into three-edge paths, and connect the four new vertices in pairs.</p>
<p style="text-align:center"><img src="/blog/assets/2018/subdivide-edge-coloring.svg" alt="Subdividing two edges in a triply-Hamiltonian 3-edge-colored graph" /></p>
<p>For instance, depending on how you choose the two edges, you can use this operation to get from the two-vertex multigraph to either the triangular prism or the non-planar complete bipartite graph <script type="math/tex">K_{3,3}</script>.</p>
<p>You can’t get the dodecahedron or <script type="math/tex">G(9,2)</script> by these operations (they have neither 4-cycles nor 3-edge cuts) but by using these operations, you can get infinitely many other triply-Hamiltonian graphs. In fact, it seems difficult to find 3-vertex-connected cubic graphs that are not triply-Hamiltonian! So I’ll conclude by giving two families of graphs that are not triply-Hamiltonian.</p>
<p>The first non-triply-Hamiltonian family is the family of <a href="https://en.wikipedia.org/wiki/Prism_graph">prism graphs</a> over odd polygons: the pentagonal prism, heptagonal prism, etc. We have already seen that the first graph in this family, the triangular prism, is triply-Hamiltonian, but the rest are not. They only have one Hamiltonian cycle, up to symmetries of the graph: the cycle that uses all but one edge from each of the two non-quadrilateral faces of the prism, and connects the resulting two paths by two edges of one of the quadrilaterals. But the three-edge-coloring that you get from this Hamiltonian cycle has only two colors on some of the quadrilateral faces, so those pairs of colors do not themselves form Hamiltonian cycles.</p>
<p>The second non-triply-Hamiltonian family is the family of planar 3-regular bipartite graphs (including the cube, the rest of the prisms, and a lot more graphs besides). To see this, let <script type="math/tex">G</script> be a planar 3-regular bipartite graph.
If <script type="math/tex">G</script> is not Hamiltonian then obviously it is not triply-Hamiltonian; otherwise, draw <script type="math/tex">G</script> as in the first illustration, with two colors alternating around an outer Hamiltonian cycle and the third color used for all the interior diagonals. And, as in the first illustration, partition the interior diagonals into the ones on the front and back sides of an embedding onto a dihedron.
These diagonals partition the front and back sides into the faces of a planar embedding.</p>
<p>The number of front faces is one more than the number of front diagonals, and the number of back faces is one more than the number of back diagonals, so the total number of faces is more than the total number of diagonals.
There are two kinds of vertex in each face: “inner vertices” incident to a diagonal edge of the face, and “outer vertices” incident to two edges of the outer Hamiltonian cycle that both belong to the face. Every face has an even number of inner vertices, so if the graph is to be bipartite every face must also have an even number of outer vertices (zero or at least two). Because there are two outer vertices per diagonal (on the other side of the dihedron from the diagonal) but more faces than diagonals, there must be at least one face with no outer vertices. But then this face has edges that alternate between only two colors, and these two colors cannot form a Hamiltonian cycle. Since we can apply this argument to every three-edge-coloring of a bipartite planar graph in which two of the colors form a Hamiltonian cycle, this proves that no planar bipartite graph can be triply Hamiltonian.</p>
<p>On the other hand, planarity is essential to this argument, as we have already seen an example of a triply-Hamiltonian bipartite graph, the graph <script type="math/tex">K_{3,3}</script>. By gluing copies of <script type="math/tex">K_{3,3}</script> together, we can get arbitrarily large triply-Hamiltonian bipartite graphs, all of which must be nonplanar.</p>
<div class="footnotes">
<ol>
<li id="fn:t82">
<p>Thomason, Andrew (1982), “<a href="https://doi.org/10.1002%2Fjgt.3190060218">Cubic graphs with three Hamiltonian cycles are not always uniquely edge colorable</a>”, <em>J. Graph Th.</em> 6 (2): 219–221. <a href="#fnref:t82" class="reversefootnote">↩</a></p>
</li>
<li id="fn:bh15">
<p>belcastro, sarah-marie, and Haas, Ruth (2015), “<a href="https://arxiv.org/abs/1508.06934">Triangle-free uniquely 3-edge colorable cubic graphs</a>”, <em>Contributions to Discrete Mathematics</em> 10 (2): 39–44. <a href="#fnref:bh15" class="reversefootnote">↩</a></p>
</li>
</ol>
</div>
<p>(<a href="https://mathstodon.xyz/@11011110/101174690700738835"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/BA3qxsSQv8N">G+</a>)</p>David EppsteinMark Jason Dominus recently made a blog post about the interesting observation that the regular dodecahedron can have its edges properly colored with three colors so that every two colors form a Hamiltonian cycle. Here’s another view of the same dodecahedral coloring:Linkage2018-11-30T23:40:00+00:002018-11-30T23:40:00+00:00https://11011110.github.io/blog/2018/11/30/linkage<p>In which I discover <a href="https://github.com/gettalong/kramdown/issues/46">kramdown’s inability to pass raw vertical-bar characters to MathJax</a>… (workaround: use <code class="highlighter-rouge">\vert</code>)</p>
<ul>
<li>
<p><a href="http://euro-math-soc.eu/news/18/11/16/ems-protest-against-detention-bet%C3%BCl-tanbay">Turkish arrest of Betül Tanbay</a> (<a href="https://mathstodon.xyz/@11011110/101085263553828399"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/WqpkEA4c816">G+</a>, <a href="https://plus.google.com/+EuromathsocEurope/posts/ZZzHCaM4KAy">via</a>, <a href="https://gowers.wordpress.com/2018/11/16/worrying-news-from-turkey/">via2</a>). Tanbay is the former president of the Turkish Mathematical Society, and was accused of implausible crimes, but released the next day after an international furor. Many of the other academics Turkey has done the same to in their totalitarian clampdown haven’t fared as well.</p>
</li>
<li>
<p><a href="https://liorpachter.wordpress.com/2018/11/05/i-was-wrong-part-3/">Lior Pachter fesses up to once being juvenile</a> about names of mathematics theorems, and connects it to the recent kerfuffle over <a href="https://nips.cc/Conferences/2018/News">whether the NIPS conference should change its name</a> to something that isn’t simultaneously a reference to female anatomy and an anti-asian slur (<a href="https://mathstodon.xyz/@11011110/101090969808225349"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/2p9qGrVX5nV">G+</a>, <a href="http://retractionwatch.com/2018/11/10/weekend-reads-a-debate-over-journal-editors-academic-corruption-in-china-a-poisoning-in-a-lab/">via</a>).</p>
</li>
<li>
<p><a href="http://aperiodical.com/2018/11/baking-babylonian-cuneiform-tablets-in-gingerbread/">Baking Babylonian cuneiform tablets in gingerbread</a> (<a href="https://mathstodon.xyz/@11011110/101096095505409838"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/7Wo5KRKmxMR">G+</a>, <a href="https://plus.google.com/+Aperiodical/posts/Jbuwd3V3eSz">via</a>). It’s a gingerbread replica of <a href="https://en.wikipedia.org/wiki/YBC_7289">YBC 7289</a>! This Babylonian tablet shows a highly accurate sexagesimal representation of the square root of two as the diagonal of a unit square.</p>
</li>
<li>
<p><a href="https://arxiv.org/abs/1811.06482">A note on universal point sets for planar graphs</a> (<a href="https://mathstodon.xyz/@11011110/101104544122642667"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/JZtwu56C9v9">G+</a>). A universal point set is a set of points that can be used as the vertices for straight-line drawings of every <script type="math/tex">n</script>-vertex planar graph. We still don’t know how big they have to be, as the best lower bounds are only a little more than <script type="math/tex">n</script> while the best upper bounds are quadratic, but now the best lower bounds are a little bigger than they were thanks to this new preprint by Scheucher, Schrezenmaier, and Steiner.</p>
</li>
<li>
<p><a href="https://arxiv.org/abs/1202.5614">Survey on fusible numbers</a> (<a href="https://mathstodon.xyz/@11011110/101108014334584225"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/JAe7AvQ68B5">G+</a>, <a href="https://mathstodon.xyz/@jeffgerickson/101043945178816599">via</a>). Fusible numbers are what you get from <script type="math/tex">0</script> by operations <script type="math/tex">f(x,y)=(x+y+1)/2</script> restricted to <script type="math/tex">\left\vert x-y\right\vert \lt 1</script>. They model a puzzle of measuring time intervals using <script type="math/tex">1</script>-minute fuses whose ends you can light when another fuse burns out, and are well-ordered with unknown order type. In the via link, Jeff Erickson calls his (wrong) conjecture “one of my bugs that really should be better known” and points out the lack of progress since 2012.</p>
</li>
<li>
<p><a href="https://thewalrus.ca/the-greatest-mathematician-youve-never-heard-of/">Robert Langlands, Edward Frenkel, and their differing approaches to the Langlands program</a> (<a href="https://mathstodon.xyz/@11011110/101113575475605646"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/bdCYDN3wbZX">G+</a>, <a href="https://mathstodon.xyz/@seta/101105098859601328">via</a>).</p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/Fountain_(Duchamp)">Duchamp’s <em>Fountain</em>, again</a> (<a href="https://mathstodon.xyz/@11011110/101118679269577252"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/DEHLsHfFPTG">G+</a>). This time, the question isn’t who actually created it, but how to describe its change of orientation from a normally positioned urinal.</p>
</li>
<li>
<p><a href="https://www.thisiscolossal.com/2018/11/new-handmade-paper-toys-by-haruki-nakamura/">Handmade paper toys by Haruki Nakamura spring, fold, and jump into action</a> (<a href="https://mathstodon.xyz/@11011110/101124742457807058"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/EAqsmxF1px7">G+</a>).</p>
</li>
<li>
<p><a href="https://twitter.com/cstheory">TCS aggregator</a> for collecting new theoretical computer science content as a twitter stream (<a href="https://mathstodon.xyz/@11011110/101133471061212768"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/bTzzCZdHHWM">G+</a>), newly <a href="https://cstheory.stackexchange.com/a/41907/95">handed over from its creator Arvind Narayanan to Suresh Venkatasubramanian</a>.</p>
<p>While I’m posting about feeds, here are some <a href="https://mastodon.at/@switchingsocial/100368443255001645">instructions for obtaining RSS feeds for Mastodon accounts</a>.</p>
</li>
<li>
<p><a href="https://www.theglobeandmail.com/opinion/article-derek-pyne-and-the-future-of-academic-freedom/">Academic freedom and Derek Pyne</a> (<a href="https://mathstodon.xyz/@11011110/101136466078213671"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/M86QPNvUTHs">G+</a>). Unless the story has another side that we haven’t heard, it’s quite disturbing: Pyne, an econ professor at Thompson Rivers University in Canada, published a <a href="https://muse.jhu.edu/article/652022/">peer-reviewed study showing that many of his colleagues had been using predatory publishers</a>, and rather than addressing the issue the campus administrators suspended him and banned him from campus for being a troublemaker.</p>
</li>
<li>
<p><a href="https://dreamsofspace.blogspot.com/2018/10/stories-about-seagull-1966.html">Stories About a “Seagull”</a> (<a href="https://mathstodon.xyz/@11011110/101141961394148482"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/XfKLgTDKfNw">G+</a>, <a href="https://plus.google.com/107472103813015966933/posts/3Kuu1YwnMm5">via</a>). UCI librarian John Sisson posts scans of a 1966 Soviet children’s book about astronaut Valentina Tereshkova.</p>
</li>
<li>
<p><a href="https://www.nytimes.com/2018/11/26/science/crumple-paper-math.html">In a ball of paper, scientists discover a landscape of surprising mathematical order</a> (<a href="https://mathstodon.xyz/@11011110/101144217571216853"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/M4Es7k64t9N">G+</a>, <a href="https://twitter.com/bit_player/status/1067398386670800896">via</a>). Siobhan Roberts in the NYT writes about Omer Gottesman’s discovery that <a href="https://doi.org/10.1038/s42005-018-0072-x">when repeatedly crumpling paper, the total length of the creases is surprisingly predictable</a>.</p>
</li>
<li>
<p><a href="https://www.quantamagazine.org/tadashi-tokieda-collects-math-and-physics-surprises-20181127/">Tadashi Tokieda discovers new physical phenomena by looking at the everyday world with the eyes of a child</a> (<a href="https://mathstodon.xyz/@11011110/101155435491139782"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/hzSb9zyKThX">G+</a>, <a href="https://plus.google.com/+QuantamagazineOrgNews/posts/J2oDKTn9V4V">via</a>).</p>
</li>
<li>
<p><a href="https://www.alisonmarr.com/cyoa.html">Choose your own adventure</a> (<a href="https://mathstodon.xyz/@11011110/101158761287268180"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/dwtVCvHy7Vz">G+</a>). Alison Marr and two students visualize the graph structures of choose-your-own-adventure books.</p>
</li>
<li>
<p><a href="https://www.chronicle.com/article/How-Academic-Corruption-Works/244703">Larry Lessig on how “industry influence can affect even the ethically engaged professional”</a> (<a href="https://mathstodon.xyz/@11011110/101162836386569713"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/Zv51Cx1KsJw">G+</a>). And how this corruption can lead to anti-scientific popular backlashes such as the anti-GMO movement. Excerpt from his book <em>America, Compromised</em> in <em>The Chronicle of Higher Education</em>; may require subscription for access.</p>
</li>
</ul>David EppsteinIn which I discover kramdown’s inability to pass raw vertical-bar characters to MathJax… (workaround: use \vert)Linkage2018-11-15T22:14:00+00:002018-11-15T22:14:00+00:00https://11011110.github.io/blog/2018/11/15/linkage<p>I’m gradually shifting weight to my Mastodon account and away from my doomed G+, but I hope to stick with both through the end of the year to provide a gradual transition. Today’s step: the Mastodon links go first.</p>
<ul>
<li>
<p><a href="https://www.thisiscolossal.com/2018/11/geometric-drawings-by-albert-chamillard/">Meditative geometric shapes doodled on old ledgers by Albert Chamillard</a> (<a href="https://mathstodon.xyz/@11011110/101002990210314449"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/7uwkFaBvhUr">G+</a>).</p>
</li>
<li>
<p><a href="https://mathlesstraveled.com/2018/10/29/post-without-words-23/">Post without words: A sequence of mathematical images in search of an explanation</a> (<a href="https://mathstodon.xyz/@11011110/101011048144015749"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/G67oSSootvr">G+</a>). What are these paths of randomly-placed dots that seem to explode in some sort of binary tree pattern from the bottom left corner of the images? (Don’t read the comments farther down on the post unless you want spoilers.)</p>
</li>
<li>
<p><a href="https://math.stackexchange.com/questions/2972454/rolling-icosahedron-hamiltonian-path">Symmetric graphs constructed as the state spaces of rolling dice of different shapes</a> (<a href="https://mathstodon.xyz/@11011110/101015589539981534"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/KoW9DG8gBTV">G+</a>). It doesn’t say so in the post, but Ed Pegg pointed out separately to me that if you do this with a regular octahedron (d8) you get the Nauru graph (see <a href="https://en.wikipedia.org/wiki/File:Rollingoctahedron.svg">Ed’s new illustration of this</a>). A dodecahedron (d12) should get you a nice 5-regular 120-vertex graph (because each face has 10 orientations) – anyone have any idea what’s known about this graph?</p>
</li>
<li>
<p><a href="https://www.acsh.org/news/2018/10/30/1-4-statisticians-say-they-were-asked-commit-scientific-fraud-13554">1 in 4 statisticians say they were asked to commit scientific fraud</a> (<a href="https://mathstodon.xyz/@11011110/101022276346253274"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/SW8xe9GoFTB">G+</a>, <a href="https://news.ycombinator.com/item?id=18364518">via</a>). One of the reasons I like working in a discipline based more on proof and less on experiment: I have a difficult time imagining what “mathematical fraud” might be, or why one might be pressured to commit it. Uninteresting math, or more-complicated-than-necessary math, sure, but deliberately-wrong math? Why would you do that?</p>
</li>
<li>
<p><a href="https://cstheory.stackexchange.com/q/41846/95">How can we randomly sample degeneracy orderings of graphs?</a> (<a href="https://mathstodon.xyz/@11011110/101027433040011088"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/bCNxoMS3Pmy">G+</a>). These are the orderings you get by setting a counter <script type="math/tex">k</script> to zero, and then repeatedly either removing a vertex of degree <script type="math/tex">k</script> (if there is one) or incrementing <script type="math/tex">k</script> (otherwise); they define an <a href="https://en.wikipedia.org/wiki/Antimatroid">antimatroid</a>. My intuition is that counting them (or generating exactly uniform samples) might be <script type="math/tex">\#\mathsf{P}</script>-complete, but I don’t have a proof.</p>
</li>
<li>
<p><a href="https://www.ams.org/profession/ams-fellows/new-fellows">The 2019 class of fellows of the American Mathematical Society</a> (<a href="https://mathstodon.xyz/@11011110/101031865022374252"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/YpB3HuJ4Mtc">G+</a>). There are surprisingly many new fellows with a theoretical computer science connection, including Saugata Basu, Bonnie Berger, Aravind Srinivasan, Moshe Vardi, and Eric Vigoda.</p>
</li>
<li>
<p><a href="https://www.reed.edu/reed_magazine/march2016/articles/features/irena-swanson.html">The geometric quilts of Irena Swanson</a> (<a href="https://mathstodon.xyz/@11011110/101037762263567476"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/Jy4xshY7dUV">G+</a>). Swanson is a commutative algebraist, one of the new AMS Fellows. See also her own sites on <a href="http://people.reed.edu/~iswanson/quilt.html">geometric quilting</a> and <a href="https://www.tubepiecing.com/">tube piecing</a>.</p>
</li>
<li>
<p><a href="https://blogs.scientificamerican.com/roots-of-unity/the-queen-of-the-fold-and-cut-alphabet/">The Queen</a> of the <a href="https://blogs.scientificamerican.com/roots-of-unity/make-your-own-font-1-cut-at-a-time/">fold-and-cut alphabet</a> (<a href="https://mathstodon.xyz/@11011110/101045284528321059"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/aDBfBSu8xn8">G+</a>). Two posts by Evelyn Lamb about the theorem that you can make any shape by folding and one cut, and a alphabet based on this principle by Katie Steckles with the Demaines.</p>
<p>A small peeve: Lamb and Steckles omit credit for some theorem authors.
If you want to design your own, the <a href="http://jorigami.sourceforge.net/">disk packing method has been
implemented</a> (I <a href="/blog/2007/04/13/houdinis-trick-implemented.html">posted about this
already once long ago</a>) but I think that the straight
skeleton method produces prettier folding patterns when it works (it
doesn’t always).</p>
</li>
<li>
<p><a href="https://apod.nasa.gov/apod/ap181109.html">Little Planet Lookout, by Gyorgy Soponyai</a> (<a href="https://mathstodon.xyz/@11011110/101055220166468969"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/2eYNGnor3iF">G+</a>, <a href="https://plus.google.com/+AstronomyPictureOfTheDay/posts/abTukk6EBVP">via</a>). Where did all the circles in this image come from? Some of them, traced by stars across the night sky, form an <a href="https://en.wikipedia.org/wiki/Apollonian_circles">elliptic pencil</a> converging to the north and south celestial poles. Others come from the latticework of a lookout tower, transformed into more pencils of circles. The horizon also appears, less clearly, as a small dark circle near the center of the image.</p>
</li>
<li>
<p><a href="http://b3s23life.blogspot.com/2018/11/new-tools-for-self-construction.html">New tools for self-construction in Conway’s Game of Life</a> (<a href="https://mathstodon.xyz/@11011110/101068476442717963"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/TeLA61WjnZr">G+</a>). Self-constructing spaceships are getting smaller, more visually clear (not just looking like a line) and more varied. And there’s a hint of a new and improved <a href="http://conwaylife.com/wiki/Metacell">metacell</a> that can simulate Life or other cellular automata, with empty space as its off state, so you could start any simulation with finitely many live cells. The key to all this is new software to find glider salvos that build constellations of still lifes.</p>
</li>
<li>
<p><a href="http://www.openculture.com/2018/11/prepare-online-database-600-overlooked-female-artists-15th-19th-centuries.html">A Space of Their Own</a> (<a href="https://mathstodon.xyz/@11011110/101074232585283370"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/DVMn2HgPVZE">G+</a>, <a href="http://en.wikipedia.org/wiki/Special:Diff/868574917">via</a>). A new and under-construction database of over 600 overlooked female artists from the 15th to 19th centuries.</p>
<p>“Many of their female creators were acclaimed during their lifetimes. By the time Fortune [the founder of the project] set about restoring their work – and visibility – to the public view, they were virtually unknown, even to museum staff.”</p>
</li>
<li>
<p><a href="https://blog.plover.com/math/pow23tab.html">A puzzle about representing numbers as a sum of 3-smooth numbers</a> (<a href="https://mathstodon.xyz/@mjd/101064932333632993"><script type="math/tex">\mathbb{M}</script></a>, <a href="https://plus.google.com/100003628603413742554/posts/fQZw4pcCbTE">G+</a>). No two of the numbers in the sum can be pairwise divisible, so you can’t just use powers of two.</p>
</li>
</ul>David EppsteinI’m gradually shifting weight to my Mastodon account and away from my doomed G+, but I hope to stick with both through the end of the year to provide a gradual transition. Today’s step: the Mastodon links go first.Gurobi versus the no-three-in-line problem2018-11-12T16:30:00+00:002018-11-12T16:30:00+00:00https://11011110.github.io/blog/2018/11/12/gurobi-vs-no<p>For the <a href="https://en.wikipedia.org/wiki/No-three-in-line_problem">no-three-in-line problem</a>, it has been known since the 1990s that <script type="math/tex">n\times n</script> grids with <script type="math/tex">n\le 46</script> have sets of <script type="math/tex">2n</script> points with no three in line. Those results, by Achim Flammenkamp, were based on custom search software and a lot of compute time. I was curious to see how far one could get with more-modern but generic optimization codes, so this weekend I ran a little experiment.</p>
<p>I think that in this area, most general-purpose solvers can be reasonably divided into two categories: integer linear program solvers, and satisfiability solvers. For the no-three-in-line problem, we have <script type="math/tex">0</script>-<script type="math/tex">1</script> integer variables (<script type="math/tex">1</script> if a point is included, <script type="math/tex">0</script> if it is excluded), linear constraints (the sum of variables on any line should be at most <script type="math/tex">2</script>), and a linear optimization criterion (maximize the sum of variables). So this led me to look at integer linear program solvers rather than satisfiability solvers. Based on <a href="http://strimas.com/prioritization/ilp-performance/">a comparison by Matt Strimas-Mackey</a>, I chose <a href="http://www.gurobi.com/">Gurobi</a> over several open-source alternatives. Gurobi is not open source, but it is free for academic purposes.</p>
<p>This was my first experience with an ILP solver, and my impression was that everything “just worked”. Gurobi was easy to download and install, easy to run, and easy to program following the model of their <a href="http://www.gurobi.com/documentation/8.1/quickstart_windows/py_simple_python_example.html">simple Python example</a> in their Quick Start Guide.</p>
<p>On the other hand, although it worked quickly for small grids, it was far from being able to reach the grid sizes already solved by Flammenkamp. With the formulation of the problem that I used, the boundary between easy and difficult problems was between <script type="math/tex">n=13</script> (five seconds to solve on my laptop) and <script type="math/tex">n=14</script> (thirty minutes to solve). It’s important to remember, though, that this was my first attempt at coding up anything as an integer linear program, and my first time using this system. So it’s entirely likely that an expert user of the system would know some tricks that would let it get farther.</p>
<p>Perhaps it’s also important to remember that for <script type="math/tex">n=13</script> it’s searching through a space of <script type="math/tex">7.5\times 10^{50}</script> possible solutions, and for <script type="math/tex">n=14</script> that blows up to approximately <script type="math/tex">10^{59}</script>. So the fact that it can solve these at all, and do so relatively quickly, is quite impressive.</p>
<p>In case anyone else wants to try it, here’s my code:</p>
<figure class="highlight"><pre><code class="language-python" data-lang="python"><span class="n">n</span> <span class="o">=</span> <span class="mi">14</span>
<span class="kn">from</span> <span class="nn">gurobipy</span> <span class="kn">import</span> <span class="o">*</span>
<span class="kn">from</span> <span class="nn">fractions</span> <span class="kn">import</span> <span class="n">gcd</span>
<span class="c"># Construct the grid points and the lines through them</span>
<span class="n">points</span> <span class="o">=</span> <span class="p">[(</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">)</span> <span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">)]</span>
<span class="n">lines</span> <span class="o">=</span> <span class="p">{}</span>
<span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">points</span><span class="p">:</span>
<span class="k">for</span> <span class="n">q</span> <span class="ow">in</span> <span class="n">points</span><span class="p">:</span>
<span class="k">if</span> <span class="n">p</span> <span class="o">!=</span> <span class="n">q</span><span class="p">:</span>
<span class="n">a</span> <span class="o">=</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">q</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span>
<span class="n">b</span> <span class="o">=</span> <span class="n">q</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">-</span> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">c</span> <span class="o">=</span> <span class="n">p</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span><span class="o">*</span><span class="n">q</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span> <span class="o">-</span> <span class="n">p</span><span class="p">[</span><span class="mi">1</span><span class="p">]</span><span class="o">*</span><span class="n">q</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span>
<span class="n">g</span> <span class="o">=</span> <span class="n">gcd</span><span class="p">(</span><span class="n">gcd</span><span class="p">(</span><span class="n">a</span><span class="p">,</span><span class="n">b</span><span class="p">),</span><span class="n">c</span><span class="p">)</span>
<span class="n">L</span> <span class="o">=</span> <span class="p">(</span><span class="n">a</span><span class="o">//</span><span class="n">g</span><span class="p">,</span><span class="n">b</span><span class="o">//</span><span class="n">g</span><span class="p">,</span><span class="n">c</span><span class="o">//</span><span class="n">g</span><span class="p">)</span>
<span class="k">if</span> <span class="n">L</span> <span class="ow">not</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
<span class="n">lines</span><span class="p">[</span><span class="n">L</span><span class="p">]</span> <span class="o">=</span> <span class="p">{</span><span class="n">p</span><span class="p">,</span><span class="n">q</span><span class="p">}</span>
<span class="k">else</span><span class="p">:</span>
<span class="n">lines</span><span class="p">[</span><span class="n">L</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">p</span><span class="p">)</span>
<span class="n">lines</span><span class="p">[</span><span class="n">L</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">q</span><span class="p">)</span>
<span class="c"># Create an ILP with a 0-1 variable per grid point,</span>
<span class="c"># maximizing the number of variables we set to 1</span>
<span class="n">m</span> <span class="o">=</span> <span class="n">Model</span><span class="p">()</span>
<span class="nb">vars</span> <span class="o">=</span> <span class="p">{</span><span class="n">p</span><span class="p">:</span> <span class="n">m</span><span class="o">.</span><span class="n">addVar</span><span class="p">(</span><span class="n">vtype</span><span class="o">=</span><span class="n">GRB</span><span class="o">.</span><span class="n">BINARY</span><span class="p">)</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">points</span><span class="p">}</span>
<span class="n">m</span><span class="o">.</span><span class="n">setObjective</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="nb">vars</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">points</span><span class="p">),</span> <span class="n">GRB</span><span class="o">.</span><span class="n">MAXIMIZE</span><span class="p">)</span>
<span class="c"># Add constraints for at most two points on each line</span>
<span class="k">for</span> <span class="n">L</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">:</span>
<span class="k">if</span> <span class="nb">len</span><span class="p">(</span><span class="n">lines</span><span class="p">[</span><span class="n">L</span><span class="p">])</span> <span class="o">></span> <span class="mi">2</span><span class="p">:</span>
<span class="n">m</span><span class="o">.</span><span class="n">addConstr</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="nb">vars</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">lines</span><span class="p">[</span><span class="n">L</span><span class="p">])</span> <span class="o"><=</span> <span class="mi">2</span><span class="p">)</span>
<span class="c"># To speed things up tell it that we only care about perfect solutions</span>
<span class="n">m</span><span class="o">.</span><span class="n">addConstr</span><span class="p">(</span><span class="nb">sum</span><span class="p">(</span><span class="nb">vars</span><span class="p">[</span><span class="n">p</span><span class="p">]</span> <span class="k">for</span> <span class="n">p</span> <span class="ow">in</span> <span class="n">points</span><span class="p">)</span> <span class="o">>=</span> <span class="mi">2</span><span class="o">*</span><span class="n">n</span><span class="p">)</span>
<span class="n">m</span><span class="o">.</span><span class="n">optimize</span><span class="p">()</span>
<span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="k">for</span> <span class="n">j</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">n</span><span class="p">):</span>
<span class="n">s</span> <span class="o">=</span> <span class="s">"."</span>
<span class="k">if</span> <span class="nb">vars</span><span class="p">[</span><span class="n">i</span><span class="p">,</span><span class="n">j</span><span class="p">]</span><span class="o">.</span><span class="n">x</span> <span class="o">></span> <span class="mf">0.5</span><span class="p">:</span>
<span class="n">s</span> <span class="o">=</span> <span class="s">"O"</span>
<span class="k">print</span> <span class="n">s</span><span class="p">,</span>
<span class="k">print</span></code></pre></figure>
<p>It’s in Python 2 rather than Python 3 because somehow that’s the default for my installation (probably because it’s the default command-line python on my laptop).
The code after the optimize step produces a picture of the solution in crude ASCII graphics. Here’s a prettier version of the <script type="math/tex">14\times 14</script> solution:</p>
<p style="text-align:center"><img src="/blog/assets/2018/no3il14x14.svg" alt="28 points in a 14x14 grid with no three in line" /></p>
<p>(<a href="https://plus.google.com/100003628603413742554/posts/aEhW29MVv2H">G+</a>, <a href="https://mathstodon.xyz/@11011110/101061128588762922"><script type="math/tex">\mathbb{M}</script></a>)</p>David EppsteinFor the no-three-in-line problem, it has been known since the 1990s that grids with have sets of points with no three in line. Those results, by Achim Flammenkamp, were based on custom search software and a lot of compute time. I was curious to see how far one could get with more-modern but generic optimization codes, so this weekend I ran a little experiment.