urn:lj:livejournal.com:atom1:110111100xDE0xDE0xDE2014-04-22T18:29:08Zurn:lj:livejournal.com:atom1:11011110:287956Indifference graphs and their construction2014-04-21T18:33:47Z2014-04-22T18:29:08ZI just added a new article to Wikipedia on <a href="https://en.wikipedia.org/wiki/Indifference_graph">indifference graphs</a> (also known as unit interval graphs or proper interval graphs): the graphs formed from sets of points on the real line by connecting every two points whose distance is less than one.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/Indifference-graph.png"></div><br /><br />There are many papers on algorithms for going from the graph to a geometric representation in linear time. The following method for the reverse problem, going from the set of points (or equivalently unit intervals) to its graph must be known, possibly in the context of its generalization to higher dimensional <a href="https://en.wikipedia.org/wiki/Unit_disk_graph">unit disk graphs</a>, but I don't know a good reference for it.<br /><br />Given a set of real numbers:<ol><li>Round each one down to the nearest smaller integer.</li><li>Use a hash table to collect numbers that round to the same integer.</li><li>For each number <i>x</i>, use the hash table to find each other number <i>y</i> whose rounded value is within one of the rounded value of <i>x</i>.</li><li>Create an edge in the graph for every pair (<i>x</i>,<i>y</i>) found in this way whose distance is at most one.</li></ol>Each pair (<i>x</i>,<i>y</i>) can be charged against the hash table entry of <i>x</i> or <i>y</i> that has the larger number of inputs mapped to it. In this way, each hash table entry gets a charge proportional to the square of its number of values. But on the other hand every pair of inputs that map to the same hash table entry form an edge, so the number of edges is at least proportional to the sum of the squares of the hash table entry sizes. Thus, the total work is at most proportional to the total output size.<a name='cutid1-end'></a><br /><br />Update, April 22: It appears that the correct reference for this is Bentley, Jon L.; Stanat, Donald F.; Williams, E. Hollins, Jr.<br />The complexity of finding fixed-radius near neighbors. Information Processing Lett. 6 (1977), no. 6, 209–212.urn:lj:livejournal.com:atom1:11011110:287741Structures in solution spaces2014-04-19T21:07:51Z2014-04-19T21:07:51ZAs <a href="http://11011110.livejournal.com/284935.html">I promised earlier</a>, here is the video for my talk on "structures in solution spaces" at the <a href="http://11011110.livejournal.com/285302.html">Conference on Meaningfulness and Learning Spaces</a> last February.<br /><br /><div align="center"><lj-embed id="39" /></div><br /><br />It was a wide-ranging talk, about learning spaces, distributive lattices and Birkhoff's representation theorem for them, rectangular cartograms, antimatroids, the 1/3-2/3 conjecture for partial orders and antimatroids, partial cubes, and flip distance in binary trees and point sets. It was also about an hour long, so don't watch unless you have the time. For those with shorter attention spans, I've also put up a pdf file of <a href="https://www.ics.uci.edu/~eppstein/pubs/Epp-IMBS-14.pdf">my talk slides</a>.<br /><br /><a href="https://www.youtube.com/playlist?list=PLQw7KTnzkpXcxHV9ehbYiB_DjQM1Qblnj">The rest of the talks from the conference are also online</a>. For those who like me are interested in discrete mathematics and discrete algorithms, Fred Roberts' talk on when the output of an algorithm is meaningful and Jean-Paul Doignon's talk on polyhedral combinatorics might be particularly interesting.urn:lj:livejournal.com:atom1:11011110:287439From when even the cars had moustaches2014-04-14T06:50:49Z2014-04-14T06:53:55ZEvery year about this time, my campus holds a spring celebration, with all the student organizations setting up pavilions in the park to sell food and advertise for new members, with the creative anachronists bashing each other with padded swords, and with a car show. Why a car show? I don't know, but I always enjoy seeing the variety of shapes and colors compared to today's mostly-the-same boxes. My favorite this year was a 1950 Chevy Fleetline, found rusting in a swamp in Tenessee; after a lot of work restoring it, its owner decided to cover it in clear-coat, showing off the patina on its metal, rather than just painting it. And then drove it cross country, towing a trailer full of his stuff, to UCI where his girlfriend is a grad student.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/wayzgoose14/Fleetline1-m.jpg" border="2" style="border-color:black;" /></div><br /><br /><a href="https://www.ics.uci.edu/~eppstein/pix/wayzgoose14/Fleetline2.html">The moustache is more visible in this one</a>. And <a href="https://www.ics.uci.edu/~eppstein/pix/wayzgoose14/index.html">here are the rest of the photos</a>.urn:lj:livejournal.com:atom1:11011110:287079Congratulations to Tetsuo Asano2014-04-13T05:07:36Z2014-04-13T05:07:36Z<a href="http://11011110.livejournal.com/274087.html">When I last saw</a> <a href="https://en.wikipedia.org/wiki/Tetsuo_Asano">Tetsuo Asano</a>, he was giving a research talk at WADS, and openly worrying that it might be his last one. We all thought it was because of mandatory retirement (still legal in Japan). But, it turns out, no. Instead, <a href="http://www.jaist.ac.jp/profiles/info_e.php?profile_id=00033">he's the new president of JAIST</a>. Congratulations, Tetsuo!<br /><br />I'll probably miss SoCG, in Kyoto this year, but for those who will be going, there will be an associated <a href="http://www.jaist.ac.jp/~otachi/tetsuo65/">workshop in honor of Asano's 65th birthday</a>.urn:lj:livejournal.com:atom1:11011110:286767Using complete binary trees to prove the power of two choices2014-04-12T00:42:44Z2014-04-12T00:42:44ZThe power of two choices in load balancing is well known: If one throws <i>n</i> balls independently at a similar number of bins (as in hash chaining), some bin will typically have Θ(log <i>n</i>/log log <i>n</i>) balls in it, but if one draws two random bins for each ball, and places the ball greedily into the less-full of these two bins, the maximum load will be much smaller, Θ(log log <i>n</i>). And if one clairvoyantly chooses which of the two bins to place each ball into (or uses cuckoo hashing to move the balls around between their two bins as later balls come in) it is very likely that one can achieve only a constant load.<br /><br />The log-log result is originally by Azar, Broder, Karlin, and Upfal, and is well explained in a survey by Mitzenmacher, Richa, and Sitaraman, "<a href="http://people.cs.umass.edu/~ramesh/Site/PUBLICATIONS_files/MRS01.pdf">The power of two random choices: A survey of techniques and results</a>", which includes three different proof methods. Here's a fourth, which is related to but I think different from witness trees.<br /><br /><blockquote>We suppose that the balls are thrown into bins one-by-one, and consider two graphs defined from this random process. The first graph, G<sub>1</sub>, has the bins as its vertices; each ball defines an edge in G<sub>1</sub> whose endpoints are the two choices for that ball. As long as the number of bins is at least 2 + ε times the number of balls (for some ε > 0) we know from standard results on random graphs that with high probability every connected component of G<sub>1</sub> has <i>O</i>(log <i>n</i>) vertices and is either a tree or a pseudotree (tree plus one edge).<br /><br />The second graph, G<sub>2</sub>, is a directed graph that instead has the balls as its vertices. each ball in G<sub>2</sub> has at most two outgoing neighbors: the most recent balls to be previously placed in its two bins. When a component of G<sub>1</sub> is a tree, so is the corresponding component of G<sub>2</sub>, with each vertex of G<sub>1</sub> (a bin) expanded into a path in G<sub>2</sub> (the balls that end up being placed in this bin). Similarly, when a component of G<sub>1</sub> is a pseudotree, so is the corresponding component of G<sub>2</sub>. And since each component of G<sub>1</sub> has at most the same number of edges as it has vertices, and these edges correspond to the vertices of G<sub>2</sub>, the components of G<sub>2</sub> also have <i>O</i>(log <i>n</i>) vertices with high probability.<br /><br />Now, suppose that a ball is the <i>i</i>th to be added to its bin, and look at its two neighbors. When <i>i</i> > 1, each of these must exist, and must be at least the (<i>i</i> − 1)st ball to be added to its bin, and so on. Thus, if this ball is part of a tree component of G<sub>2</sub>, it is the root of a complete binary tree of height <i>i</i> within that component. If instead it is part of a pseudotree component, we can remove one edge from the component to turn it into a tree and get a complete binary tree missing at most one branch. So in either case the component of G<sub>2</sub> containing this ball contains a subtree with at least 2<sup><i>i</i> − 1</sup> vertices in it.<br /><br />In order for the number of nodes in the subtree, 2<sup><i>i</i> − 1</sup>, to be no larger than the number of nodes in the whole component, <i>O</i>(log <i>n</i>), it must be the case that <i>i</i> = <i>O</i>(log log <i>n</i>), QED.</blockquote><br /><br />One drawback of this argument, relative to the other proofs of the same result, is that it seems to require stronger assumptions on the numbers of balls and bins: it stops working when the number of bins drops below twice the number of balls. On the other hand, I think it's an easy way to teach the power of two choices, and relates well to other important theory concerning random graphs.<br /><br />It also seems to be a versatile argument that can be used for other related problems. The context here is a new paper of mine with Goodrich, Mitzenmacher, and Pszona, "Wear minimization for cuckoo hashing: how not to throw a lot of eggs into one basket", <a href="http://arxiv.org/abs/1404.0286">arXiv:1404.0286</a>, to appear at SEA 2014. In it, we used the same type of argument to show that a variant of cuckoo hashing, with three choices instead of two, avoids making large numbers of changes to any of its memory cells, a property useful for certain memory technologies. The paper also includes experiments with an implementation of this variant showing that it works well in practice.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:286633Upgrade to Mavericks2014-04-05T22:18:09Z2014-04-05T22:18:09ZI had been running Snow Leopard (OS X 10.6) on my Macs, because I wasn't convinced that later versions were much of an improvement in usability. But Apple has apparently stopped providing security updates for a version as old as mine, so this week I updated to Mavericks. So far I've encountered only minor glitches: the update lost a couple of configuration settings (the monitor arrangement for my two-screen desktop and the preferred browser on my laptop), I had to reinstall git and update python, and some very old PowerPC software that I had forgotten I even had either stopped working or became more obviously flagged as non-working.<br /><br />In honor of the successful upgrade, and Apple's new naming theme, here's some big-wave action at a closer beach (about five miles as the crow flies from my house).<br /><br /><div align="center"><lj-embed id="35" /></div>urn:lj:livejournal.com:atom1:11011110:286355Graphs with many cycles and doubled cycle minors2014-04-05T07:18:33Z2014-04-11T07:03:30ZThis one isn't my problem – it came from MathOverflow – but it's frustrating me that I haven't been able to solve it, so I hope by reposting it here I can get some more attention to it and maybe even a solution.<br /><br />The question is: <a href="http://mathoverflow.net/questions/161006/do-graphs-with-large-number-of-cycles-always-contain-large-necklace-minor">let <i>F</i><sub>k</sub> be the family of graphs having no minor in the form of a cycle with doubled edges, of length <i>k</i>. Do the graphs in this family have a polynomial number of cycles (with the exponent of the polynomial depending on <i>k</i>, ideally linear in <i>k</i>)?</a><br /><br />Here are some examples of graphs for which the number of cycles is large relative to the size of the largest doubled cycle minor:<br /><br />A biconnected graph with no length-3 doubled cycle minor must be either a subdivision of <i>K</i><sub>4</sub> or a series-parallel graph in which one of the two arguments to each series composition is a path. All such graphs have O(<i>n</i><sup><i>2</i></sup>) cycles.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/bicycle-minor/3-bicycle-free.png"></div><br /><br />In outerplanar graphs, the length <i>k</i> of a doubled cycle minor is the number of leaves of the dual tree. Each cycle can be formed by pruning some branches of the tree, and there are at most <i>k</i> branches to prune, so there are O(<i>n</i><sup><i>k</i></sup>) cycles in the outerplanar graphs with no doubled <i>k</i>-cycle minor. For instance, the outerplanar graph below has four leaves.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/bicycle-minor/outerplanar.png"></div><br /><br />The complete bipartite graph <i>K</i><sub><i>k</i>,<i>n</i></sub> (for <i>k</i> ≤ 2<i>n</i></sub>) has maximum doubled cycle minor length <i>k</i> and O(<i>n</i><sup><i>k</i></sup>) cycles.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/bicycle-minor/bipartite.png"></div><br /><br />In complete graphs, the length of a doubled cycle minor is approximately 2/3 the number of vertices. (Each edge contraction can double only two of the edges of a cycle.) The number of cycles is factorial in the number of vertices, so the exponent of the number of cycles (as a polynomial in <i>n</i>) is also linear in <i>n</i>.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/bicycle-minor/complete2bicycle.png"></div><br /><br />Form a tree with height log<sub>2</sub> <i>k</i> and branching factor <i>b</i> (possibly much larger than <i>k</i>). Connect each node to all its ancestors and connect the set the children of each node by a spanning tree. If we didn't include the spanning trees, the result would have low tree-depth, causing all of its cycles to have length at most <i>k</i>, from which it follows that there are O(<i>n</i><sup><i>k</i></sup>) cycles and maximum doubled cycle length <i>k</i>. The spanning trees don't significantly increase the number of cycles (you can use at most one path per spanning tree in a cycle, and each cycle touches at most <i>k</i> of these trees) and for the same reason doesn't significantly increase the length of the longest doubled cycle minor.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/bicycle-minor/tree-depth.png"></div><br /><br />Somehow I have the feeling that the last example, based on tree-depth, is on the right track. For minor-closed graph families, having no large cycle minor is the same as each biconnected component having bounded tree-depth, so having no large doubled cycle minor should be the same as having some structure like tree-depth but a little more complicated. But I can't prove anything of the sort.<br /><a name='cutid1-end'></a><br /><br />ETA 2014-04-10: Solved, negatively, by a <a href="http://11011110.livejournal.com/259176.html">planar bipartite permutation graph</a>.urn:lj:livejournal.com:atom1:11011110:286162Greetings from Barbados2014-03-29T06:07:03Z2014-03-29T06:07:03ZI'm back now, but this beach house in Barbados was my home for the last week, as I attended the 29th Bellairs Winter Workshop on Computational Geometry (my first time there).<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/bellairs/Seabourne-m.jpg" border="2" style="border-color:black;" /></div><br /><br />The format of the workshop is very much aimed at making new research, not just sharing what the participants have done elsewhere (as many other workshops and conferences do). We met as a group twice each day for three-hour group sessions, one in the morning and another in the evening, with afternoons as free time. The sessions were held outdoors at a set of picnic tables, and participants organized themselves into smaller groups of from two or three to half a dozen or so people, to discuss different open problems that had been prepared in advance (most of which saw significant progress by the end of the workshop). Preliminary results were announced to the whole group at most sessions, so even if you worked on a subset of the problems you had a sense of what everyone else was doing. And moving from one group to another was encouraged: you didn't have to choose one problem to work on and stick to it even when you were getting nowhere.<br /><br />For me, the long afternoon break gave me time to think about the problems on my own (while relaxing in a deck chair with a beach view and catching up on the internet) so I could come back to the discussions with fresh ideas. I heard several people remark that having two intensive sessions so far apart made it feel like we were getting in two days of work for every day of the workshop. The hope of being invited back to such a pleasant place also provided some motivation to work hard. And group social activities such as our meals together and the daily meet-up on the beach at sunset to watch for the green flash (sadly, not in evidence this year) helped build cameraderie and made it easier to join in on research discussions with groups of people you might not already know.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/bellairs/Sunset-m.jpg" border="2" style="border-color:black;" /></div><br /><br />I'm not yet sure in what form and when the results of this all will appear (so I'm being intentionally vague about exactly what we discussed) but expect to see some new names in the co-authors of some of my future papers.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:285735Cages2014-03-20T05:10:58Z2014-03-20T06:15:54Z<p>The <a href="https://en.wikipedia.org/wiki/Cage_(graph_theory)">cages</a> are a class of graphs that I think deserve to be more widely known, because they have a lot of interesting properties that make them useful as counterexamples in graph algorithms and graph theory. They're hard to construct and we don't have a lot of explicit descriptions of them, but that's not so important when you're using one as a counterexample.</p>
<p>First, what is a cage? The cages are parameterized by two numbers, <i>r</i> and <i>g</i>. An (<i>r</i>,<i>g</i>)-cage is a graph that:
<ul>
<li>is <i>r</i>-regular: each vertex is incident to exactly <i>r</i> edges,</li>
<li>has girth <i>g</i>: each cycle has at least <i>g</i> edges in it, and</li>
<li>is as small as possible: no graph with fewer vertices is also <i>r</i>-regular with girth <i>g</i>.</li>
</ul>
An example is the <a href="https://en.wikipedia.org/wiki/Petersen_graph">Petersen graph</a>, which is the unique smallest 3-regular graph with girth 5 and therefore is also known as the (3,5)-cage. Another, less well known, is the <a href="https://en.wikipedia.org/wiki/Robertson_graph">Robertson (4,5)-cage</a>. Challenge: find a better layout than Robertson's, below (which I took from Wikipedia and at least shows some hints at symmetry), or than the tangled circular layouts also shown in the Wikipedia article.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/Robertson-cage.png"></p>
<p>I don't think it's obvious that cages exist, for all combinations of <i>r</i> and <i>g</i>, but they do. They have to be big: A simple argument based on the fact that a breadth first search of depth up to half the girth can't find any cycles shows that these graphs must have Ω((<i>r</i> − 1)<sup><i>g</i>/2 − O(1)</sup>) vertices, exponential in <i>g</i> even when <i>r</i> is bounded. Turning this around, if <i>n</i> is the number of vertices in such a graph, <i>g</i> can be at most 2 log<sub><i>r</i> − 1</sub> <i>n</i> + O(1), only logarithmically small.</p>
<p>Bollobás and Szemerédi ["Girth of sparse graphs", J. Graph. Th. 2002] say that "the first good upper bound" on the size of a cage was by Erdős and Sachs in 1963. I don't know how they proved it (it's in German), but my first guess would be a form of the probabilistic method: <a href="http://arxiv.org/abs/cs.DM/9907002">random regular graphs have only a small number of short cycles</a>, so probably there's some way of getting rid of them and leaving a remaining regular graph that has none at all. But as far as I know the best bounds are not probabilistic, but instead use the method of Ramanujan graphs, by Lubotzky, Phillips, and Sarnak [Combinatorica 1988].
A Ramanujan graph is a graph whose second eigenvalue is nearly as large as possible, which in turn implies that it is a good <a href="https://en.wikipedia.org/wiki/Expander_graph">expander</a>.
In their paper, Lubotzky et al use an algebraic construction to find a family of graphs with <i>g</i> = (4/3 − o(1))log<sub><i>r</i> − 1</sub> <i>n</i> and they show that having such a high girth implies that the graph is a Ramanujan graph.</p>
<p>So we know that the girth of a cage is logarithmic in its size. But is the right constant on the logarithm 2 or 4/3? Bollobás and Szemerédi say that it should be 2, and I don't have any reason to doubt it myself. If so, the graphs of Lubotzky et al are not themselves cages, but at least they give us an upper bound on how big cages need to be.</p>
<p>Beyond having high expansion, some of the other properties of cages involve high local symmetry, dense minors and high treewidth, and bad surface embeddings:</p>
<ul>
<li><p>Some of the known small cages are highly symmetric graphs, but there's no particular reason to believe that continues for larger sizes. However, they are locally symmetric: the neighborhood of every vertex looks like every other vertex, out to a radius of half the girth, just a regular tree with no cycles to be seen.</p></li>
<li><p>For fixed values of <i>r</i>, a cage is a sparse graph. However, the cages necessarily have much denser minors. To see this, take an arbitrary spanning tree of a cage, and choose a set of equally spaced levels of the tree spaced about <i>g</i>/4 levels apart, such that there are about 4<i>n</i>/<i>g</i> vertices in the chosen levels. Contract the tree edges connecting each node with its nearest ancestor in a chosen level (or the root if no such ancestor exists). Because the graph has high girth, these contractions won't produce any self-loops or doubled edges, giving a minor that still has almost as many edges as it did before but with a number of vertices that has been reduced by a logarithmic factor. Even if you delete all but (1 + ε)<i>n</i> of their edges, the same argument shows that the remaining graph will still have a dense minor. And because of their high expansion, cages also do not obey anything like the <a href="https://en.wikipedia.org/wiki/Planar_separator_theorem">planar separator theorem</a>, and instead have linear treewidth.</p></li>
<li><p>If a graph is embedded on a surface, <a href="https://www.ics.uci.edu/~eppstein/junkyard/euler/">Euler's formula</a> tells us the genus of the surface as a function of its number of vertices, edges, and faces. For a cage, the number of faces must be very small (each edges is in two faces but each face has logarithmically many edges), from which it follows that the genus must be linear. In fact, the minimum genus for these graphs is very close to the maximum genus of any regular graph with the same degree. They also can't be embedded nicely in the plane: Leighton proved that for bounded degree graphs, the number of crossings in any planar drawing is proportional to the square of the bisection width. Because they are expanders, cages have linear bisection width and quadratic <a href="https://en.wikipedia.org/wiki/Crossing_number_(graph_theory)">crossing number</a>.</p></li>
</ul><a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:285650Induced Clebsch subgraphs2014-03-09T03:46:15Z2014-03-09T03:46:15Z<p>Today I've been playing with the induced subgraphs of the <a href="https://en.wikipedia.org/wiki/Clebsch_graph">Clebsch graph</a>. Several other interesting and well-known graphs can be obtained from it by deleting a small number of vertices and forming the induced subgraph of the remaining vertices.</p>
<p>To begin with, one simple construction of the Clebsch graph is to take all length-four binary strings as vertices, and to make two strings neighbors when they differ either by a single bit or by all four bits. So it has sixteen vertices and 40 edges, and can be visualized as a four-dimensional hypercube with the long diagonals added.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/clebsch.png"></p>
<p>It can be split into two three-dimensional cubes, by partitioning the binary strings according to the value of their first bit. Since the cube is bipartite, we can color the whole Clebsch graph with four colors, by using two colors within each cube. This is optimal, because the largest independent sets in the Clebsch graph (the sets of neighbors of a single vertex) have five vertices, not enough for three of them to cover the whole graph.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/two-cubes.png"></p>
<p>The Clebsch graph can also be split in a different way into two copies of the <a href="https://en.wikipedia.org/wiki/Wagner_graph">Wagner graph</a>:</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/two-wagners.png"></p>
<p>Removing a vertex and its five neighbors from the Clebsch graph (a K<sub>1,5</sub> subgraph) leaves a copy of the <a href="https://en.wikipedia.org/wiki/Petersen_graph">Petersen graph</a> as the remaining graph. Similarly removing a maximum independent set leaves a Petersen graph together with a single isolated vertex.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/petersen.png"></p>
<p>Removing a five-vertex cycle (such as the central cycle of the Petersen graph above) leaves a copy of the <a href="https://en.wikipedia.org/wiki/Gr%C3%B6tzsch_graph">Grötzsch graph</a>:
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/groetzsch.png"></p>
<p>Removing a four-vertex maximal independent set (four independent vertices that do not have a single common neighbor) leaves a subdivision of the complete bipartite graph K<sub>4,4</sub>, in which four edges forming a matching have been subdivided:
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/subdivided-k44.png"></p>
<p>Removing a four-cycle leaves a twelve-vertex torus graph with 24-way symmetry:</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/torus.png"></p>
<p>Here are a couple of less-symmetric large planar induced subgraphs.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/planar9.png"></p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/planar10.png"></p>
The second of these planar graphs can be formed by removing all binary strings with equal numbers of zeros and nonzeros, a six-vertex subset that induces a three-edge matching. If we instead partition the vertices into strings with even and odd parity, we get a partition of the Clebsch graph into two eight-vertex induced matchings.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/clebsch/two-matchings.png"></p>
The <a href="https://en.wikipedia.org/wiki/Schl%C3%A4fli_graph">Schläfli graph</a> (or its complement) has many induced Clebsch graphs inside it, so presumably it also has an interesting collection of symmetric induced subgraphs. But that's getting a bit too large for the sort of by-hand analysis I did to get the list here; it calls for automation instead.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:285302Meaningfulness2014-03-02T01:51:27Z2014-03-02T01:51:27ZMany of the talks at the Conference on Meaningfulness and Learning Spaces that I recently attended concerned (surprise!) meaningfulness. The basic idea is to provide a crude filter for bad science and bad statistics by determining whether applying a formula to data could possibly make any sense. For instance, in many computer science conference program committees, we score papers on a scale from -3 to +3 (say) and then rank the papers by averaging the scores of different reviewers (possibly weighted to counter reviewer bias). Is this aggregation operation a meaningful thing to perform on this kind of data? Is it meaningful to say "it's twice as hot today as it was yesterday"? When we use an algorithm to solve a problem, how can we tell whether the result is meaningful?<br /><br />The quick answer is that, for something to be meaningful, it should depend only on inherent properties of the data and not on arbitrary scales that we might be using to assign numerical values to the data. We can formalize this in terms of a group of transformations that can be applied to a data and that preserve its meaning. The Fahrenheit and Celsius temperature scales are fairly arbitrary, for instance, so any linear transformation mapping <i>x</i> to <i>ax</i> + <i>b</i> (for positive values of <i>a</i>) is reasonable: it would give you a different temperature scale but preserve the relationships between the data values. We call data of this type "interval data". For interval temperature data, "twice as hot" is not meaningful: it depends on the arbitrary scale you're using, not just on the actual temperatures. Temperatures that are twice as hot as each other in Fahrenheit are not generally twice as hot in Celsius, and vice versa. In contrast, "ratio data" comes from a scale with an absolute zero point, as temperatures in Kelvin do; for ratio data, the only allowable transformations are scalar multiplications. If you're dealing with very cold temperatures near absolute zero, and using Kelvin, "twice as hot" does have a meaning. Some of the other data types for this sort of analysis include "ordinal data" which allows any order-preserving transformation, "nominal data" which allows any bijective transformation, and "absolute data" (such as probabilities or percentages) which allows only the identity transformation. An important basic principle is that any meaningful operation on the data must respect these transformations: if one applies a transformation to the inputs of the operation, the outputs must also be transformed in an allowable way. This naturally leads to the ubiquity of power laws for ratio data, because products of powers are the only kinds of formulae whose outputs scale by a constant factor when the input is scaled by a (possibly different) constant factor.<br /><br />In graph theory, we have long had a very similar idea, that a meaningful <a href="https://en.wikipedia.org/wiki/Graph_property">graph property</a> is something preserved by any isomorphism of the graph. Another example of this, of even more direct relevance to the study of algorithms, was given by Fred Roberts in his talk on meaningfulness in epidemiology. He mentioned that shortest path algorithms are used very widely, but are only applicable when the edge weights of a graph are given by ratio data: if you can perform more general linear transformations on the edge weights, such as adding the same number to each of them, you can change the result of the shortest path computation. In contrast, minimum spanning trees, despite their very similar definition, are much more broadly meaningful. They make sense even when the edge weights are ordinal, because they depend only on the pairwise ordering of the weights, something that does not change when you apply a monotonic transformation to the weights.<br /><br />The study of meaningfulness is where the <a href="http://11011110.livejournal.com/284935.html">associative law example</a> I posted yesterday comes from. If you have an operation that obeys a law such as commutativity or associativity either automatically by its design (e.g. it involves testing reactions to a sequence of stimuli and the grouping of these into smaller subsequences is arbitrary) or as an experimentally verified outcome, then combining this law with meaningfulness places very strong constraints on the form of the operation. For instance, the only meaningful associative combinations of scaling data have the form (<i>x</i><sup>1/<i>p</i></sup> + <i>y</i><sup>1/<i>p</i></sup>)<sup><i>p</i></sup> for some constant <i>p</i> > 0. Associativity forces a decomposition of a two-variable associative operation into a combination of a single-variable function with addition, and meaningfulness forces the single-variable function to be a power.<br /><br />To get back to the conference program committee question: If we believe that "on a scale from -3 to 3" is ordinal data, then averaging is definitely not meaningful. Changing the scale from {-3,-2,-1,0,1,2,3} to {1,2,4,8,16,32,64}, for instance, would be a valid order-preserving transformation. It would not change the order of any program committee member's scores for any papers. But it would possibly change the order of the averages, something that should not be allowed. On the other hand, it is not entirely clear that this replacement is a valid one: maybe it would also cause respondents to spread their scores among the scale values in a different distribution. Many cases of "on a scale of" data can be modeled as having a continuous range of values that gets divided evenly into buckets, but sometimes people will do that division in such a way that the differences between pairs of adjacent buckets are equal and sometimes they will do it in such a way that the ratios are equal. The median is always meaningful, but making a meaningful choice among the average, geometric mean, or other similar alternatives depends on having an accurate psychological model for what the data means, which may depend on subtle issues in the procedure that we use when we gather the data.<br /><br />Further reading:<br />R. D. Luce, "Dimensionally invariant numerical laws correspond to meaningful qualitative relations", <a href="http://philpapers.org/rec/LUCDIN"><i>Phil. Sci.</i> 1978</a>.<br />J.-Cl. Falmagne and L. Narens, "Scales and meaningfulness of quantitative laws", <a href="http://www.jstor.org/stable/20115875"><i>Synthese</i> 1983<a>.<br />J.-Cl. Falmagne, "Meaningfulness and order-invariance: two fundamental principles for scientific laws", <a href="http://dx.doi.org/10.1023/B:FOOP.0000044096.50863.8e"><i>Found. Phys.</i> 2004</a>.<br />F. S. Roberts, "On Luce's theory of meaningfulness", <a href="http://www.jstor.org/stable/186953"><i>Phil. Sci.</i> 1980</a>.<br />F. S. Roberts, "Applications of the theory of meaningfulness to psychology", <a href="http://www.sciencedirect.com/science/article/pii/0022249685900112"><i>J. Math. Psych.</i> 1985</a>.<br />F. S. Roberts, "Meaningfulness of conclusions from combinatorial optimization", <a href="http://www.sciencedirect.com/science/article/pii/0166218X90901464"><i>Discr. Appl. Math.</i> 1990</a>.<a name='cutid1-end'></a></a></a>urn:lj:livejournal.com:atom1:11011110:284935Pythagorean associativity2014-02-28T21:11:36Z2014-03-01T07:39:32ZThis week I've been attending the <a href="http://www.imbs.uci.edu/node/25451"> Conference on Meaningfulness and Learning Spaces</a> at UC Irvine, in honor of the 80th birthday of my co-author <a href="https://en.wikipedia.org/wiki/Jean-Claude_Falmagne">Jean-Claude Falmagne</a>. I believe videos of the talks will eventually be online and I'll put up a link to mine when that happens.<br /><br />Jean-Claude himself gave a talk, in which the following cute geometric fact came up as an example: If <nobr><i>f</i>(<i>x</i>, <i>y</i>)</nobr> is the function that computes the length of the hypotenuse of a right triangle with side lengths <i>x</i> and <i>y</i>, then <i>f</i> obeys the associative law. It's not difficult to see this from the algebraic form of the function, but Jean-Claude instead presented a geometric demonstration of this fact, based on the properties of an <a href="https://en.wikipedia.org/wiki/Orthoscheme">orthoscheme</a>, a tetrahedron with four right triangles as its sides.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/Pythagorean-associativity.png"></div><br /><br />Three of the edges of the orthoscheme, forming a path (labeled <i>a</i>, <i>b</i>, and <i>c</i> in the figure) are at right angles to each other and can be aligned to lie parallel to the coordinate axes; these three edges, together with the opposite long edge of the orthoscheme, form a cycle that divides the surface of the orthoscheme into two topological disks, each formed by two right angles. One of these two disks forms a geometric representation of the formula <nobr><i>f</i>(<i>a</i>, <i>f</i>(<i>b</i>, <i>c</i>))</nobr> for using the Pythagorean formula to derive the length of the long edge as a function of the two short edges. The other forms a geometric representation of the different formula <nobr><i>f</i>(<i>f</i>(<i>a</i>, <i>b</i>), <i>c</i>).</nobr> Since these two formulas compute the same value (the length of the long edge) they must be equal to each other, and this equality is the associative law.<br /><br />This result turns out to be prototypical of all associativity laws for strictly-monotonic functions of the real numbers. In the Pythagorean theorem, there is a monotonic invertible function <i>g</i> (squaring) such that <nobr><i>f</i>(<i>x</i>, <i>y</i>) = <i>g</i><sup>−1</sup>(<i>g</i>(<i>x</i>) + <i>g</i>(<i>y</i>)).</nobr> Every monotonic invertible one-variable function <i>g</i> gives rise to a monotonic associative two-variable function <i>f</i> in this way, and (by a result of <a href="https://en.wikipedia.org/wiki/J%C3%A1nos_Acz%C3%A9l_(mathematician)">János Aczél</a>) every monotonic associative function can be decomposed in this way. They all can be interpreted geometrically via the orthoscheme, as monotonic transformations of the Euclidean distance.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:284884Hinged cubes2014-02-24T18:20:55Z2014-02-24T18:20:55Z<lj-embed id="33" /><br /><br /><a href="http://arxiv.org/abs/cs.CG/9907018">Some background</a>. <a href="http://aperiodical.com/2014/02/ghostcube-by-erik-aberg/">Via</a>. <a href="http://erikaberg.com/shop/">A longer but non-free video</a>.urn:lj:livejournal.com:atom1:11011110:284663Schramm's monster packing theorem2014-02-24T03:25:47Z2014-02-24T03:27:32Z<p>One of <a href="https://en.wikipedia.org/wiki/Oded_Schramm">Oded Schramm</a>'s less-well-known but better-named results is his "<a href="http://arxiv.org/abs/0709.0710">monster packing theorem</a>", a far-reaching generalization of the famous <a href="https://en.wikipedia.org/wiki/Circle_packing_theorem">circle packing theorem</a> of Koebe, Andreev, and Thurston.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/monster/icos-circles.png">
<p>Here, a packing is a set of geometric shapes with disjoint interiors, whose intersection graph represents a given planar graph. For instance, the circle packing theorem states that every planar graph can be represented as the intersection graph of interior-disjoint circles. But what if we want to pack shapes other than circles? What if we don't even want all the vertices to be represented by the same shape as each other? That's where the monster packing theorem comes in.</p>
<p>The theorem itself is a little difficult to explain. It involves monsters. A monster has a body formed by a collection of shapes, connected into a tree (much like the fingers, hands, arms, ears, nose, head, neck, and other appendages of a human body can be connected into a tree). It can be described by a continuous function whose input is a list of numerical parameters specifying how far each of its appendages should be twisted around its neighboring appendage towards the root of the tree. The output of the function says what shape each appendage takes. Subject to some technical conditions on how this function behaves, the theorem guarantees that the monster can always fold itself up into a nice packing, with no self-overlaps or missing adjacencies, by choosing the right input parameters.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/monster/icos-triangles.png">
<p>What is easier to explain are the consequences of this for representing graphs by packings. We suppose that each vertex of a given graph has a prototype shape (a circle, pentagon, etc) and that it should be represented by a copy of that shape that has been scaled and shifted but not rotated (the technical word for this kind of transformation is a "homothety"). Then</p>
<ul><li>If one vertex of a maximal planar graph is chosen to be the outside one, and has a smooth simply-connected prototype, and every other vertex has a smooth strictly-convex prototype, then there always exists a packing whose intersection graph is the given graph, in which every vertex is represented by a homothetic copy of its prototype. (I think this can also be generalized to polygons in which all angles are greater than 120 degrees; for instance, regular octagons).</li>
<li>Suppose that a triangle of three vertices in a maximal planar graph are chosen to be the outside ones, each is associated with a non-empty contiguous curve, and these three curves together form a simple closed curve. Suppose also that each other vertex has a convex prototype with nonempty interior. Then there always exists a packing whose intersection graph is a supergraph of the given graph, in which every vertex is represented either by a homothetic copy of its prototype or by a point.</li></ul>
<p>The second version can handle a wider choice of prototype shapes, but the possibility of degenerate packings (with extra adjacencies and/or shapes that shrink down to points) makes it a little harder to use. For instance, it is not true that every maximal planar graph can be represented by an intersection graph of interior-disjoint homothetic equilateral triangles (what you would like the theorem to state) but it is true for every 4-vertex-connected planar graph, because the lack of separating triangles makes it impossible for their packings to degenerate (see <a href="http://page.math.tu-berlin.de/~felsner/Paper/cubes.pdf">Felsner and Francis</a> for a more constructive but unproven method of generating these representations). Similarly, every maximal planar graph without separating four-cycles can be represented by a partition of a rectangle (representing one outer vertex) into touching squares; however, there is no way to avoid the four-cycles (pairs of triangles) that surround individual edges of the input graph. This may cause quadruples of squares to meet at a single point; two diagonally opposite squares are adjacent in the graph, and the other two are not, but there is no way to tell visually which is which.</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/monster/icos-squares.png">
<p>The icosahedron gives a nice example of a maximal planar graph without separating triangles or quadrilaterals. The images above show three of its representations: as a circle contact graph, as a triangle contact graph (redrawn from Felsner
and Francis), and as a set of touching squares. The circle and square representations have a single outside vertex, but the triangle representation has three. The circle and triangle representations have the same outside shape, but the square representation has a rectangle outside. In the triangle representation, the nine white triangles and three outer edges represent the 12 vertices. The blue triangles in the backgraph can be thought of as as a representation of the dual dodecahedron, but a degenerate one; there should be another blue triangle at the point where the six triangles meet in the center, but it has degenerated to a point.</p><a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:284162Glassworks2014-02-18T03:24:48Z2014-02-18T03:24:48ZWhile in Tucson, I took a tour of the University of Arizona's <a href="http://mirrorlab.as.arizona.edu/">Steward Observatory Mirror Laboratory</a>, where they built the mirrors for the big astronomical observatories such as the <a href="https://en.wikipedia.org/wiki/Giant_Magellan_Telescope">Giant Magellan Telescope</a>. Two GMT mirrors were in progress and one had been shipped, but the one they were grinding when I visited was for a different instrument, the <a href="https://en.wikipedia.org/wiki/Large_Synoptic_Survey_Telescope">Large Synoptic Survey Telescope</a>.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/stewardmirrorlab/SynopticMonolith2-m.jpg" border="2" style="border-color:black;" /></div><br /><br />Its bizarre shape, with two paraboloids meeting in a central ridge, comes from the fact that it's really two mirrors in one: an annular 8.4m primary surrounding a 5.0m tertiary. The hexagons visible in the glass are a honeycomb pattern of molded holes on its back side, used to keep the mirror lightweight while maintaining rigidity. The honeycomb seems to be aligned with the edge of the mirror all around its circumference, with breaks in the pattern in the interior; it looks like maybe they're using some sort of <a href="https://en.wikipedia.org/wiki/Centroidal_Voronoi_tessellation">centroidal Voronoi tessellation</a>?<br /><br />(<a href="http://www.ics.uci.edu/~eppstein/pix/stewardmirrorlab/index.html">A few more photos</a>)urn:lj:livejournal.com:atom1:11011110:284148Coffee heart2014-02-17T02:37:32Z2014-02-17T02:37:32ZHere's a belated valentine-themed cappucino from Caffe Luce in Tucson, where I spent the last week visiting Stephen Kobourov, Alon Efrat, and their students and postdocs. (Also recommended: El Charro for dinner and Prep & Pastry for breakfast. Try the poutine!)<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/caffeluce/HeartCappucino-m.jpg" border="2" style="border-color:black;" /></div>urn:lj:livejournal.com:atom1:11011110:283767Turrell @ LACMA2014-02-08T06:31:45Z2014-02-08T06:33:43ZYesterday I went to LACMA, mostly to see the James Turrell exhibit there. If I had been allowed, I would have taken many photos, but probably very few of them would have come out well, because Turrell's work is about light as a physical presence and about the human perception of color, and I don't think either of those things translates very well from camera to screen to eye.<br /><br />As a case in point, one of his pieces was a large room, shaped roughly like a flattened cylinder, with a square portal entrance at one end (up a flight of steps from its anteroom). From below, waiting our turn to go in, the room seemed to be drenched in saturated color, changing from blue to pink to red, so thick that you expected the people inside to swim in it like honey rather than just walking in air and light. But from the inside, the room seemed mostly white or a bit off-white, with the end opposite the portal open to what seemed a bluish formless and infinite void. The values of light and dark within the room and the space beyond the room changed, but not so much its colors, except that if you paid attention the skin tones of the other participants were a bit off and one young woman's pale pink hoodie glowed with an unearthly radioactive fluorescence. How do you capture that experience in pixels?<br /><br />I did take some shots of other exhibits, though. The one below is from <a href="http://www.lacma.org/art/exhibition/agn%C3%A8s-varda-californialand">Agnès Varda in Californialand</a>, a show in which French New Wave filmmaker <a href="https://en.wikipedia.org/wiki/Agn%C3%A8s_Varda">Agnès Varda</a> built a shack from reels of one of her less successful films, <i>Lions Love</i>.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/lacma2/AgnesVardaInCalifornialand4-m.jpg" border="2" style="border-color:black;" /></div><br /><br /><a href="http://www.ics.uci.edu/~eppstein/pix/lacma2/">The rest of the photos</a> include more of Varda's piece, and a couple of pieces from another exhibit in the same part of the museum on art inspired by the coming soccer World Cup.urn:lj:livejournal.com:atom1:11011110:283412Splaysort versus Cartesian tree sort2014-01-22T02:07:50Z2014-01-22T02:07:50Z<p>A comparison sorting algorithm is called <i>adaptive</i> if its performance can be better than the worst-case <i>O</i>(<i>n</i> log <i>n</i>) time for comparison sorting algorithms, on subsets of inputs that are somehow close to being already sorted. Two examples of this are a <a href="https://en.wikipedia.org/wiki/Cartesian_tree">Cartesian tree</a> based sorting algorithm described by <a href="http://dx.doi.org/10.1007%2F3-540-51542-9_41">Levcopoulos and Petersson in WADS 1989</a>, and splaysort, a <a href="https://en.wikipedia.org/wiki/Splay_tree">splay tree</a> based sorting algorithm described by <a href="http://dx.doi.org/10.1002/(SICI)1097-024X(199607)26:7<781::AID-SPE35>3.0.CO;2-B">Moffat, Eddy, and Petersson in <i>Software: Practice and Experience</i> 1996</a>. How do these two algorithms compare with each other?</p>
<p>First, let's describe the algorithms in a little more detail. Cartesian tree sort is at heart a form of <a href="https://en.wikipedia.org/wiki/Selection_sort">selection sort</a>, an algorithm that finds the elements of the output sequence in their sorted order, using data structures to speed up how it finds each element. It builds a Cartesian tree on the input, a tree in which the parent of each value is the larger of the two <a href="https://en.wikipedia.org/wiki/All_nearest_smaller_values">nearest smaller values</a> on either side of it; this can be done in linear time. It maintains a <a href="https://en.wikipedia.org/wiki/Binary_heap">binary heap</a> of active values, initially just the root of the Cartesian tree. And then it repeatedly moves the smallest element of the heap to the output list, replacing it in the heap by its children in the Cartesian tree.</p>
<p>Its running time can be understood in terms of the following diagram, which I drew for Wikipedia a few years ago. It shows a plot of a data set for a sorting problem in which the horizontal axis represents the input sorted order and the vertical axis represents the value to be sorted (or equivalently, since the vertical scale is unimportant, the position in the output sorted order). For any input item <i>x</i> (such as the one highlighted by the dark blue color in the figure) one can draw a horizontal line through this plot, which cuts through several other edges (red in the figure). The red edges are called "bracketing pairs" and they represent pairs of consecutive inputs that sandwich <i>x</i>. At the time <i>x</i> is pulled from the heap in the Cartesian tree sorting algorithm, the size of the heap is proportional to the number of bracketed pairs. Thus, the cost for processing <i>x</i> is proportional to the logarithm of its number of bracketed pairs, and adding this over the whole input gives the time for the whole algorithm. This is tight to within constant factors, for all inputs, not just an upper bound. For inputs in which the average number of bracketed pairs is significantly less than the input length, the time will be significantly less than <i>O</i>(<i>n</i> log <i>n</i>).</p>
<p align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/bracketing-pairs.png"></p>
<p>Splaysort, on the other hand, is a form of <a href="https://en.wikipedia.org/wiki/Insertion_sort">insertion sort</a>, in which we add items one by one to a sorted list, using some data structures to make each addition fast. In splay sort, the data structure is a splay tree, used as a binary search tree on the already-processed input items. The time bounds for splay trees are not well understood (in particular, we don't know whether they are within a constant factor of every other binary search tree balancing strategy for every possible input — this is the famous dynamic optimality conjecture) but some upper bounds are known. One such bound is the finger theorem, proven by <a href="http://dx.doi.org/10.1145/100216.100218">Cole in STOC 1990</a>, which states that the time to access an item in a splay tree is at most proportional to the logarithm of the number of items that separate it from the previously accessed item.</p>
<p>We can use Cole's bound to give an adaptive analysis of splaysort. Again, consider the diagram above, with the horizontal axis giving the position of a value in the input and the vertical axis (which matters for this part of the analysis) giving the position in the sorted output rather than its numerical value. Using Cole's bound, the cost of inserting each item into the splay tree is at most proportional to the logarithm of the length of the edge connecting it to the previous item. The time for the whole splaysort algorithm is at most the sum of the logs of the edge lengths.</p>
<p><b>Theorem:</b> <i>Splay sort is competitive with Cartesian tree sort, meaning that the time for splay sort is at most a constant times the time for Cartesian tree sort.</i></p>
<blockquote><p><i>Proof:</i> We use a charging scheme in which each item in the sorted list assigns numerical charges to each of its bracketing pairs. Different bracketing pairs get charged different amounts: the bracketing pairs are sorted by the numerical values of their top items, after which the first one (the one with the smallest top item) gets charged 1 unit, the second one gets charged 1/2 unit, the third one gets charged 1/3 unit, etc. In this way, the total charge for an item <i>x</i> is a <a href="https://en.wikipedia.org/wiki/Harmonic_number">harmonic number</a>, proportional to the logarithm of the number of bracketing pairs. The total charge is thus proportional to the total time of Cartesian tree sort.</p>
<p>Now, with the same charging scheme, let's see how much each edge <i>xy</i> of the diagram (representing two consecutive input items <i>x</i> and <i>y</i>) gets charged. If <i>x</i> and <i>y</i> are separated by <i>s</i> other input items, then edge <i>xy</i> will be charged <i>s</i> times, once for each of these separating inputs. The largest of the separating items will give edge <i>xy</i> a charge of either 1/2 or 1 unit (it might be 1/2 because edge <i>xy</i> might be tied with another bracketing pair for having the closest top item). The second largest separating item may give edge <i>xy</i> a charge of between 1/4 and 1 units, depending on whether the largest separating item also forms one or two bracketing pairs for this item. And in general the <i>i</i>th largest separating item may give edge <i>xy</i> a charge of between 1/2<i>i</i> and 1 units. The total charge for all these items adds in something like a harmonic series to something that is at least proportional to log <i>s</i> (when all the charges are as small as possible) and at most <i>s</i> (when the charges are as large as possible). Thus, the total charge (and the total time for Cartesian tree sort) is at least proportional to the sum of log <i>s</i>, summed over all consecutive pairs, which in turn (by the finger theorem) is at least proportional to the running time of splay sort.<p></blockquote>
<p>It's not hard to find inputs for which the two algorithms have differing time complexities. For instance, take a sorted sequence of <i>n</i> values, pull off the top and bottom <i>n</i>/log <i>n</i> of them and riffle them together, then concatenate the rest of the values in sorted order after the riffled set. Most of the items in the resulting sequence will have 2<i>n</i>/log <i>n</i> bracketed pairs, causing the Cartesian tree algorithm to take <i>Θ</i>(<i>n</i> log <i>n</i>) time on this input. However, the number of long edges in the diagram is small enough to make the time for splaysort remain linear. Thus, splaysort is strictly stronger, as an adaptive algorithm, than Cartesian tree sort: it is always within a constant factor of the same running time, and sometimes much faster.</p>
<p>The dynamic optimality conjecture implies that splaysort is competitive with other binary-tree based insertion sorts, but it doesn't seem to say much about its competitiveness against other sorting algorithms such as selection sorts or merge sorts. It's not possible for splaysort to be competitive against all comparison sorting algorithms: for instance, let <i>X</i> be an input permutation on which splaysort is slow, and devise a comparison sorting algorithm that tests whether the input is of type <i>X</i>, if so handles it in linear time, and if not reverts to some other algorithm. But is there a natural and generally useful adaptive sorting algorithm that splaysort is not competitive against? I don't know of one.</p><a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:283340Short takes2014-01-19T22:34:13Z2014-01-19T22:34:13ZMiscellaneous links, not big enough for their own postings:<br /><br /><a href="http://www.oed.com/view/Entry/293068">OMG is in the OED</a>. But lest you think this is a triumph of netspeak over proper English, the earliest citation for it is dated 1917.<br /><br /><a href="http://www.newyorker.com/reporting/2013/01/14/130114fa_fact_mcphee?currentPage=all">John McPhee on finding structure in the subjects he writes about</a>. Probably helpful for all kinds of technical writing, not just the more popular nonfiction McPhee is known for.<br /><br /><a href="http://harry-lewis.blogspot.com/2014/01/free-expression-news-from-all-over.html">Harry Lewis on the conflicts of interest inherent in the collaborations between academic institutions and repressive anti-free-speech regimes</a> such as the ones in the Middle East, Singapore, or Kansas.<br /><br /><a href="http://www.dailykos.com/story/2014/01/12/1267838/-The-nation-sleeps-a-dreamless-sleep">A requiem for the American dream</a>, by Hunter on the Daily Kos.<br /><br />Complementing my recent posts <a href="http://11011110.livejournal.com/282037.html">on</a> <a href="http://11011110.livejournal.com/282157.html">SODA</a> <a href="http://11011110.livejournal.com/282573.html">2014</a>, here are some reactions by others: <a href="http://www.abstract-talk.org/wp/?page_id=784">Abstract talk</a>. <a href="http://jsaia.wordpress.com/2014/01/15/soda-2014-2/">Notes by Mahnush Movahedi</a>. And <a href="http://blogs.oregonstate.edu/glencora/2014/01/17/conversations-graduate-students/">Cora on the message we're sending by having an all-male keynote slate</a>.urn:lj:livejournal.com:atom1:11011110:283093Google gratuitously breaks something useful. Again.2014-01-16T22:33:20Z2014-01-16T22:33:20ZI guess it's been long enough since the Wave collapse, the Reader closure, and the Google news archive elimination, so it's time once again for Google to pick something else that is useful but only to an insufficiently massive subset of its users, and kill it. The latest dead Google baby is Google Notifier, which I've been using to get desktop notifications of new incoming emails. Google's suggested replacement is to enable desktop notifications directly in gmail, but that only works when I have a browser window or tab open to gmail, and I don't like cluttering up my browser with windows or tabs that I'm not actually using.<br /><br />Oh well, the likely result is only that I'll be slow answering emails, something that is often true anyway. At least they haven't tried to break Google scholar yet.urn:lj:livejournal.com:atom1:11011110:282776Report from SODA, ALENEX, and ANALCO, appendix: coffee2014-01-08T22:19:16Z2014-01-08T22:19:16ZI don't think of myself as a coffee snob, in that I won't think any less of you if you don't appreciate well-made coffee. But I am somewhat particular about what I drink myself, to the point that I have a real <small>(Gaggia Classic)</small> espresso machine at home instead of one of the pod or steam things. So with a conference located in a city that rivals Seattle for its coffee fanaticism, I felt that I had to at least try some of the local coffee shops.<br /><br /><b>Peet's Coffee</b>, Washington & Broadway. As a national chain, this wouldn't have been on my list at all, except that it was my backup plan for Sunday breakfast after discovering that City Coffee is closed Sundays and hearing (incorrectly) that Public Domain had no pastries. But Peet's does have a large selection of pastries, the almond croissant I chose was good, the barrista obviously took pride in her cappucino craft, the store ambiance was pleasant and uncrowded, and the cappucino itself was as good as the ones I tried at other more pretentious coffee stores. I didn't try their espresso this time, but I've had decent ones from their other locations (in contrast to certain other national chains, from whom I would only buy milk-based coffee drinks).<br /><br /><b>City Coffee</b>, Salmon & 4th. Not much in the way of ambiance (just a counter and some seats). Not much pastry selection, either, but the cheese bagel I had was good. Unlike the other places I tried, the barrista made no attempt at making art with the coffee and milk foam of my cappucino, but he still took care with making the foam well and it tasted just as good. It was also the least expensive of the places I tried. I didn't end up going back to try their espresso, though.<br /><br /><b>Public Domain Coffee</b>, Alder & Broadway. The ambiance in this one is a lot more pretentious (lots of bare wood and metal, no decoration to speak of, and a floor plan with the customer space stretched around a big central island to show off their fancy coffee-making and coffee-cup-cleaning equipment) and the price is higher. The pastry selection is a small afterthought, and the almond croissant I tried, while still quite edible, was too dense, without the proper flaky/buttery croissant texture I expected. This place seemed very particular about what kinds of drinks they made: if you ordered an espresso, you would only get a single ristretto shot, and if you ordered a cappucino, you would only get an 8 ounce cappucino (what you actually want is probably a dry latte). The espresso cup was a bit oversized and the espresso itself was a bit bright, but still very good. The latte art was by far the best of the places I tried, filled with nested layers like a Georgia O'Keefe flower. And the latte itself tasted as good as any of the others.<br /><br /><b>Stumptown Coffee</b>, Stark between 10th and 11th (in the lobby of the Ace Hotel), one block from Powell's Books. This one just looks like an ordinary coffee bar, familiar without trying to be pretentious. There is only limited seating in the bar itself, but a big comfy couch in the hotel lobby through an open doorway, surrounding a huge square coffee table loaded with recent newspapers, backed by a big shelf of old books. A photo booth adds a bit of a hipster touch but otherwise it all just feels very relaxed and welcoming, and the staff were also friendly. The pastry selection looked limited but the danish I chose was perhaps the best one I've ever had (some sort of cranberry-orange compote on a beautifully flaky croissant pastry base). The latte art was perfunctory, just a white heart in a darker field, but as usual that made no difference to its flavor. And the espresso was outstanding: well balanced flavor, just a hint of grounds in the mouthfeel, in a perfectly sized small round cup with a pleasingly-thick rim that the barristas carefully cleaned of excess coffee drips before handing to me. This is the one that, if it were somewhere near me, I would keep coming back to.<br /><br />If I had more time I would have tried some others; there was a donut and espresso place across the street from the hotel that looked intriguing...<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:282573Report from SODA, ALENEX, and ANALCO, day 32014-01-08T05:44:29Z2014-01-08T05:44:29ZToday was the day I made my pilgrimages to Stumptown Coffee and Powell's Books, so I didn't see as many of the SODA talks as the previous two days. Nevertheless:<br /><br />My favorite title of the conference is "Four Soviets Walk the Dog", for a talk this morning by Wouter Meulemans on work he did with Buchin, Buchin, and Mulzer. Part of why I like it is that, despite its whimsical appearance, it's completely self-explanatory to people in this area: "<a href="https://en.wikipedia.org/wiki/Method_of_Four_Russians">four Soviets</a>" refers to an idea for shaving logarithmic factors from the running time of two-dimensional dynamic programming algorithms by partitioning the matrix of solutions into small square submatrices and doing table lookups to quickly move information from one side of each square to the other, and "walk the dog" refers to the problem of computing the <a href="https://en.wikipedia.org/wiki/Fr%C3%A9chet_distance">Fréchet distance</a> of two polygonal chains. And that's exactly what this paper is about: using this trick to shave logarithmic factors from Fréchet distance calculations.<br /><br />Meulemans' talk was sandwiched by two talks by Peyman Afshani. Both were interesting but I think I liked the second a little more. It's on finding the set of non-dominated points (Pareto frontier) of a set of two-dimensional points, in the word RAM model of computation. In two dimensions, it can easily be done in the same time as <a href="https://en.wikipedia.org/wiki/Integer_sorting">integer sorting</a>, by a stack algorithm similar to <a href="https://en.wikipedia.org/wiki/Graham_scan">Graham scan</a>, but Peyman showed that it can actually be done a little faster, via an equivalence with the problem of finding approximate quantiles in an integer sequence. He also gives a nearly-as-efficient algorithm for the three-dimensional problem.<br /><br />The invited talk was the long-awaited one by Piotr Indyk, on the problem of sparse Fourier transforms (that is, Fourier transforms when the output is a vector with only k nonzeros, or one that is somehow close to that). One goal is to get a theoretical time bound that is at least as good as the O(n log n) bound for dense Fourier transforms and that shrinks with k, but it's also of interest to make these algorithms practical enough that they actually beat the usual FFT for values of k that are smaller than n only by an order of magnitude or two. I was surprised to see my name on one of the slides (I haven't ever worked on Fourier transforms), but apparently there's a connection or at least an analogy with hashing-based <a href="http://arxiv.org/abs/0704.3313">straggler detection algorithms</a>. The techniques Piotr discussed involved selecting a random arithmetic progression to sample within the input data (to scramble the frequencies in the output), carefully filtering the sample (the technique he name-checked was Dolph–Chebyshev filtering) to prevent the frequency peaks from smearing out, doing a dense FFT on the much smaller filtered sample, and then somehow unscrambling the result to recover the correct output frequencies.<br /><br />The last session I attended was the one on FPT graph algorithms. It started with an unusual talk slot, shared between two talks by Ramanujan M. S. and Yoichi Iwata on two papers for the same family of problems: deleting edges to make a graph bipartite, deleting clauses to make a 2-SAT instance solvable, or adding vertices over the matching bound in vertex cover problems. FPT algorithms were known before, but the new ones have only linear dependence on the graph size. Ramanujan solved them by analyzing the problem in terms of <a href="https://en.wikipedia.org/wiki/Skew-symmetric_graph">skew-symmetric graphs</a> and minimum separators; by finding and deleting symmetric edge pairs belonging to these separators he could reduce the problem to one where you didn't have to worry about the skew symmetry any more. Instead, Iwata solved it by finding a half-integral maximum-flow relaxation of a 0-1 integer linear program, with as many variables integral as possible, and then branching on the half-integer variables (a technique studied also in the next paper, by Magnus Wahlström). However, the flow network he used (a directed version of the bipartite double cover of the input) is skew-symmetric, so I suspect that the two techniques could be describes as more similar than they were.<br /><br />One last sort-of-graph-drawing talk was given by Bart Jansen, on the problem of recognizing <i>k</i>-apex graphs (graphs from which <i>k</i> vertices can be deleted so that the rest os planar). Kawarabayashi had previously reduced the time for this problem from nonconstructive-FPT (based on the fact that these graphs are defined by forbidden minors) to doubly exponential in <i>k</i><sup>3</sup>, and this one brought it all the way down to a much more reasonable-looking bound, exponential in <i>k</i> log <i>k</i> and linear in <i>n</i>. But the base of the exponential is big (not big compared to typical graph minor theory constants, but big enough), so this is still not usable in practice.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:282157Report from SODA, ALENEX, and ANALCO, day 22014-01-07T07:16:13Z2014-01-07T07:23:58Z<a href="http://www.mit.edu/~ecprice/">Eric Price</a> started Monday's talks (and his first day of work at IBM Almaden) by presenting his paper with Greg Minton, which won SODA's best student paper award. The main topic was a tighter analysis of <a href="https://en.wikipedia.org/wiki/Count%E2%80%93min_sketch">count-min sketches</a>, but he also presented two lemmas that both look much more broadly useful. The first lemma was on <a href="https://en.wikipedia.org/wiki/Central_tendency">center location</a> in <a href="https://en.wikipedia.org/wiki/Robust_statistics">robust statistics</a>: if you have a collection of samples from a distribution of the form c+E where c is an unknown but fixed real number and E is a (symmetric) noise distribution, what is the right way to estimate c from the samples? The mean will converge as quickly as possible to c, but is very sensitive to outliers (data that does not come from the assumed distribution and may be arbitrarily far away). The median is completely insensitive to outliers, but will not converge to c (e.g. suppose that E is equally likely to be +1 or –1; then the median will almost always be one unit away from c no matter how many samples you take). What he proved is that pairing up the samples (in a way that does not depend on their values), taking averages of the pairs, and taking the median of the averages is both robust and quickly converging. The proof uses Fourier analysis and applies more generally to medians of distributions whose Fourier transform is positive (which is the case for count-min). The second lemma concerned voting systems: given a collection of voters whose votes are drawn from {0,1} with some probability, what is the right way of estimating which of 0 or 1 has the higher probability? The obvious way is to choose the majority. The less obvious way (essentially what is used in American presidential politics) is to group the voters into sets, choose a majority in each set, and choose the majority of the majorities. What Price wanted to prove is that simple majority is always best; what he actually proved is that it is within a small constant factor of being the best. He then applied this to boost certain high-probability bounds on count-min.<br /><br />Piotr Indyk, Monday's scheduled invited speaker, turned out to be stuck in Chicago because of the recent weather-related air transportation snafus, so instead we got to hear Daniel Spielman a day early. Dan spoke on his recent solution of the Kadison–Singer conjecture (or rather of the Weaver K2 conjecture which implies it): very roughly, this says that a collection of vectors that looks spherical, in that the sum of its squared dot products with any unit vector is a constant unrelated to the unit vector, can be partitioned into two spherical subsets of approximately equal magnitude as long as some of the vectors are large. One (previously known) consequence is that any d-regular expander graph can be partitioned into two approximately d/2-regular expander graphs, by applying this to a set of n-dimensional vectors defined from the edges of the graph. Rather than attempting any additional uninformed explanation, why don't I just direct you to the two resources Spielman directed us to: <a href="http://www-devel.cs.ubc.ca/~nickhar/Publications/KS/KS.pdf">Nick Harvey's survey</a> and <a href="http://terrytao.wordpress.com/2013/11/04/real-stable-polynomials-and-the-kadison-singer-problem/">Terry Tao's blog</a>.<br /><br />I stuck with ANALCO for the afternoon talks. The first of them, by Gwendal Collet, discussed his work with Bernardi and Fusy on combinatorial enumeration problems related to planar graphs. He discussed several bijections relating plane graphs with triangular outer faces, Eulerian plane triangulated multigraphs, and orientations of plane ternary trees, which can be applied to generate uniformly-random plane graphs with a given number of edges in linear expected time. I believe this is closely related to the topic of Don Knuth's 2013 Christmas tree lecture (and <a href="http://www-cs-faculty.stanford.edu/~knuth/programs/skew-ternary-calc.w">associated software</a>):<br /><br /><div align="center"><lj-embed id="32" /></div><br /><br />Today was also the SODA business meeting. (I skipped the ALENEX/ANALCO meeting yesterday.) We started with a brief report from Cliff Stein (David Johnson's new replacement as steering committee chair) noting among other things that this year's SODA has the second highest attendance ever. Chandra Chekuri (program committee chair) thanked a lot of people, and then reported on acceptances by topic area. There used to be a perception that fixed parameter tractability was the European reaction to American approximation algorithms – SODA would take lots of approximation and ICALP and ESA would take lots of FPT – but this year FPT was one of the hot topics at SODA, with roughly a 44% acceptance rate compared to 27% overall. Data structures, however, did not fare so well, with only a 15% acceptance rate, something I find a bit worrisome since I think it's still an important subject. Chandra also made some suggestions for improvements to future SODAs, including a more complex hierarchy in the program committee to help it scale better, recording videos of talks (for an estimated $20 more per registration) and adding cookies to the afternoon coffee breaks.<br /><br />This is the 25th anniversary of the founding of SODA, and David Johnson gave a brief talk on SODA's history. It was founded in 1989 with two purposes: to handle the overflow in algorithms papers from FOCS and STOC (hence its timing interleaved between those two conferences) and to bring discrete mathematicians into the mix with the computer scientists. Now, it's regularly larger than both FOCS and STOC. Various measures have been taken over the years to keep the discrete mathematicians happy (and try to forestall their papers as being rejected as off-topic by overeager CS reviewers) including requiring a fraction of the program committee to be mathematicians as well as some experiments with shorter paper formats (for many years a topic of long discussion at these meetings). However, David expressed some disappointment that the experimental component of algorithms research seems to have been unsuccessful at SODA (being mostly relegated to ALENEX these days).<br /><br />The meeting finished with the usual discussion and vote (by rules made up as we went along based on what had happened in earlier stages) on where SODA 2016 will be (2015 having already been set for San Diego). Given SODA's long history of ignoring these votes and going somewhere else, nothing was announced as a final decision, but the four finalists were: Miami Beach (explicitly announced as not to include Miami, but probably too expensive to actually happen), 59 votes; Vancouver or Victoria, 47 votes; Washington DC, 36 votes; San Francisco, 31 votes. There's also a possibility that 2017 may be in Europe.<br /><br />And finally for today, an intriguing suggestion from dinner conversation. You know how html links from one web page to another can be given a nofollow attribute so that search engines such as Google don't count the link towards the popularity of the target web page? We should have a protocol for doing that for citations from one paper to another. That way, we can feel more free to cite incorrect papers (saying why they're incorrect), without fear that by citing them we'll drive up their citation counts, cause them to rank earlier in Google scholar results, and encourage others to find them in searches and treat them as valid.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:282037Report from SODA, ALENEX, and ANALCO, day 12014-01-06T06:57:10Z2014-01-06T07:02:53ZI'm in Portland, Oregon for SODA, ALENEX, and ANALCO (don't pronounce it the way it looks). There are four parallel sessions – three for SODA, one today for ALENEX, and one tomorrow for ANALCO – so plenty of good talks to choose among, and plenty that for one reason or another I had to miss. Here are some of the highlights of my first day:<br /><br />Dániel Marx gave a SODA talk on what I think is a very <a href="http://arxiv.org/abs/1307.3073">important new result</a> with Sylvain Guillemot, that finding <a href="https://en.wikipedia.org/wiki/Permutation_pattern">patterns in permutations</a> can be done in fixed-parameter-tractable time. The methods are also interesting, based on analogies with graph minor theory: he defines a "grid" in a permutation to be a partition of its scatterplot into a grid of non-empty cells by vertical and horizontal lines, and shows (constructively by a polynomial time algorithm) that every permutation either has a grid of size at least r or a decomposition of width at most an (exponential) function of r. Here a decomposition is a sequence of operations in which the bounding boxes of two subsets of points in the scatterplot are merged, and its width is the maximum number of bounding boxes that can be hit by an axis-parallel line at any step of the merging process. A grid is a kind of <a href="https://en.wikipedia.org/wiki/Superpattern">superpattern</a>, so if a large enough one exists then whatever pattern you're looking for also exists. And if on the other hand you get a low-width decomposition, you can do some dynamic programming on it to find whether your pattern exists. (In fact, the largest grid size in a permutation and the largest k for which it's a k-superpattern are polynomially related: k is at least equal to the side length of the grid and less than area of the next larger grid.)<br /><br />At ALENEX, Aurick Qiao spoke on his work with Kushagra, Lopez-Ortiz, and Munro on what appears to be the fastest known variant of <a href="https://en.wikipedia.org/wiki/Quicksort">quicksort</a>, based on doing a four-way split with three pivots (chosen randomly as the second, fourth, and sixth of seven random selections). They apparently also tried seven pivots but it wasn't as good. Their main insight is that the time is controlled more by cache misses than by the number of comparisons or the number of swaps; these three parameters are all Θ(<i>n</i> log <i>n</i>), but with different constants, and the three-pivot version has the best cache constants.<br /><br />Herbert Edelsbrunner's invited talk concerned <a href="https://en.wikipedia.org/wiki/Alpha_shape">alpha-shapes</a>, <a href="https://en.wikipedia.org/wiki/Persistent_homology">persistence</a>, and recent developments in topological stability, describing a research program that has unfolded over 30 years. He made it seem like it all fit together as a single story, despite warning us that he had no idea where it was all going as it happened.<br /><br />The first afternoon session at ALENEX contained two graph drawing talks (my student has another at ANALCO tomorrow but there appear to be none in SODA). Markus Chimani spoke on using weighted SAT solvers (in which the goal is to find the maximum-weight satisfying assignment) to exactly minimize crossings in upward planar drawings (a problem that has been standard in graph drawing for years but until now only solved heuristically). And Carsten Gutwenger also described a system for turning a graph drawing problem into a system of Boolean equations, but one that can be solved in polynomial time (linear equations over GF2). The problem he approached with this method is testing whether a hierarchically clustered graph is clustered-planar; his algorithm will say yes, no, or maybe, so it doesn't constitute a polynomial-time solution, but in practice the maybe answer is very rare.<br /><br />In the final ALENEX session, Benjamin Burton gave a fast-paced talk on computational methods in low-dimensional topology. He pointed out that for him, mathematics counts as an application area of algorithms, and he divided algorithmic problems in topology into five classes: theoretically and practically easy (e.g. classifying two-dimensional surfaces), practically easy but theoretically unclear (e.g. recognizing the unknots), hard but still possible, theoretically solvable but practically unusable (e.g. classifying three-manifolds), and theoretically undecidable (e.g. classifying four-manifolds). In many cases, the problems in the second and third categories can be solved by finding the right kind of <a href="https://en.wikipedia.org/wiki/Normal_surface">normal surface</a> within a three-dimensional triangulation. The integer vectors describing normal surfaces form a non-convex subset of a convex polyhedral cone in a high-dimensional space, and in some of the practically-easy problems one can find the surface you want among the extremal rays of this cone. But for the problems he was considering today, you instead need the minimal points (Hilbert basis) among the points interior to the cone; the main point of his paper was that these can be found more quickly by merging the non-convex constraints into an algorithm for finding the Hilbert basis instead of testing them later.<br /><br />At this point I shifted back to SODA for some graph theory talks to end the day. One of these, by Martin Vatshelle (with Daniel Lokshtanov and Yngve Villanger) finally closes out the problem of classifying the complexity of weighted independent set problems on families of graphs characterized by a forbidden induced subgraph of at most five vertices. If the forbidden subgraph has a cycle or a degree-four vertex, it's NP-complete; otherwise it's solvable in polynomial time. But Martin thinks it's unlikely that such a P-NPC dichotomy continues to hold for all larger forbidden induced subgraphs.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:281759Rose Parade2014-01-04T03:52:47Z2014-01-04T03:52:47ZHere's one last photo posting before I go back to more technical material. This new year, my in-laws decided that they wanted to see the Rose Parade, and brought us along with them. So <a href="http://www.ics.uci.edu/~eppstein/pix/roseparade/index.html">here are my photos of the parade</a>. It's a bit of an extravaganza of corporate advertisement and conventional sentimentality, but fun anyway. It's impossible to pick a representative sample from so many images, so here's just one, of one of the less conventional elements of the parade.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/roseparade/LSJUMB2-m.jpg" border="2" style="border-color:black;" /></div><br /><br />My friend Tyler was outraged at the way the Stanford Band strolled through instead of marching in lockstep. He felt it was an insult to all the other bands that had practiced hard to be in the parade, and a serious enough insult that they should be banned from the parade (in fact they have been banned in the past). I could quibble about his reasoning: several of the bands are in it by virtue of geography or a good football team rather than effort, the Stanford Band clearly puts in plenty of practice in their musicianship and scatter-formation, and in any case why interpret their performance by how it reflects on someone else rather than taking it for itself? But my own reaction is instead one of pride in my alma mater's continuing support of nonconformity and boundary-pushing.<br /><br />(The Hawaii all-state band also did their fair share of boundary pushing by making their whole show into a tribute to the rainbow flag and by making their underdressed eye-candy male instead of female. Props to them for it.)