urn:lj:livejournal.com:atom1:110111100xDE0xDE0xDE2016-07-16T05:51:38Zurn:lj:livejournal.com:atom1:11011110:332980Linkage2016-07-16T05:51:38Z2016-07-16T05:51:38ZMore actual posts from the last couple of weeks means fewer links.<br /><ul><li><a href="https://www.youtube.com/watch?v=oWfFco7K9v8">Squircle illusion</a>: now 3d printing can make things round and square at the same time (<a href="https://plus.google.com/100003628603413742554/posts/bBUP52zARpB">G+</a>)</li><br /><li><a href="http://archive.bridgesmathart.org/">The latest wonders of mathematical art from Bridges 2016</a> (<a href="https://plus.google.com/100003628603413742554/posts/NBbD7gkShq2">G+</a>)</li><br /><li><a href="https://sympa.inria.fr/sympa/arc/compgeom-announce/2016-07/msg00002.html">CCCG accepted papers</a> (<a href="http://www.sfu.ca/~shermer/CCCG2016/schedule.pdf">or now there's an actual schedule</a>; <a href="https://plus.google.com/100003628603413742554/posts/Xyv25CoLuzu">G+</a>)</li><br /><li><a href="http://chronicle.com/article/The-U-of-California-s/237044">Low faculty uptake of the University of California's all-subjects open access repository</a> (<a href="https://plus.google.com/100003628603413742554/posts/HBAEJQsmb3M">G+</a>, many good comments)</li><br /><li><a href="https://www.youtube.com/watch?v=WMqmKHcI38A">20-minute nontechnical video documentary about recent hacking culture</a> (<a href="https://plus.google.com/100003628603413742554/posts/eueyjuz7ncr">G+</a>)</li><br /><li><a href="http://blog.wolfram.com/2013/03/28/from-close-to-perfect-a-triangle-problem/">How can you divide a square into finitely many similar acute triangles?</a> (<a href="https://plus.google.com/100003628603413742554/posts/hvYyP72KT34">G+</a>)</li><br /><li><a href="http://blogs.plos.org/plos/2016/07/impact-factors-do-not-reflect-citation-rates/">No article can be judged on the basis of the Impact Factor of the journal in which it is published</a> (<a href="https://plus.google.com/100003628603413742554/posts/GsFnL16BcJX">G+</a>)</li><br /><li><a href="https://www.quantamagazine.org/20160712-hyperuniformity-found-in-birds-math-and-physics">Uniformly-spaced point sets in nature</a> (see also <a href="https://en.wikipedia.org/wiki/Delone_set">Wikipedia on Delone sets</a>; <a href="https://plus.google.com/100003628603413742554/posts/E5vzYhkWpoB">G+</a>)</li><br /><li><a href="http://blog.plover.com/math/17-puzzle.html">A trickier variant of the 4 4's puzzle</a> (<a href="https://plus.google.com/100003628603413742554/posts/4HWgNELfx3A">G+</a>, with spoilers in the comments)</li><br /><li><a href="http://www.theestablishment.co/2016/07/11/even-doing-academic-research-on-video-games-puts-me-at-risk/">Researchers keeping a low online profile</a> in the face of persistent harassment of anyone who criticizes misogyny in computer gaming (<a href="https://plus.google.com/100003628603413742554/posts/YKUU5XJxW6T">G+</a>)</li></ul>urn:lj:livejournal.com:atom1:11011110:332617Preprocessing arrays for fast sorted-subarray queries2016-07-14T01:02:11Z2016-07-14T01:02:11ZSuppose you have an array of <i>n</i> real numbers (or other totally ordered values that you can compare but not treat as small integers). You want to answer queries that specify a contiguous subarray and return the sorted sequence of values within that subarray. Without any preprocessing you could query a subarray of length <i>k</i> in time <i>O</i>(<i>k</i> log <i>k</i>), by pulling out the subarray and then comparison sorting it. With preprocessing, how much better can we do?<br /><br />The obvious answer would be to sort the input, and replace each real number by an integer, its position in the sorted sequence. Doing this would allow us to use <a href="https://en.wikipedia.org/wiki/Integer_sorting">integer sorting</a> algorithms to handle each query. This works particularly well for long queries (longer than <i>n</i><sup><i>ε</i></sup> for some <i>ε</i> > 0), because then you can use <a href="https://en.wikipedia.org/wiki/Radix_sort">radix sort</a> to answer the query in linear time. But it is still somewhat problematic for shorter queries, where we don't have time to set up and then take down the big arrays used by radix sort, and where other integer sorting algorithms are both less practical than radix sort and slower than linear time.<br /><br />So here's a trick that works better. For each <i>i</i> from 1 to log<sup>*</sup> <i>n</i>, divide the array into sub-arrays of size 2<sup>2<sup><i>i</i></sup></sup>. Sort these subarrays (by merging the smaller subarrays from the next smaller value of <i>i</i>) and, for each element, write down its position in the sorted subarray; this is a 2<sup><i>i</i></sup>-bit binary number. Then, for each element of the whole big array, write down one number, the concatenation of these numbers for all the subarrays. (It works best if the bigger subarrays get more-significant bits of the concatenation.) That way, each of the original inputs gets an index number that is still only <i>O</i>(log <i>n</i>) bits long. By doing the recursive array partition top-down instead of bottom-up you can make the number of bits at most 2 log <i>n</i>, and by using a larger base than 2 you can make it at most (1 + <i>ε</i>)log <i>n</i> for any <i>ε</i> > 0.<br /><br />Then, to handle any query subarray of length <i>k</i>, decompose the query into at most two of the subarrays of the recursive decomposition above that are both of length <i>O</i>(<i>k</i><sup>2</sup>). Mask off the higher order bits of the index numbers within those subarrays so that the remaining number of bits is <i>O</i>(log <i>k</i>), small enough that radix sort can be used to sort these numbers in linear time. Merge the two sorted subarrays to give the answer to the query.<br /><br />The time to preprocess the input is <i>O</i>(<i>n</i> log <i>n</i>), unsurprising since we have to comparison sort somewhere. But the space for the resulting data structure is only <i>O</i>(<i>n</i>), and it allows sorted-subarray queries in time linear in the length of the subarray.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:332331Circle packings via matching and LP duality on sparse graphs2016-07-11T07:12:07Z2016-07-11T07:12:07ZI have another new paper out on arXiv: <a href="http://arxiv.org/abs/1607.02184">"Maximizing the Sum of Radii of Disjoint Balls or Disks", arXiv:1607.02184</a>, to appear at <a href="http://www.sfu.ca/~shermer/CCCG2016/">CCCG</a>. The problem solved by the paper is, as the title says, to find a set of disks in the plane (or balls in a metric space), with given centers, that do not overlap each other and have as large a sum of radii as possible. There's some weak motivation in terms of map labeling, but really it's an exercise in how LP duality and sparse graph theory can be used to find efficient combinatorial algorithms for problems that can be solved numerically and less efficiently by linear programming. In fact as I was writing it I half-expected the metric space part to show up as an exercise in a book on related topics, such as Vazirani's book on primal-dual approximation algorithms. Maybe it is and I just didn't find the reference; if so please tell me.<br /><br />First of all, in general metric spaces, "overlap" needs to be defined carefully, because balls that you might think should overlap are not guaranteed to have any points of intersection. Rather, the paper defines as overlapping when their radii sum to more than the distance between their centers. With that definition, the condition that no two balls overlap is given by a system of linear inequalities, and the goal of maximizing the sum of radii is a linear objective function, so we have a linear program. It's a linear program with two variables per inequality, which is suggestive that a combinatorial algorithm should exist: feasibility testing for these programs is strongly polynomial, and they include important combinatorial problems such as shortest paths and bipartite matching.<br /><br />But the ball problem doesn't quite seem to be one of those known problems. Instead, it ends up being the LP dual of the LP relaxation of weighted matching on a complete (not bipartite) graph. That's good, because it relates it to a known problem, but bad, because the LP relaxation of non-bipartite matching is not actually the same as matching itself. To formulate a matching problem as a linear program, you make a variable for each edge of a graph, and look for a way to set these variables to values between zero and one that has a sum of exactly one at each vertex and minimizes the weighted sum of the variables. This works for bipartite graphs, because there is always an optimum solution that assigns zeros and ones to each edge variable; the ones are the matched edges. But for non-bipartite graphs, you sometimes get edge variables equal to 1/2, and then you can't interpret the result of the linear program as a matching. And this linear program with the 0's, 1's, and 1/2's in its solution is the one that is equivalent (under LP duality) to non-overlapping ball radius optimization.<br /><br />So now, we have two problems, where before we had one: how do we find a combinatorial algorithm for this fractional matching-like problem? And how do we turn its solution back into a circle packing?<br /><br />The first question turns out to be easy enough: if we double the edge variables (so they're 0, 1, or 2 instead of 0, 1/2, or 1) what we're looking for are edge multiplicities of a 2-regular multigraph. We can turn the problem of finding the optimal 2-regular multigraph back into a standard matching problem by using the <a href="https://en.wikipedia.org/wiki/Bipartite_double_cover">bipartite double cover</a> of the complete graph. A matching in the double cover is equivalent (up to some choices of cycle orientation that don't matter for us) to a 2-regular multigraph on the vertices of the original complete graph. But the answer to the second question is trickier. It involves understanding the details of weighted graph matching algorithms in terms of primal-dual optimization, in order to extract the dual variables of the matching problem from these algorithms. These dual variables turn out to look like ball radii for the circle packing problem. Only, because we doubled the graph, we double the number of dual variables and end up with two radii for each center, more than we want. Because everything is still linear, it turns out to work to average the two variables, giving a single optimal radius for each circle.<br /><br />That was all the exercise in LP duality. What about the sparse graph theory?<br /><br />Well, we don't actually need to use the complete graph. We just need some graph that contains a basis for the linear program. One that turns out to work is the graph formed by drawing a too-big circle around each center, one that reaches all the way to the nearest neighbor, and then take the intersection graph of these big circles.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/radius-sum-nng.png"></div><br /><br />This graph is non-bipartite, but the same sequence of tricks (doubling the graph, matching, extracting the dual variables from the matching, and averaging them in pairs) still works. Importantly, it's sparse (the number of edges is at most proportional to the number of vertices, with a constant of proportionality depending exponentially on dimension) and obeys a <a href="https://en.wikipedia.org/wiki/Planar_separator_theorem">separator theorem</a> (again depending on dimension). So we can use a separator-based divide and conquer to speed up the matching. The general idea of using separators to speed up matching was long known, but the paper that proved it was too vague in how it handled the dual variables for me to rely on, since that's the information I need it to produce, so (in an appendix to my paper) I rederived that part, and in the process shaved a log factor from its time bound.<br /><br />When we put this all together, we get cubic time for ball packing in metric spaces, but a much faster bound, <i>O</i>(<i>n</i><sup>3/2</sup>) for circles in the Euclidean plane.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:332116Streaming integer points in smaller space2016-07-05T01:11:35Z2016-07-08T23:28:34ZHere's an update to the <a href="http://11011110.livejournal.com/332029.html">streaming integer point puzzle</a> that I posted yesterday. Recall that the puzzle was to generate all the integer points in the plane, in constant amortized time per point, using as little space as possible. In the post, I gave a solution whose space is proportional to the square root of the number of points generated so far. In the comments to <a href="https://plus.google.com/100003628603413742554/posts/21StgVRfqX1">my G+ link to the post</a>, Sariel Har-Peled suggested an improvement, but without much detail. So, here is some detail for Sariel's idea.<br /><br />As before, we use a <a href="https://en.wikipedia.org/wiki/Bucket_queue">bucket queue</a> of candidates for the next point to generate, but with fewer candidates. To make the space small, we should implement the bucket queue as hash table of buckets (as I implemented it) rather than an array of buckets (as it is usually described).<br /><br />Instead of maintaining a pixelated curve representing the frontier between generated and not-yet-generated points, we maintain the <a href="http://Convex hull">convex hull</a> of the generated points, together with a candidate point for the next point to generate, beyond each hull edge. Each edge's candidate is the closest point to the origin that has not yet been generated and that lies on the far side of the edge from the origin. As before, the priorities of each candidate are just their squared Euclidean distances from the origin.<br /><br />In most cases, a convex hull edge will not have any interior grid points. Then it turns out that the candidate for each such edge must form a triangle of area 1/2 with that edge, by <a href="https://en.wikipedia.org/wiki/Pick%27s_theorem">Pick's theorem</a>, or else there would be a better candidate inside the triangle. That means that it must lie on a line parallel to the edge, the one closest to the edge that passes through at least one integer point. On this line, there are infinitely many grid points, but in most cases only one or two lie within a rectangle having the given edge as one side and the line through the candidate as the other side. The candidate must be one of these one or two rectangle points.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/disk-hull-candidates.png"></div><br /><br />When a convex hull edge has interior grid points, its candidate will still lie on the closest grid line, but the rectangle defined by the edge and the line may have more than one grid point on it. In these cases we can still find a single best candidate point but it will be helpful also to store a pair of closest points along the edge, in order to make it easier to construct future candidates.<br /><br />When we generate a new point, we can subdivide the convex hull edge that it comes from (the one that it is a candidate for) into two edges through the new point, and compute the new candidates for these two new edges, in constant time, by looking at small integer combinations of the edge endpoints, the generated point, and (in cases where the edge has interior points) the vector difference between consecutive points along the edge. But the problem is that the polygon resulting from this subdivided step might not be convex. So, as long as one of the two new edges has a nonconvex angle, we have to merge it and its adjacent edge, popping out a triangle and making the polygon closer to its convex hull. In each of these merge steps, the candidate point for the merged edge can be taken as the better of the two candidates for the edges being merged (these candidates have not been generated yet, so they must still be outside the convex hull and outside the merged edge, and if one of them was the closest outside point before the merge then it remains so after the merge). Each merge step reduces the hull complexity and can be charged against an earlier step that increased the complexity. So the total time per generated point still remains constant amortized.<br /><br />The remaining question is, how much space does this structure use? Equivalently, when the disk of a given radius centered at the origin has <i>n</i> points in it, how many edges can its convex hull have? Conveniently, this question has already been answered by Balog and Bárány, in their paper "<a href="http://doi.org/10.1145/109648.109666">On the convex hull of the integer points in a disc</a>" in SoCG 1991. They show that the answer is Θ(<i>n</i><sup>1/3</sup>). Therefore, the same <i>O</i>(<i>n</i><sup>1/3</sup>) bound holds for the space of this point-generation algorithm.<br /><br />ETA 7/7: It might not actually be the case that the closest point beyond a hull edge is inside the rectangle. For instance, when the squared distance is 481, we might have a hull edge (16,15)–(18,12) (with point (20,9), on the same line and also at squared distance 481, not yet generated). In that case the point in the rectangle is (17,14) at squared distance 485, but there is a closer point beyond the edge, (19,11) at squared distance 482. Nevertheless, it seems to work correctly for each edge to maintain as its candidate the unique rectangle point (or, in the case that the two corners of the rectangle are both lattice points, so that it's actually a lattice square, the one of these two points that is closest to the origin) and let other hull edges worry about other points that might be closer.<br /><br />ETA2, 7/8: <a href="http://www.ics.uci.edu/~eppstein/PADS/IntegerPoints.py">Implemented and tested up to radius 100</a>.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:332029Streaming integer points sorted by distance2016-07-03T23:14:32Z2016-07-04T16:59:22ZHere's a puzzle in streaming algorithms: suppose you want to generate a stream of all the (infinitely many) integer points (<i>x</i>,<i>y</i>) in the plane, in sorted order by their Euclidean distance from the origin. How little space do you need?<br /><br />The answer is <i>O</i>(1), if you assume that a single variable can store any number whose size is comparable to the coordinates output so far and you're willing to do it slowly enough. First, observe that you can avoid non-integer arithmetic by using the squared distance <i>x</i><sup>2</sup> + <i>y</i><sup>2</sup> in place of the distance itself. Maintain a current squared distance <i>d</i> and a number <i>r</i> equal to the square root of <i>d</i> rounded up to an integer (both initially zero). Search a square of radius <i>r</i>, outputting all points at distance <i>d</i>, then increment <i>d</i> and update <i>r</i> and repeat.<br /><br />But now suppose you want to do it much more quickly, constant (amortized) time per point. In this case it's still possible to achieve sublinear space (as a function of the output length so far) with a little data structural help. The idea is to observe that if <i>n</i> points have been output so far, then they form a pixelated disk whose boundary length is proportional to √<i>n</i>. By maintaining a priority queue of boundary points, each can be found quickly. A suitable priority queue is the <a href="https://en.wikipedia.org/wiki/Bucket_queue">bucket queue</a> (new Wikipedia article): an array of buckets, indexed by squared distance, where bucket <i>i</i> stores all the boundary points at squared distance <i>i</i>. Conveniently, the maximum squared distance seen at any time will be proportional to the number of points output, so the total time spent scanning the array for the next nonempty bucket can be amortized out to constant time per point.<br /><br />Is less than √<i>n</i> space possible? I don't know, but I also don't know any streaming lower bound techniques powerful enough to prove that it isn't possible. Most of the lower bounds I know of are information theoretic, but the slow constant-space method shows that information theory alone won't prove anything nontrivial for this problem.<br /><br />Along with the Wikipedia article, I added to my <a href="http://www.ics.uci.edu/~eppstein/PADS/">PADS library of Python implementations</a> three new modules: <a href="http://www.ics.uci.edu/~eppstein/PADS/BucketQueue.py">BucketQueue.py</a> (bucket queues), <a href="http://www.ics.uci.edu/~eppstein/PADS/IntegerPoints.py">IntegerPoints.py</a> (the fast streaming integer point algorithm), and <a href="http://www.ics.uci.edu/~eppstein/PADS/GraphDegeneracy.py">GraphDegeneracy.py</a> (another application of bucket queues for <a href="https://en.wikipedia.org/wiki/Degeneracy_(graph_theory)">graph degeneracy</a> and triangle finding).<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:331528Reykjanes2016-07-02T17:42:32Z2016-07-02T17:42:32Z<p>Here are some of my photos from the SWAT excursion to the Reykjanes peninsula, and of some of the participants. Iceland (even this small part of it) was easily as scenic as I had been led to believe.</p><br /><br /><div style="clear:both"></div><div align="center"><table border="0" cellpadding="10">
<tr align="center" valign="middle">
<td><a href="http://www.ics.uci.edu/~eppstein/pix/reykjanes/DanielMarx.html"><img src="http://www.ics.uci.edu/~eppstein/pix/reykjanes/DanielMarx-m.jpg" width="240" border="2" style="border-color:black;" /></a></td>
<td><a href="http://www.ics.uci.edu/~eppstein/pix/reykjanes/Kleifarvatn3.html"><img src="http://www.ics.uci.edu/~eppstein/pix/reykjanes/Kleifarvatn3-m.jpg" width="360" border="2" style="border-color:black;" /></a></td>
</tr><tr align="center" valign="middle">
<td><a href="http://www.ics.uci.edu/~eppstein/pix/reykjanes/PetteriKaskiAndAndreasBjorklund.html"><img src="http://www.ics.uci.edu/~eppstein/pix/reykjanes/PetteriKaskiAndAndreasBjorklund-m.jpg" width="360" border="2" style="border-color:black;" /></a></td>
<td><a href="http://www.ics.uci.edu/~eppstein/pix/reykjanes/MagnusHalldorsson.html"><img src="http://www.ics.uci.edu/~eppstein/pix/reykjanes/MagnusHalldorsson-m.jpg" width="240" border="2" style="border-color:black;" /></a></td>
</tr><tr align="center" valign="middle">
<td><a href="http://www.ics.uci.edu/~eppstein/pix/reykjanes/Seltun3.html"><img src="http://www.ics.uci.edu/~eppstein/pix/reykjanes/Seltun3-m.jpg" width="240" border="2" style="border-color:black;" /></a></td>
<td><a href="http://www.ics.uci.edu/~eppstein/pix/reykjanes/Valahnukur3.html"><img src="http://www.ics.uci.edu/~eppstein/pix/reykjanes/Valahnukur3-m.jpg" width="360" border="2" style="border-color:black;" /></a></td>
</tr></table></div><br /><br /><p><b>( <a href="http://www.ics.uci.edu/~eppstein/pix/reykjanes/index.html">The rest of the photos</a> )</b></p>urn:lj:livejournal.com:atom1:11011110:331438Linkage2016-07-01T05:35:55Z2016-07-01T05:35:55ZI'm getting the hard-to-quantify but persistent feeling that G+ is getting quieter lately...too much of the actual content has moved elsewhere, maybe, and I'm seeing more of the filler. Wouldn't be surprised if Google pulls the plug soon, like they have on other projects. But for now here's my filler for the last couple of weeks.<br /><ul><li><a href="https://www.insidehighered.com/quicktakes/2016/06/16/examining-why-female-students-leave-engineering">Why do women leave engineering?</a> (<a href="https://plus.google.com/100003628603413742554/posts/cjY35yveEx2">G+</a>)</li><br /><li><a href="http://www.conwaylife.com/forums/viewtopic.php?f=7&t=2188&start=75">Still life prototiles</a> (<a href="https://plus.google.com/100003628603413742554/posts/2AFNpeiLsbS">G+</a>)</li><br /><li><a href="http://drops.dagstuhl.de/portals/extern/index.php?semnr=16005">Proceedings of the 32nd International Symposium on Computational Geometry</a>, free online (<a href="https://plus.google.com/100003628603413742554/posts/gCk97o7meFT">G+</a>)</li><br /><li><a href="http://lemire.me/blog/2016/06/15/how-fast-is-tabulation-based-hashing-or-the-downsides-of-zobrist/">How fast is tabulation-based hashing?</a> Not as fast as you might hope (<a href="https://plus.google.com/100003628603413742554/posts/afeDtm4MjYL">G+</a>)</li><br /><li><a href="https://circlesandtrianglesblog.wordpress.com/2016/06/06/three-dimensional-tessellation/">Three dimensional tessellation of crosses</a> (<a href="https://plus.google.com/100003628603413742554/posts/itrith3hLwa">G+</a>)</li><br /><li><a href="http://curiosamathematica.tumblr.com/post/140731259824/animation-by-twocubes-showing-the-roots-of-the">Animations of polynomial roots</a> as one coefficient moves on a circle in the complex plane (<a href="https://plus.google.com/100003628603413742554/posts/WsRdtQfMdH9">G+</a>)</li><br /><li><a href="http://drops.dagstuhl.de/portals/extern/index.php?semnr=16008">Proceedings of the 15th Scandinavian Symposium and Workshops on Algorithm Theory (SWAT 2016)</a>, also free online (<a href="https://plus.google.com/u/0/100003628603413742554/posts/DPSPPYRYobL">G+</a>)</li><br /><li><a href="http://www.metafilter.com/160532/Translated-he-says-Yes-yes-yes-yes-yes-we-are-winning-this">Iceland 2 Austria 1</a>, a fun thing to experience in Iceland at SWAT (<a href="https://plus.google.com/100003628603413742554/posts/976LpxHEmkG">G+</a>)</li><br /><li><a href="https://twitter.com/kcsaff/status/744351065496182784">Singular they</a>, still the right way to do gender-neutral third-person pronouns (<a href="https://plus.google.com/100003628603413742554/posts/1AqG4ZDviMt">G+</a>)</li><br /><li><a href="http://www.physics.utoronto.ca/nonlinear/PNASpress/PNASpress.html">Make your own miniature columnar basalt out of corn starch</a> (<a href="https://plus.google.com/100003628603413742554/posts/PAxuLJBGvei">G+</a>)</li><br /><li><a href="http://www.smithsonianmag.com/history/surprising-history-infographic-180959563/?no-ist">The 200-year history of infographics</a> (<a href="https://plus.google.com/100003628603413742554/posts/NHmZVYcP8q4">G+</a>)</li><br /><li><a href="https://www.insidehighered.com/news/2016/06/27/stopping-tenure-clock-may-help-male-professors-more-female-study-finds">Having a child-care tenure-delay policy hurts women by giving a greater advantage to the men</a> (<a href="https://plus.google.com/100003628603413742554/posts/5H5NGKmfPP7">G+</a>)</li><br /><li><a href="https://www.wired.com/2016/06/researchers-sue-government-computer-hacking-law/">Researchers sue for the right to investigate algorithmic discrimination</a> (<a href="https://plus.google.com/100003628603413742554/posts/DR4qLZKKFAa">G+</a>)</li><br /><li><a href="https://news.artnet.com/art-world/yinmn-blue-to-be-sold-commercially-520433">Chemical serindipity finds a new blue</a> (<a href="https://plus.google.com/100003628603413742554/posts/Y9TAToMTzXr">G+</a>)</li></ul>urn:lj:livejournal.com:atom1:11011110:331074Reykjavik street art2016-06-29T04:22:58Z2016-06-29T04:22:58ZHere's the first of two batches of photos from my recent visit to Iceland. This set is from before the conference, when I had most of a day free to wander around Reykjavik. It's mostly of street art from the touristy shopping area where my hotel was located, and graffiti from some rougher looking areas nearby. This shot was the first I had a chance to take, of a building across the street from my hotel:<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/reykjavik/Caratoes-m.jpg" border="2" style="border-color:black;" /></div><br /><br /><b>( <a href="http://www.ics.uci.edu/~eppstein/pix/reykjavik/index.html">More photos</a> )</b>urn:lj:livejournal.com:atom1:11011110:330960Open problems from SWAT2016-06-25T09:04:32Z2016-06-25T09:04:32ZI'm now making my way back from Iceland, where I attended the <a href="http://swat16.ru.is">15th Scandinavian Symposium and Workshops on Algorithm Theory (SWAT 2016)</a>. Rather than providing a run-down of the talks and results I found interesting (you can choose your own from the <a href="http://drops.dagstuhl.de/portals/extern/index.php?semnr=16008">conference proceedngs</a>, this year provided as open-access through <a href="http://drops.dagstuhl.de/opus/institut_lipics.php?fakultaet=04">LIPIcs</a>), I thought it might be more fun to mention a few open problems that people mentioned along the way and that caught my attention.<br /><br />The first invited talk, by Julia Chuzhoy, concerned the relation between grid minor size and treewidth. There exist graphs of treewidth t whose biggest grid minor has side length O(sqrt t/log t), and the results she spoke about give polynomiial lower bounds, but with much smaller exponents (currently around 1/19). As her abstract states, "an important open question is establishing tight bounds" for this problem.<br /><br />From Zachary Friggstad's talk on integrality gaps for directed Steiner trees, we have the situation that (for directed Steiner tree problems with t terminals) it is possible to approximate the solution within a t<sup>ε</sup> factor, for any ε > 0, in polynomial time, or to within a polylog factor in quasipolynomial time. Is a polynomial-time polylog-factor approximation possible?<br /><br />Daniël Paulusma spoke on finding square roots of k-apex graphs; that is, one is given a graph G that could be made planar by the deletion of k vertices, and the goal is to find another graph R on the same vertex set such that two vertices are adjacent in G if and only if their distance in R is at most two. There are a lot of other graph classes for which the problem is known to be polynomial or hard, but he listed as open finding square roots of split graphs or cographs, and finding graph square roots that are planar.<br /><br />Jens Schmidt's talk was motivated by some older work of Mikkel Thorup on recognizing map graphs, the intersection graphs of interior-disjoint simply-connected regions in the plane. These differ from planar graphs because of the four corners phenomenon, where Arizona, Colorado, New Mexico, and Utah all meet at a point (and are all adjacent in the map graph). Thorup gave a polynomial time recognition algorithm but his exponent is huge and his algorithm does not provide a combinatorial certificate of being a map graph (a planar bipartite graph whose half-square is the given graph). Schmidt gave a more satisfactory solution to a special case but would like a better algorithm for the general problem.<br /><br />My own talk concerned <a href="http://11011110.livejournal.com/327681.html">cuckoo filters</a>, a more space-efficient replacement for Bloom filters. A data structure of Pagh et al provides a theoretical but not-yet-practical solution for the same problem (for all false positive rates), but cuckoo filters only work well when the false positive rate is small enough. What about if we want a practically efficient filter that gives a high false positive rate, say 20%? Can we get close to optimal space in this case?<br /><br />Konrad Dabrowski made progress on classifying which sets of forbidden induced subgraphs lead to graph families with bounded clique-width by showing that (diamond,P1+2P2)-free graphs and four other similarly defined classes do have bounded clique-width. But as he reports, there are many remaining open cases.<br /><br />Dana Richards spoke on a problem of comparison-sorting a set of items when only certain pairs of items are allowed to be compared, but his paper has more questions on this problem than answers. Any set of comparisons that you make (a subset of allowed ones) gives you a DAG with an edge for each comparison, oriented from smaller to larger, and you can infer the results of all comparisons in the transitive closure of this DAG. The goal is to either test or infer the results of all allowed comparisons. You can do it in a sublinear number of comparisons when either the set of allowed comparisons is small (by just doing them all) or its complement is small (by Richards' algorithm) but what he would like to prove is a subquadratic (deterministic) bound that holds in all cases.<br /><br />Timothy Chan revisited one of the first kinetic data structures, for closest pairs (and/or nearest neighbors). The static version of the problem can be solved in O(n log n) time in any constant dimension, but previous kinetic structures had a factor of log<sup>dimension</sup> in their time bounds. Chan eliminated this, but at the expense of making the time bound depend on the geometry of the input (the range of values that the closest pair might span) instead of just on the number of points. He asked whether it is possible to eliminate both the dependence on dimension and the dependence on geometry.<br /><br />One of the disadvantages of the move from paper to electronic proceedings (at least in my own experience) is less browsing and more going directly to the papers you already knew you were looking for. And one of the continuing advantages of going to a symposium like this (especially a small and welcoming one like SWAT) is that by listening to talks on subjects you don't already know about, you can broaden your own interests and find out about topics you might not have discovered on your own. But browsing is still possible, even if we no longer are forced to leaf through paper proceedings. So, I'd encourage you to download the full proceedings (from the link at the top left corner of the proceedings link) rather than just the individual papers, and browse them to find many more problems that the papers there have listed as open.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:330609Lesley2016-06-20T01:02:53Z2016-06-20T01:03:31ZI've been slow processing this but the arrival of the official shots reminded me: this is from my daughter's graduation a month ago from Lesley (with a B.F.A. in photography).<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/lesley/2-m.jpg" border="2" style="border-color:black;" /></div><br /><br />Sara tells me she likes <a href="http://www.ics.uci.edu/~eppstein/pix/lesley/1.html">the other shot</a> better, though.urn:lj:livejournal.com:atom1:11011110:330247Linkage2016-06-16T05:26:43Z2016-06-16T05:26:43Z<ul><li><a href="http://www.samefacts.com/2016/05/education-2/an-annoying-trend-in-academic-presentations/">Why screenshots of published journal articles make bad talk slides</a> (<a href="https://plus.google.com/100003628603413742554/posts/KAJaVJFkhwp">G+</a>)</li><br /><li><a href="http://rsos.royalsocietypublishing.org/content/3/5/160091">Fibonacci and non-Fibonacci spirals in sunflowers</a> (<a href="https://plus.google.com/100003628603413742554/posts/WUKxEtU9cB6">G+</a>)</li><br /><li><a href="http://bit-player.org/2016/prime-after-prime">More on correlations in the moduli of consecutive primes</a> (<a href="https://plus.google.com/100003628603413742554/posts/hv6jCzodYqE">G+</a>)</li><br /><li><a href="http://www.latimes.com/business/hiltzik/la-fi-hiltzik-university-business-20160602-snap-story.html">Less state funding of universities = more corporate corruption</a> (<a href="https://plus.google.com/100003628603413742554/posts/SXpwqG6uNQP">G+</a>)</li><br /><li><a href="http://chronicle.com/article/After-the-Gold-Rush/236708">My cross-the-street neighbor, caught up in a saga of a MOOC gone bad</a> (<a href="https://plus.google.com/100003628603413742554/posts/Epe6KCqEY1z">G+</a>)</li><br /><li><a href="http://arxiv.org/abs/1606.01783">Lonely runner conjecture still not solved</a> (<a href="https://plus.google.com/100003628603413742554/posts/QwoRv1f4YCt">G+</a>)</li><br /><li><a href="https://medium.com/vantage/you-can-tell-europe-to-help-protect-street-photography-6d4b6c4f3442#.2hmpvham2">Europe considers changing its rules on freedom of panorama</a> (i.e. whether that background building prevents you from publishing your photos; <a href="https://plus.google.com/100003628603413742554/posts/CzYi9T3Vsip">G+</a>)</li><br /><li><a href="https://cosmosmagazine.com/mathematics/maths-mystery-solved-after-40-years">5-connected nonplanar graphs have topological <i>K</i><sub>5</sub> minors</a> (<a href="https://plus.google.com/100003628603413742554/posts/cFfEzrdu8rn">G+</a>)</li><br /><li><a href="http://graphdrawing.de/contest2016/contest.html">This year's Graph Drawing contest</a>, plus a corrected issue with only informing insiders of the GD submission rules (<a href="https://plus.google.com/100003628603413742554/posts/SGe6GKuTyy6">G+</a>)</li><br /><li><a href="https://svpow.com/2016/06/09/we-dont-need-oa-in-our-field-everything-is-on-arxiv-nope/">How much is available on arXiv?</a> (<a href="https://plus.google.com/100003628603413742554/posts/Rq8E3pfpfir">G+</a>)</li><br /><li><a href="http://devlinsangle.blogspot.com/2016/06/infinity-and-intuition.html">Uncountable trees with countable height and branching factor</a> (see also discussion on <a href="https://plus.google.com/100003628603413742554/posts/iY73mNFe8Zc">G+</a>)</li><br /><li><a href="http://research.microsoft.com/en-us/um/people/peres/stable/stable.html">Stable marriage for equal area Voronoi-like cells</a> (<a href="https://plus.google.com/100003628603413742554/posts/XgCbvAcPrs5">G+</a>)</li><br /><li><a href="https://www.youtube.com/watch?v=A-lQfVv62V4">Trailer for <i>The Discrete Charm of Geometry</i></a> (<a href="https://plus.google.com/100003628603413742554/posts/2Lo5JYb6LiY">G+</a>)</li><br /><li><a href="https://en.wikipedia.org/wiki/Widest_path_problem">Widest paths on Wikipedia</a> (<a href="https://plus.google.com/100003628603413742554/posts/Lc87mt1MJpB">G+</a>)</li></ul>urn:lj:livejournal.com:atom1:11011110:330224Robust graph isomorphism and its applications2016-06-02T05:10:21Z2016-06-02T05:10:21ZI think part of the reason graph isomorphism has been such a tricky problem, theoretically, is that in practice it's too easy. Almost all graphs have some small irregularities that can be used as landmarks for identifying all the features of the graph, even when they've been scrambled arbitrarily. Only a small class of highly symmetric graphs pose any actual difficulties, and that's why a deep knowledge of group theory (the study of symmetries) has been so useful in theoretical work on graph isomorphism. It's also why finding counterexamples to crank graph isomorphism algorithms is hard enough that the cranks don't do it themselves and avoid the embarrassment of someone else doing it for them.<br /><br />In many cases, even if you add some noise to a graph, its underlying irregularities will show through, allowing you to recognize it and its individual features. That's the main idea behind my most recent arXiv preprint, "Models and Algorithms for Graph Watermarking" (<a href="https://arxiv.org/abs/1605.09425">arXiv:1605.09425</a>, with Goodrich, Lam, Mamano, Mitzenmacher, and Torres, to appear at <a href="http://manoa.hawaii.edu/isc2016/">ISC 2016</a>).<br /><br />The problem we study is one of watermarking copies of a graph (for instance a large social network) so that if you see one of your copies later you can tell which one it was, by using the graph structure rather than extra information such as vertex labels. To do so, we identify a small number of "landmark" high-degree vertices (generally, the ones with the highest degrees), use the pattern of adjacencies to landmarks to give unique identities to a larger set of (medium-degree) vertices, and flip a small set of randomly selected edges among these vertices. With high probability (when the graph to be watermarked is drawn from a suitable random family) even if an adversary tries to mask the watermark by scrambling the vertices or flipping more edges, the vertex identifications and pattern of flipped edges will be recoverable.<br /><br />Because we're choosing our landmarks in a fairly naive way (by vertex degrees, or as in our implementation with ties broken by neighboring degrees), our algorithms wouldn't work for random regular graphs. But even in such cases, there are other features such as the numbers of triangles they belong to or their distance vectors that often allow some vertices to be distinguished from others. Finding out which features of this type remain robust when noise is added to the graph seems like a promising line of research.urn:lj:livejournal.com:atom1:11011110:329926Linkage2016-06-01T04:07:43Z2016-06-01T04:08:35Z<ul><li><a href="http://voices.norwich.edu/daniel-mcquillan/2016/04/28/a-parity-theorem-for-drawings-of-complete-graphs/">A parity theorem for drawings of complete graphs</a> (<a href="https://plus.google.com/100003628603413742554/posts/DsBQtwX3s7A">G+</a>)</li><br /><li><a href="http://www.nature.com/news/social-sciences-preprint-server-snapped-up-by-publishing-giant-elsevier-1.19932">Social-sciences preprint server SSRN bought by Elsevier</a> (<a href="https://plus.google.com/100003628603413742554/posts/ggHyFHL6Vie">G+</a>)</li><br /><li><a href="https://www.youtube.com/watch?v=1v5Aqo6PaFw">More than one way to draw an ellipse</a> (<a href="https://plus.google.com/100003628603413742554/posts/8ixMAYPig1S">G+</a>)</li><br /><li><a href="https://lamington.wordpress.com/2014/03/04/kleinian-a-tool-for-visualizing-kleinian-groups/">kleinian, a tool for visualizing Kleinian groups</a> (<a href="https://plus.google.com/u/0/100003628603413742554/posts/gjdawsjzDPd">G+</a>)</li><br /><li><a href="http://kottke.org/14/06/cheese-charts">Cheese charts</a>. Really, is it any stranger a thing to call them than pie charts? (<a href="https://plus.google.com/100003628603413742554/posts/2zNSThYNHu9">G+</a>)</li><br /><li><a href="https://en.wikipedia.org/wiki/Rule_184">Rule 184</a>, three particle systems in one (<a href="https://plus.google.com/100003628603413742554/posts/SzGTuGPvgQJ">G+</a>)</li><br /><li><a href="http://www.slate.com/articles/news_and_politics/cover_story/2016/05/the_thriving_russian_black_market_in_dissertations_and_the_crusaders_fighting.html">Russian black-market dissertations</a> (<a href="https://plus.google.com/100003628603413742554/posts/YrqDr8qofwc">G+</a>)</li><br /><li><a href="http://www.thisiscolossal.com/2016/05/salt-labyrinths-motoi-yamamoto/">Motoi Yamamoto's salt labyrinths</a> (<a href="https://plus.google.com/100003628603413742554/posts/AHXGPjTvy12">G+</a>)</li><br /><li><a href="https://en.wikipedia.org/wiki/Directed_acyclic_graph">Do you like DAGs?</a> (<a href="https://plus.google.com/100003628603413742554/posts/JjM9KuGc518">G+</a>)<br /><p align="center"><lj-embed id="64" /></p></li><br /><li><a href="http://arstechnica.com/tech-policy/2016/05/google-wins-trial-against-oracle-as-jury-finds-android-is-fair-use/">Android makes fair use of JAVA APIs</a> (<a href="https://plus.google.com/100003628603413742554/posts/12FuG8dinB8">G+</a>)</li><br /><li><a href="https://plus.google.com/+RoiceNelson/posts/hCdQHA9Kgav">The stretched model of the hyperbolic plane</a>, in which most lines are modeled as half-hyperbolas (<a href="https://plus.google.com/100003628603413742554/posts/cA6x9TM62H2">G+</a>)</li><br /><li><a href="http://www.justinobeirne.com/essay/what-happened-to-google-maps">Google maps now more of a route-planner than a usable map</a> (<a href="https://plus.google.com/100003628603413742554/posts/FczAtotGyCj">G+</a>)</li><br /><li><a href="https://plus.google.com/117663015413546257905/posts/dsPiPXsp2QA">Pushing for all funded research to be free to read</a> (<a href="https://plus.google.com/100003628603413742554/posts/hVwsQ8YPHzf">G+</a>)</li></ul>urn:lj:livejournal.com:atom1:11011110:329516Too many or too few ways to make change2016-05-30T19:09:48Z2016-05-30T19:21:38Z<p><a href="https://en.wikipedia.org/wiki/Ivan_Pervushin">Ivan Pervushin</a> was a 19th-century Russian amateur mathematician, employed as a cleric, who factored two Fermat numbers and discovered the ninth Mersenne prime 2<sup>61</sup> − 1 = 2305843009213693951. But despite these obvious reasons for fame, his Wikipedia article was in such bad shape (e.g. completely unsourced) that it was recently put up for a deletion discussion, which it survived.</p>
<p>While looking for more sources for this article, I ran across what Google numbers as <a href="https://books.google.com/books?id=zBkpLyUTOjoC&pg=PT140">page 140 of <i>Ripley's Believe It or Not!: In Celebration... A special reissue of the original!</i></a> (Simon and Schuster 2011), which seems to describe a different reason for Pervushin's number 2<sup>61</sup> − 1 to be interesting. It writes (in somewhat hyperbolic language) that this is the number of different ways of making change for $5, using U.S. currency ("cents, nickels, dimes, quarters, halves, and dollars"). Not convinced, I wrote a Python program based on a simple dynamic programming algorithm to compute the number of ways of making change for $5 (also allowing a $5 bill to be used itself, but that only changes the answer by one):</p>
<pre>N = [0]*501
N[0] = 1
for c in [500,100,50,25,10,5,1]:
for i in range(501-c):
N[i+c] += N[i]
print N[500]</pre>
<p>The output was 98412 (Tacoma), much smaller than the number in the book. (The problem is also briefly discussed <a href="https://primes.utm.edu/curios/page.php/2305843009213693951.html">here</a> with essentially the same answer, 98411 if the $5 bill is not counted as a solution.) In retrospect, the small size of this number should not have been a surprise. To make change for <i>n</i> cents using a fixed set of <i>c</i> different coins, the number of possible solutions is asymptotically <i>O</i>(<i>n</i><sup><i>c</i> − 1</sup>): each solution can be represented as a <i>c</i>-dimensional vector of how many coins of each value to use, but the coefficient for the pennies is determined by all the other coefficients. And the leading constant in the <i>O</i>-notation is very small (much smaller than 1) because you can't use anywhere near <i>n</i> of the larger denomination coins. So a polynomial bound with a moderate exponent and a small constant shouldn't generate huge numbers.</p>
<p>But then I thought: maybe they have a different definition of what it means for two ways of making change to differ. It couldn't be that the coins of the same value are distinguishable (different years or mint marks, or different state-by-state obverse designs on the quarters) because then the answer wouldn't be well defined: it would depend on how many different coins of each type you happen to have and not merely on the value of the amount to be changed and the fixed system of coin values. But maybe the order in which I hand you the change matters: if I give you four dollar bills and then four quarters, it's a different way of making change than giving you the quarters first and then the dollars? To test this, I made a small modification to my program to calculate the number of distinct sequences of coins and bills (rather than the number of distinct multisets) that would add to the given amount:</p>
<pre>N = [0]*501
N[0] = 1
for i in range(501):
for c in [500,100,50,25,10,5,1]:
if (i-c >= 0):
N[i] += N[i-c]
print N[500]</pre>
<p>But this time the output was much higher than the published amount: It was 1296142333713114950908964121341365887827473814688245139610006400624. Asymptotically the number of solutions is exponential (because what we are computing is just a linear recurrence) but even with a low base, exponentiating 500 produces big numbers. So this raises a puzzle: can anyone come up with a reasonable definition of the problem for which the Ripley answer is correct?</p><a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:329301Pre-announcement for the SODA call for papers2016-05-26T03:11:36Z2016-05-26T03:11:36ZSODA PC chair Phil Klein asked me to publicize this quick announcement because of delays in getting this information online in a more official way: for next January's <a href="http://siam.org/meetings/da17/">SODA (ACM-SIAM Symposium on Discrete Algorithms) in Barcelona</a>, the submission deadlines will be July 6 (short abstract and paper registration) and July 13 (full submission).<br /><br />For now, you can visit <a href='http://cs.brown.edu/~pnk/#soda17'>http://cs.brown.edu/~pnk/#soda17</a> for the basic information (deadlines, submission site, and program committee).urn:lj:livejournal.com:atom1:11011110:329212Series-parallel duality and read-once functions2016-05-20T02:45:06Z2016-05-20T02:45:06ZIf you draw a <a href="https://en.wikipedia.org/wiki/Series-parallel_graph">series-parallel</a> multigraph in the plane, with an extra edge (the dashed edge below) connecting its two terminals, then its <a href="https://en.wikipedia.org/wiki/Dual_graph">planar dual</a> is also a drawing of the same type, turned sideways. The terminals of the dual are the vertices linked by the dual of the dashed edge. Each series composition in the primal turns into a parallel composition in the dual, and vice versa. Often one talks only about series-parallel graphs, not multigraphs, but for this duality the "multi" part is not easily avoidable: the primal or dual (or both) will have multiple edges between the same two vertices.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/SeriesParallelDual.png"></div><br /><br />The same duality relates terminal-to-terminal paths (or, if you prefer, cycles through the dashed edge) and cuts (minimal subsets of edges whose removal separates the two terminals: a path in one graph is a cut in the dual and vice versa. This works regardless of whether one views the graphs as directed or undirected (the simple paths and minimal cuts are the same). Each pair of a primal and dual path cross exactly once. This one-crossing property is true more generally for <a href="https://en.wikipedia.org/wiki/St-planar_graph"><i>st</i>-planar digraphs</a>, but <i>st</i>-planar graphs don't have the path-cut duality: some of their cuts might not be dual paths (see e.g. the cut formed by the two light green edges below left). On the other hand the path-cut duality works for undirected planar graphs (with two specified terminals and the same extra dashed edge trick to get corresponding terminals in the dual) but they don't generally have the one-crossing property (below right).<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/OneCrossPathCutDual.png"></div><br /><br />Now suppose that some edges might be open (you can go along them as part of a path) and others are closed (blocked off). This gives rise to a Boolean function that takes the state of each edge as input (open = true, closed = false) and produces an output that describes whether there exists an open route from one terminal to the other. The function can be expressed as a Boolean formula in which a series composition becomes an and-operation, and a parallel composition becomes an or-operation. The same function for the dual graph is just the negation of the function for the original graph, and can be obtained by negating all the edge variables and swapping ands for ors. I think this duality of Boolean functions is important for CMOS design but I'm not familiar with the details.<br /><br />The Boolean function that you get this way has a special property: it is <a href="https://en.wikipedia.org/wiki/Read-once_function">read-once</a>, meaning that it has an expression with ands and ors in which each variable appears once (the expression that you get from the graph decomposition). After possibly negating some variables, every read-once function comes from a series-parallel graph in this way, the graph obtained by replacing the ands of a read-once expression by series compositions and the ors of a read-once expression by parallel compositions. If, instead, you express the same function in <a href="https://en.wikipedia.org/wiki/Disjunctive_normal_form">disjunctive normal form</a> you get one prime implicant (conjunction) for each terminal-to-terminal path in the graph. And if you express the same function in <a href="https://en.wikipedia.org/wiki/Conjunctive_normal_form">conjunctive normal form</a> you get one clause (disjunction) for each terminal-to-terminal path in the dual.<br /><br />So the fact that the primal and dual paths of a series-parallel graph have a single crossing expresses, in a graph-theoretic form, a characteristic property of read-once functions (proven in at least three papers, some using these ideas): that their DNF implicants and CNF clauses always intersect in exactly one variable.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:328956Fisheye models of Euclidean geometry2016-05-17T23:14:56Z2016-05-18T02:49:46Z<p>You may have heard of the <a href="https://en.wikipedia.org/wiki/Poincar%C3%A9_disk_model">Poincaré disk model</a> of the hyperbolic plane, in which the whole hyperbolic plane is mapped to the interior of a Euclidean disk, with hyperbolic lines being transformed into circular arcs that make a right angle with the disk boundary. Or of the <a href="https://en.wikipedia.org/wiki/Beltrami%E2%80%93Klein_model">Beltrami–Klein model</a>, which also maps the hyperbolic plane to the interior of a disk, but with a different map that keeps the lines straight, so that they correspond to the chords of a circle.</p>
<p align="center"><a href="https://commons.wikimedia.org/wiki/File:Uniform_tiling_73-t1_klein.png"><img border="0" src="http://www.ics.uci.edu/~eppstein/0xDE/BeltramiKlein.png"></a></p>
<p>One use for these models is in information visualization, to provide a fisheye view of a drawing in the hyperbolic plane that provides "focus+context": focus on some specific feature in the drawing, and context of all the rest of the drawing, compressed into the outer parts of the disk. Another is as an aid to mathematical intuition: hyperbolic lines may be hard to visualize and understand, but chords of a circle are much more familiar, and this model shows that (in terms of the combinatorial patterns they can perform, if not their distances and angles) they are really the same thing.</p>
<p>But did you know that you can get an analogous fisheye view of the Euclidean plane, by another pair of models that map Euclidean lines to natural families of curves in a disk?</p>
<p>For any function <i>ƒ</i> that maps the ray [0, ∞) one-to-one to an interval [0, <i>r</i>) one can obtain a fisheye view of the Euclidean plane by mapping polar coordinates (<i>θ</i>, <i>r</i>) to (<i>θ</i>, <i>ƒ</i>(<i>r</i>)). But there are a couple of particularly nice choices that can be obtained geometrically, by a three-dimensional projection. Consider the plane as part of a three-dimensional space, with a sphere tangent to the plane at the point you want to focus on, and with the sphere's radius proportional to the size of the feature you want to focus on. Then there are three natural mappings between the sphere and the plane. For any point <i>p</i> on the upper hemisphere of the sphere, there is a unique ray from the center of the sphere through <i>p</i>, and the point where this ray crosses the plane is the <i>central projection</i> of <i>p</i>. Similarly, there is a unique ray from the pole of the sphere (the point opposite its tangency with the plane) through <i>p</i>, and the point where this ray crosses the plane is the <i>polar projection</i> of <i>p</i>. And there is a unique line perpendicular to the plane through <i>p</i>, and the point where it crosses the plane is the <i>perpendicular projection</i> of <i>p</i>. Here they are in cross-section, giving the central, polar, and perpendicular projections between a line and a circle tangent to the line:</p>
<p align="center"><img border="0" src="http://www.ics.uci.edu/~eppstein/0xDE/ThreeProjections.png"></p>
<p>The central projection maps the open upper hemisphere one-to-one to the plane, taking great circular arcs in the hemisphere to lines in the plane. One way to see this is that the lines and arcs are the intersections of planes through the center of the sphere, with the given plane or with the hemisphere respectively. The polar projection maps the whole sphere (except the pole itself) one-to-one to the plane, and takes circles on the sphere to circles or lines in the plane. When restricted to the upper hemisphere, it maps it one-to-one with a disk in the plane, with twice the radius of the sphere. And of course the perpendicular projection also takes the upper hemisphere one-to-one to a disk (with the same radius as the sphere); we saw in <a href="http://11011110.livejournal.com/327966.html">my previous post</a> that it maps great circular arcs to half-ellipses, concentric with the disk and having the same semimajor radius.</p>
<p>Additionally, the polar projection is conformal (it takes angles to equal angles), so it maps circles perpendicular to the equator of the sphere into circles that are perpendicular to the circle bounding the image disk of the hemisphere. And the perpendicular projection takes circles perpendicular to the equator of the sphere into line segments, a chord of the circle bounding the image disk of the hemisphere. So composing the inverse of the polar projection with the perpendicular projection takes the Poincaré model to the Klein model. And composing the inverse of the perpendicular projection with the polar projection takes the Klein model to the Poincaré model.</p>
<p>The two Euclidean disk models are formed in the same way, by composing two of these transformations. Mapping the plane to the hemisphere by an inverse central projection, and then mapping the hemisphere back to the plane by a perpendicular projection, produces a model of the Euclidean plane inside a disk, with Euclidean lines represented as semi-ellipses within the disk (having the disk radius as their semimajor axis):</p>
<p align="center"><img border="0" src="http://www.ics.uci.edu/~eppstein/0xDE/Semielliptical.png"></p>
<p>Mapping the plane to the hemisphere by an inverse central projection, and then mapping the hemisphere back to the plane by a polar projection, produces a model of the Euclidean plane inside a disk, with Euclidean lines represented as circular arcs that cross the boundary of the disk at diametrally opposite points:</p>
<p align="center"><img border="0" src="http://www.ics.uci.edu/~eppstein/0xDE/EuclideanArcModel.png"></p>
<p>In both models, diameter segments also count as degenerate ellipses or arcs, and model Euclidean lines through the origin. One important difference from the hyperbolic case is that neither of these models is conformal: the angles that curves cross in the models aren't the same as the angles that they form in the Euclidean plane. But they can still be used to provide focus+context views of the whole plane. And it follows from the existence of these models that the combinatorial patterns that can be made by lines in the Euclidean plane, by concentric semiellipses with the same semimajor axis, or by circular arcs through diametrally opposite points of a circle, are all the same.</p><a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:328612Linkage2016-05-16T03:27:42Z2016-05-16T03:27:42Z<ul><li><a href="http://arxiv.org/abs/1604.08657">Andrew Suk solves the happy ending problem</a> (<a href="https://plus.google.com/100003628603413742554/posts/T5wa8wGjqhh">G+</a>)</li><br /><li><a href="http://www.sfu.ca/~shermer/CCCG2016/">CCCG is in Vancouver this year</a>; submission deadline is this Tuesday, May 17 (<a href="https://plus.google.com/100003628603413742554/posts/5vi9GNQ4bh4">G+</a>)</li><br /><li><a href="http://www.itsoc.org/news-events/recent-news/sol-golomb-passes-away">Solomon W. Golomb dies</a> (<a href="https://plus.google.com/100003628603413742554/posts/hJmqzQMQJkQ">G+</a>)</li><br /><li><a href="http://www.thisiscolossal.com/2016/05/a-sculptural-geometric-pop-up-book-by-tauba-auerbach/">A sculptural geometric pop-up book by Tauba Auerbach</a> (<a href="https://plus.google.com/100003628603413742554/posts/FyA5z7VKvrR">G+</a>)</li><br /><li><a href="https://blog.vellumatlanta.com/2016/05/04/apple-stole-my-music-no-seriously/">Apple's cloud music storage can wipe your local copies</a> and replace them with ersatz substitutes (<a href="https://plus.google.com/100003628603413742554/posts/hySWEjyD583">G+</a>)</li><br /><li><a href="http://www.metafilter.com/159295/Changing-the-game-at-Harvard">Harvard penalizes members of gender-exclusive organizations</a> (<a href="https://plus.google.com/100003628603413742554/posts/UJmNTJysy7y">G+</a>)</li><br /><li><a href="http://corner.mimuw.edu.pl/?p=811">Matching reviewers to submissions still needs some human attention</a> (<a href="https://plus.google.com/100003628603413742554/posts/4abKgsQRsvY">G+</a>)</li><br /><li><a href="https://twitter.com/dynarski/status/728776167776489472">Removed from a plane for doing mathematics</a> (<a href="https://plus.google.com/100003628603413742554/posts/RyXBm2CEqUp">G+</a>)</li><br /><li><a href="http://chronicle.com/article/No-I-Am-Not-Pregnant/236395">"No, I am not pregnant"</a>: yet another example of everyday sexism in academia, mostly invisible to men (<a href="https://plus.google.com/100003628603413742554/posts/MasdGs8fJe5">G+</a>)</li><br /><li><a href="http://boingboing.net/2016/05/09/australian-government-issues-r.html">Australian government issues report calling for copyright and patent liberalisation</a> (<a href="https://plus.google.com/100003628603413742554/posts/Tr2Be3ttrDm">G+</a>)</li><br /><li><a href="https://en.wikipedia.org/wiki/Binary_search_algorithm">Binary search</a>, now another Wikipedia good article (<a href="https://plus.google.com/100003628603413742554/posts/1K5RnhuXbBA">G+</a>)</li><br /><li><a href="http://boingboing.net/2016/05/12/researchers-demonstrate-edible.html">Origami robots that can perform surgery on your digestive system after you eat them</a> (<a href="https://plus.google.com/100003628603413742554/posts/9UPp9cgakTb">G+</a>)<br /><p align="center"><lj-embed id="62" /></p></li><br /><li><a href="http://www.slate.com/blogs/bad_astronomy/2016/05/13/eleanor_lutz_created_a_medieval_style_map_of_mars.html">Here Be Robots: A Medieval Map of Mars</a> (<a href="https://plus.google.com/100003628603413742554/posts/bnV6iXcMv9m">G+</a>)</li><br /><li><a href="http://f1000research.com/articles/5-222/v1">New uses for blockchain: ensuring the integrity of medical experiments</a> (<a href="https://plus.google.com/100003628603413742554/posts/cknMhpVyiVZ">G+</a>)</li><br /><li><a href="http://perl.plover.com/yak/Elmo/">An amusing 10-minute talk about NP-completeness and its application to Sesame Street</a> (<a href="http://perl.plover.com/yak/Elmo/">G+</a>)</li></ul>urn:lj:livejournal.com:atom1:11011110:328417Linkage2016-05-01T07:14:18Z2016-05-01T17:49:36Z<ul><li><a href="https://en.wikipedia.org/wiki/Book_embedding">Book embedding on Wikipedia</a> (<a href="https://plus.google.com/100003628603413742554/posts/L6dPgV7aqXd">G+</a>)</li><br /><li><a href="http://www.boredpanda.es/plantas-geometricas">The fractal geometry of plants</a> (<a href="https://plus.google.com/100003628603413742554/posts/gXHW9aki7QZ">G+</a>)</li><br /><li><a href="https://medium.com/@milistjohn/i-am-alex-st-john-s-daughter-and-he-is-wrong-about-women-in-tech-4728545e7c0e#.4szklt59i">A great combination of a success story of an individual woman in tech, a debunking of some nasty misogynist myths, and a collection of helpful resource links for others on the same path</a> (<a href="https://plus.google.com/100003628603413742554/posts/K3Z9Q2cWmRv">G+</a>)</li><br /><li><a href="https://vimeo.com/157620840">Trailer for a documentary on the shifting technology of graphic design from hand layout to computers</a> (<a href="https://plus.google.com/100003628603413742554/posts/SZoAteBLtF7">G+</a>)</li><br /><li><a href="http://www.nature.com/news/peer-review-troubled-from-the-start-1.19763">Complaints about problems with peer review turn out to be far from new</a> (<a href="https://plus.google.com/100003628603413742554/posts/aYq1nTQY2q7">G+</a>)</li><br /><li><a href="https://en.wikipedia.org/wiki/Curve-shortening_flow">Curve-shortening flow on Wikipedia</a> (<a href="https://plus.google.com/100003628603413742554/posts/KeABxYM2mDv">G+</a>)</li><br /><li><a href="http://poynder.blogspot.com/2016/04/the-open-access-interviews-sir-timothy.html">The Open Access Interviews: Timothy Gowers</a> (<a href="https://plus.google.com/100003628603413742554/posts/ADFYb5DzBLk">G+</a>)</li><br /><li><a href="http://techcrunch.com/2016/04/26/it-isnt-just-uber-carnegie-mellons-computer-science-dean-on-its-poaching-problem/">CMU’s computer science dean on its poaching problem</a> (<a href="https://plus.google.com/100003628603413742554/posts/PUmAu2BjjkL">G+</a>)</li><br /><li><a href="http://danielwalsh.tumblr.com/post/2173134224/sudo-make-me-a-pseudosphere">From tilted decks of playing cards to hyperbolic geometry</a> (<a href="https://plus.google.com/100003628603413742554/posts/b2fFCynAc3W">G+</a>)</li><br /><li><a href="https://sbseminar.wordpress.com/2016/04/26/springers-copyright-agreement-is-according-to-springer-compatible-with-posting-your-article-on-the-arxiv-under-the-cc-by-0-license/">Springer journal copyrights are compatible with arXiv preprints</a> (<a href="https://plus.google.com/100003628603413742554/posts/QUKWtURCkRX">G+</a>)</li><br /><li><a href="http://twocubes.tumblr.com/post/89441527133/1-2-5">Pinwheel zoom</a> (<a href="https://plus.google.com/100003628603413742554/posts/Va2yewVq731">G+</a>)</li></ul>urn:lj:livejournal.com:atom1:11011110:327966The shape of the Kresge Auditorium2016-05-01T02:58:54Z2016-05-01T07:52:45ZThe image below is a study of the geometry of MIT's <a href="https://en.wikipedia.org/wiki/Kresge_Auditorium">Kresge Auditorium</a>.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/0xDE/Kresge.png"></div><br /><br />I found <a href="http://mathtourist.blogspot.com/2011/12/geometreks-in-boston.html">an article by Ivars Petersen</a> claiming that this building's floor plan is "close to the geometry of a Reuleaux triangle" and I wanted to determine whether that was true. Other sources such as <a href="https://www.technologyreview.com/s/404017/the-amazing-kresge-turns-50/">a 50-year retrospective published by MIT</a> state that the roof of the building has the shape of an eighth of a sphere (a spherical right equilateral triangle); see <a href="http://fab.cba.mit.edu/classes/863.15/section.Harvard/people/Basangwa/week3.html">this link on making a 3d model of the shape</a> for an amusingly-captioned visualization of its construction.<br /><br />So, the floor plan is the projection of an eighth-sphere; what is this shape? The edges of the roof are great circle arcs in 3d, so they project to ellipses in 2d. By my calculation, the aspect ratio of these ellipses is √3:1. To see this, let the sphere be the unit sphere in 3d, with the three corners of the roof at (1,0,0), (0,1,0), and (0,0,1), and project it onto the plane x+y+z=0. Then the semimajor axis of the ellipse is the radius of the sphere, 1, while the semiminor axis is the distance from the origin of the projected midpoint of an arc. The midpoint is √2(1/2,1/2,0), its projection is √2(1/6,1/6,-1/3), and the distance is 1/√3. So I drew three ellipses with that aspect ratio, rotated by a third of a circle around their common center, and to complete the illusion of being three-dimensional (though really it's just a 2d drawing) I added another circle, with radius equal to the semimajor axis of the ellipses. Those are the grey and black parts of the figure. The shape of the auditorium floor plan is the central triangle outlined by black arcs.<br /><br />The red circles in the drawing are centered at the corners of this triangle, and pass through the other two corners. Their intersection forms a Reuleaux triangle, overlaid on the other curved triangle formed by the projected roof. As you can see, the floor plan is not actually a Reuleaux triangle. It differs from Reuleaux in two significant ways: It has slightly less area, and it has elliptical arcs for sides (with variable curvature, bendier near the corners and flatter near the centers of each side) rather than circular arcs. On the other hand, as Petersen stated, it is very close.<br /><br />So, to state the obvious, not all curvy triangles are alike! Another example of this same phenomenon is given by the rotor of the <a href="https://en.wikipedia.org/wiki/Wankel_engine">Wankel rotary engine</a>: also a curved triangle with sharper angles than the Reuleaux, but with another kind of curve for its sides (the <a href="http://demonstrations.wolfram.com/WankelRotaryEngineEpitrochoidalEnvelopes/">envelope of an epitrochoid</a>). I'm pretty sure this envelope is not an ellipse, even though I don't know how to draw it. And the angles are definitely different. So the Wankel would be yet another kind of curved equilateral triangle that differs from the first two.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:327681Cuckoo filters and their analysis2016-04-21T03:31:39Z2016-04-21T03:41:43ZDo you have a software project in which you need a fast and space-efficient approximate set data structure, like a <a href="https://en.wikipedia.org/wiki/Bloom_filter">Bloom filter</a>? Then probably what you want is actually a <a href="https://github.com/efficient/cuckoofilter">cuckoo filter</a>, a plug-in replacement for Bloom filters that is faster, more space-efficient, and more versatile (because it allows elements to be deleted as well as inserted).<br /><br />Michael Mitzenmacher has described cuckoo filters in <a href="http://mybiasedcoin.blogspot.com/2014/10/cuckoo-filters.html">an earlier blog post</a> (as well as of course in the <a href="http://www.eecs.harvard.edu/~michaelm/postscripts/cuckoo-conext2014.pdf">published paper about them</a>) but the basic idea is to use a <a href="https://en.wikipedia.org/wiki/Cuckoo_hashing">cuckoo hash table</a> cut down in size by storing only a short fingerprint of each key rather than a whole key-value pair. As in a normal cuckoo hash table, keys (or rather their fingerprints) get moved around to make room for other keys, and that leads to a small complication: when you're moving a fingerprint, you don't know which key it came from, so the location to move it to needs to be computable based only on where it is now and on its value. More specifically, the other location for any fingerprint ends up being the xor of its current location with a hash of its value.<br /><br />Although cuckoo filters have been implemented (see first link) and work well in practice, one drawback is that we didn't know whether they also work well in theory. Conversely, an earlier data structure of Pagh, Pagh, and Rao (<a href="http://www.itu.dk/people/pagh/papers/bloom.pdf">SODA 2005</a>) has all the same advantages of cuckoo filters over Bloom filters, but for it, as far as I am aware, there was no implementation, only theory. In contrast, Bloom filters work both actually and theoretically: there is no major gap between theory and practice.<br /><br />So my new paper, "Cuckoo filter: simplification and analysis" (<a href="http://arxiv.org/abs/1604.06067">arXiv:1604.06067</a>, to appear at SWAT) is aimed at closing this gap, although it does not fully do so. What it does is to show that, if you omit the hash of the fingerprint and instead move each fingerprint to the xor of its current location and its value, then cuckoo filtering works well in theory. This simplification causes the filter to be partitioned into many small sub-filters, which operate independently of each other, with each key being assigned randomly to one of them. The main ideas of the paper are that this assigment of keys to sub-filters is very unlikely to be unbalanced and that, within each sub-filter, the data structure behaves just like a cuckoo hash, without any restriction on which pairs of cells the keys can be mapped to. It uses Chernoff bounds to prove the balancing part (as you do), and then just plugs in the existing analysis of cuckoo hashing for the rest.<br /><br />Of course, it would be better to prove that the actual cuckoo filter works well than this simplification, since I don't think the simplification is likely to be a practical improvement. The graph whose edges connect pairs of cells where a single fingerprint can go has a lot of nice structure and symmetry (usually either a Cayley graph or a disjoint union of hypercubes, compared to a disjoint union of cliques for the simplification), suggesting that spectral graph theory might be helpful, but that's not my forté. Also, my analysis only holds for random hash functions, so it would be good to extend it to realistic methods such as <a href="https://en.wikipedia.org/wiki/Tabulation_hashing">tabulation hashing</a>. Tabulation hashing is known to work for cuckoo hashing, but to get my analysis to work it needs to be extended to blocked cuckoo hashing, a variation that allows multiple keys per cell. Ideally, an analysis of the full cuckoo filter algorithm with a realistic hash function would be best.<br /><br />But you don't need to wait for that analysis to happen to go start using these things in your code: they already work now. We just don't completely understand why they work.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:327648Local and inductive properties of graphs2016-04-18T06:23:34Z2016-04-18T06:30:26ZAt LATIN, Allan Borodin brought my attention to a recent paper of his with Yuli Ye, "<a href="http://www.cs.toronto.edu/~bor/Papers/inductive-independence.pdf">Elimination graphs</a>" (TALG 2012), about an idea that combines local properties of graphs with degeneracy.<br /><br />For a graph property P, a graph G is "locally P" if the <a href="https://en.wikipedia.org/wiki/Neighbourhood_(graph_theory)">open neighborhood</a> of each vertex v in G (the subgraph of G induced by the neighbors of v) has property P. For instance, a graph is locally cyclic if every vertex's neighbors induce a cycle; these are the graphs of certain well-behaved surface triangulations (every clique of the graph is a simplex in the triangulation). In the hecatohedron below, every neighborhood is a 5-cycle or a 6-cycle.<br /><br /><div align="center"><img src="https://www.ics.uci.edu/~eppstein/junkyard/hecatohedron.gif"></div><br /><br />Local graph properties work particularly well when P is hereditary (that is, when induced subgraphs of graphs with property P also have property P). For then the property of being locally P is also hereditary. And, in this case, being locally P is a generalization of being P. For instance, the <a href="https://en.wikipedia.org/wiki/Claw-free_graph">claw-free graphs</a> are exactly the locally 2-independent graphs (every neighborhood has independence number at most 2); being 2-independent and being claw-free are both hereditary. The graphs of bounded degree are exactly the locally bounded graphs (every neighborhood has constant size).<br /><br />Analogously, Borodin and Ye define an undirected graph to be "inductively P" if its vertices can be ordered into a sequence so that, for each v, the graph induced by the earlier neighbors of v in the sequence has property P. Again, this works particularly well when P is hereditary, because then being inductively P is also hereditary and generalizes P. Additionally, when P is hereditary, the set of orderings in which the vertices can be removed (before reversal) forms an <a href="https://en.wikipedia.org/wiki/Antimatroid">antimatroid</a>, and a valid vertex ordering can be found by a greedy algorithm that repeatedly removes a vertex from the given graph whose neighbors have property P. This algorithm can remove all vertices if and only if the graph is inductively P, in which case the inductive ordering is the reverse of the removal ordering. Therefore, whenever P is hereditary and can be tested in polynomial time, so can the property of being inductively P.<br /><br />With this definition, a graph has bounded <a href="https://en.wikipedia.org/wiki/Degeneracy_(graph_theory)">degeneracy</a> if and only if it is inductively bounded, with the degeneracy equal to the largest earlier-neighborhood size in an ordering that minimizes this size. A graph is <a href="https://en.wikipedia.org/wiki/Chordal_graph">chordal</a> if and only if it is inductively complete (inductively 1-independent), and the inductive ordering in this case is called an elimination ordering. In this way, Borodin and Ye formalize a common generalization of degeneracy orderings and elimination orderings. However, another standard type of vertex ordering, a <a href="https://en.wikipedia.org/wiki/Perfectly_orderable_graph">perfect ordering</a>, can't be defined via inductive hereditary properties, because the orderings are NP-hard to find.<br /><br />The particular property most closely examined by Borodin and Ye is that of being inductively k-independent, which generalizes chordal graphs (k=1), degenerate graphs (k=degeneracy), claw-free graphs (k=2), planar graphs (k=3, beating the degeneracy bound of 5), unit disk graphs (k=3), and disk graphs more generally (order by radius to get k=5). With this property, for instance, a greedy coloring in the inductive order uses at most k times the optimal number of colors (because any coloring of the earlier neighborhood of any vertex uses at most k times the number of colors that would have been used in an optimal coloring). They also show that the inductively k-independent graphs have (k+1)-approximations to their maximum weighted independent set.<br /><br />Borodin and Ye give a time bound of O(n<sup>k+2</sup>) time for recognizing inductively k-independent graphs, or O(n<sup>k+3</sup>) in linear space, when k is a constant. They list improving these time bounds as their most important open problem. Here, some observations already used for recognizing claw-free graphs may help. For instance, each removed vertex can have only O(sqrt m) neighbors (else its neighborhood would be too sparse to be only k-independent), an observation made in the claw-free case by <a href="https://dx.doi.org/10.1016%2FS0020-0190%2800%2900047-8">Kloks, Kratsch & Müller (2000)</a>. And, when seeking a vertex to remove, only O(sqrt m) of them can even have this many neighbors. This immediately improves the linear-space algorithm to O(nm<sup>(k+2)/2</sup>). It seems likely that the fast matrix multiplication methods used to speed up claw-free graph recognition can also be used here to reduce the exponent (as Borodin and Ye already do for some small values of k), but I haven't worked out the details. On the other hand, one can't do much better, because a graph G has independence number at most k if and only if the graph formed from G by adding k+1 independent new vertices, each adjacent to all the original vertices, is inductively k-independent. Therefore, inductive k-independence is no easier than k-independence, and (under the <a href="https://en.wikipedia.org/wiki/Exponential_time_hypothesis">exponential time hypothesis</a>) it requires an exponent linear in k by results of <a href="https://dx.doi.org/10.1016%2Fj.jcss.2006.04.007">Chen et al. (2006)</a>.<a name='cutid1-end'></a>urn:lj:livejournal.com:atom1:11011110:327399Photos from LATIN2016-04-17T01:38:06Z2016-04-17T04:45:46ZI recently traveled to Ensenada (my first visit to Mexico, despite its closeness) for <a href="http://latin2016.natix.org/">LATIN 2016</a>. This was our view every morning on our arrival to <a href="https://en.wikipedia.org/wiki/Ensenada_Center_for_Scientific_Research_and_Higher_Education">CICESE</a>, the research center hosting the conference, for the conference breakfast.<br /><br /><div align="center"><img src="http://www.ics.uci.edu/~eppstein/pix/ensenada/CICESE2-m.jpg" border="2" style="border-color:black;" /></div><br /><br /><a href="http://www.ics.uci.edu/~eppstein/pix/ensenada/index.html">The rest of my photos</a> include several from the conference excursion and dinner in the <a href="https://en.wikipedia.org/wiki/Guadalupe,_Baja_California">Valle de Guadalupe</a>, Mexico's wine region.urn:lj:livejournal.com:atom1:11011110:326975Linkage2016-04-16T04:42:36Z2016-04-16T04:46:50ZI continue to find it ironic that the best way I can find to index my posts on Google+, a social network platform launched in 2011 by a major search engine company, and to make it possible for me to search for and find the old posts, is to copy them onto a much older social network platform from 1999 that, except for the Russians, has now mostly fallen into disuse.<br /><ul><li><a href="https://treemapart.wordpress.com/">Ben Schneiderman's treemap art</a> (<a href="https://plus.google.com/100003628603413742554/posts/YLaCJUYxcPe">G+</a>)</li><br /><li><a href="http://evahild.com/">Eva Hild, ceramic artist whose works look like minimal surfaces</a> (<a href="https://plus.google.com/100003628603413742554/posts/ePY22PCkXZt">G+</a>)</li><br /><li><a href="https://plus.google.com/+IsaacCalder/posts/7STiWdYBsiF">Symmetric unfolding of the polytope formed by removing one vertex from a 4-cube</a> (<a href="https://plus.google.com/100003628603413742554/posts/3zGDMzBqsMy">G+</a>)</li><br /><li><a href="http://mentalfloss.com/article/65979/origami-pot-changes-size-plants-grow">Auto-resizing origami flowerpot</a> (<a href="https://plus.google.com/100003628603413742554/posts/NEJHwYjHMz6">G+</a>)</li><br /><li><a href="http://motherboard.vice.com/read/wikipedia-zero-facebook-free-basics-angola-pirates-zero-rating">Is it moral to zero-rate Wikipedia in third-world countries?</a> (<a href="https://plus.google.com/100003628603413742554/posts/3j4bAEJebpn">G+</a>)</li><br /><li><a href="http://crookedtimber.org/2016/04/06/38290/">Some tips to encourage more egalitarian contributions in discussion-based classes</a> (<a href="https://plus.google.com/100003628603413742554/posts/BbcDxgVf7kw">G+</a>)</li><br /><li><a href="https://en.wikipedia.org/wiki/Linear_probing">Linear probing, now a good article on Wikipedia</a> (<a href="https://plus.google.com/100003628603413742554/posts/VUSzX6sdXRg">G+</a>)</li><br /><li><a href="http://nautil.us/issue/35/boundaries/why-nature-prefers-hexagons">Hexagonal structures in nature</a> (<a href="https://plus.google.com/100003628603413742554/posts/PAntH5HhQT8">G+</a>)</li><br /><li><a href="http://i.imgur.com/Bbr7s8f.gif">Portrait of the scientist as an infant</a> (shadowplay GIF; <a href="https://plus.google.com/100003628603413742554/posts/DW8HxPbaiRA">G+</a>)</li><br /><li><a href="http://chronicle.com/blogs/ticker/federal-agents-set-up-a-fake-university-to-make-arrests-on-visa-fraud/110079">Fake university exposes visa fraud</a> (<a href="https://plus.google.com/100003628603413742554/posts/cmXdhqjU9HQ">G+</a>; discussion involves the "true" purpose of degree programs)</li><br /><li><a href="https://ilaba.wordpress.com/2016/04/10/arxiv-comments-and-quality-control/">Do open peer-review systems play into sexism?</a> (<a href="https://plus.google.com/100003628603413742554/posts/AmptHg341fE">G+</a>; and if you think they might, be sure to contribute to the <a href="https://cornell.qualtrics.com/SE/?SID=SV_brM4ULfjHGClNJj">arXiv user survey</a> before it closes on April 26)</li><br /><li><a href="https://en.wikipedia.org/wiki/Andrew_M._Gleason">Andrew Gleason</a>, a mathematician who made contributions to Lie group theory, quantum mechanics, Ramsey theory, coding theory, cryptanalysis, and calculus reform, among others (<a href="https://plus.google.com/100003628603413742554/posts/LPCKZSCpSCn">G+</a>)</li><br /><li><a href="http://paleofuture.gizmodo.com/the-untold-story-of-the-teen-hackers-who-transformed-th-1770977586">Teen hackers in the early 1980s</a> (<a href="https://plus.google.com/100003628603413742554/posts/AiHpK7vbUMA">G+</a>)</li><br /><li><a href="http://blogs.ams.org/visualinsight/2016/04/15/barth-sextic/">The degree-6 surface with the maximum possible number of nodes (65 of them)</a>. But <a href="https://en.wikipedia.org/wiki/Nodal_surface">for higher degrees the maximum number is still unknown</a> (<a href="https://plus.google.com/100003628603413742554/posts/VNdJ8uemAHK">G+</a>)</li><br /><li><a href="http://katsumihayakawa.com/paperbonsai.html">3d model of an imagined city, made entirely out of paper by Katsumi Hayakawa</a> (<a href="https://plus.google.com/100003628603413742554/posts/XjFpoXLfxCz">G+</a>)</li><br /></ul>urn:lj:livejournal.com:atom1:11011110:326877Linkage2016-04-01T04:45:48Z2016-04-01T04:45:48Z<ul><li><a href="https://www.youtube.com/watch?v=zsjZ2r9Ygzw">John Oliver on the reopening of the cryptowars</a> (<a href="https://plus.google.com/100003628603413742554/posts/Co1SxTyGhZj">G+</a>)</li><br /><li><a href="http://arstechnica.com/security/2016/03/big-name-sites-hit-by-rash-of-malicious-ads-spreading-crypto-ransomware/">Bad ad-screening hygiene exposes thousands to malware</a> so you should use an ad-blocker to be safe (<a href="https://plus.google.com/100003628603413742554/posts/5ai4KkHqDLJ">G+</a>)</li><br /><li><a href="http://www.nature.com/news/turkish-academics-jailed-for-making-terrorism-propaganda-1.19586">Turkey equates petition-signing to terrorism</a>, jails three professors, hounds others from their positions (<a href="https://plus.google.com/100003628603413742554/posts/1E5G9rax5ij">G+</a>)</li><br /><li><a href="https://www.youtube.com/watch?v=IANBoybVApQ">Printable magnets</a> (<a href="https://plus.google.com/100003628603413742554/posts/FPhhAyrygqQ">G+</a>)</li><br /><li><a href="http://www.seas.upenn.edu/~mlazar/voronoi.html">The distribution of cell shapes in Voronoi diagrams of random points in space</a> (<a href="https://plus.google.com/100003628603413742554/posts/ij2ocwZMx4c">G+</a>)</li><br /><li><a href="http://chronicle.com/article/Does-Engineering-Education/235800">The link between engineering education and terrorism</a> (<a href="https://plus.google.com/100003628603413742554/posts/NUNA7jtsjC7">G+</a>)</li><br /><li><a href="https://gilkalai.wordpress.com/2016/03/23/a-breakthrough-by-maryna-viazovska-lead-to-the-long-awaited-solutions-for-the-densest-packing-problem-in-dimensions-8-and-24">Sphere packing solved in dimensions 8 and 24</a> (<a href="https://plus.google.com/100003628603413742554/posts/Drio8d6qp8m">G+</a>)</li><br /><li><a href="https://en.wikipedia.org/wiki/Split_%28graph_theory%29">Split decomposition of graphs</a> (<a href="https://plus.google.com/100003628603413742554/posts/GkWnDTA6gqY">G+</a>)</li><br /><li><a href="https://news.brown.edu/articles/2016/03/wrinkles">Wrinkles and crumples make graphene better</a> (<a href="https://plus.google.com/100003628603413742554/posts/6JmXKQh84uh">G+</a>)</li><br /><li><a href="https://en.wikipedia.org/wiki/Integer_sorting">Integer sorting</a> (<a href="https://plus.google.com/100003628603413742554/posts/aU3dsKvb7HW">G+</a>)</li><br /><li><a href="http://themathkid.tumblr.com/post/141688266316/from-proofs-without-words-by-roger-nelsen">Visual proof of the arithmetic-geometric mean inequality</a> (<a href="https://plus.google.com/100003628603413742554/posts/Y4uG8rjcPqd">G+</a>)</li><br /><li><a href="http://www.andrewlipson.com/lego.htm">Lego Escher</a> (<a href="https://plus.google.com/100003628603413742554/posts/iAnkw9Dc1Bs">G+</a>)</li><br /><li><a href="http://www.dailylife.com.au/news-and-views/news-features/top-sydney-university-mathematician-nalini-joshi-laments-gender-discrimination-20160329-gnsywt.html">Nalini Joshi on gender discrimination in Australian mathematics</a> (<a href="https://plus.google.com/100003628603413742554/posts/8xBKv27EjzW">G+</a>)</li><br /><li><a href="http://ringsanity.blogspot.com/2016/03/mathematics-of-ringiana-and-ringsanity.html">Addictive abstract puzzle game based on the theory of Thompson groups</a> (<a href="https://plus.google.com/100003628603413742554/posts/8SDU9X5uvmV">G+</a>)</li></ul>