0xDE
03 September 2009 @ 08:53 pm
The list of SODA acceptances is out. Sadly, again, it doesn't include abstracts, but they're promised to come later. Now with abstracts! I have one paper there; I'll post more about it when I've had a chance to respond to the feedback from the reviews and prepare a preprint version.

It's hard to tell just from the titles, but I have the vague impression that there's rather less computational geometry than I'm used to seeing at past SODAs.

One very important change (perhaps a consequence of going to electronic proceedings?): “your conference paper can be up to twenty (20) pages”!!

ETA: See also 3d pancakes, algorithmic games, kd-PhD, 3d pancakes again, biased coin, polylogblog, geomblog, motocicleta
 
 
0xDE
02 September 2009 @ 04:09 pm
This morning I took part in the (successful) thesis defense of Nodari Sitchinava, a student of Mike Goodrich here.

Read more... )

Nodari will be leaving Irvine in about a week, to start a postdoc with Lars Arge in the MADALGO group in Aarhus, Denmark. Congratulations, Nodari!
 
 
0xDE
24 August 2009 @ 12:27 pm
I just returned from WADS, formerly the Workshop on Algorithms and Data Structures but newly renamed to be the Algorithms and Data Structures Symposium, in Banff, Canada. At the conference dinner, we learned that the organizers originally intended this to be a true workshop, with 30 or so participants, but it was never that small, and the new name recognizes that. Banff National Park is beautiful; I arrived two days early with my wife Diana so that we could do some sight-seeing, and I'll be posting some photos of that part later when I catch up on my postprocessing.

Read more... )
 
 
0xDE
16 May 2009 @ 05:57 pm
It's a pretty obvious observation that the graphic conventions we use when illustrating mathematical objects can have a lot to do with how we think of them. The standard way the computer science textbooks draw trees is like a biological tree, but upside-down, with the root at the top and the leaves at the bottom:



When we view a tree in this way, the traversal order given by breadth-first search forms a geometric pattern that scans left-to-right across the vertices in a single level of the tree (conventionally, these vertices lie along a horizontal line), then the next level, and so on, much as one reads English text left-to-right and line-by-line. And this level-by-level ordering can be useful for conveying the idea that breadth-first search sorts vertices by their distances from the root.

But the breadth-first search algorithm itself, as it is usually described, does not progress level-by-level.Read more... )
 
 
0xDE
27 April 2009 @ 02:17 pm
The next of my WADS acceptances to have a preprint ready is On the Approximability of Geometric and Geographic Generalization and the Min-Max Bin Covering Problem (with Kevin Du, Mike Goodrich, and George Lueker, arXiv:0904.3756). It's about methods for allowing databases to be used for research without violating the privacy of the people whose records they contain, and by writing it we unwittingly stepped into a big political battle of a type that we are unused to seeing in algorithms research.

Read more... )

ETA 5/12: This one went down to the wire. Just before the proceedings submission deadline we realized that it's possible to improve the 5/2 approximation ratio for bin covering to 2+ε, matching the inapproximability lower bound of 2 for the binary case. The unary case is the one that's important for k-anonymization, though, and there's still a gap there between the upper bound and the 4/3 lower bound. The arXiv version has been updated with the new results, which will also be included in the WADS proceedings version.
 
 
0xDE
14 April 2009 @ 08:48 am

Longtime algorithms researchers will remember that in the 1980s, parallel algorithms used to be a hot topic, but that it faded as Moore's law caused new single-processor machines to be faster (and much easier to program) than parallel computers made with many older and cheaper processors. Nowadays, Moore's law itself has faded (or, more accurately, stopped leading to single-processor speedups) and parallel computing has been making a comeback, especially as many researchers have realized that we already have powerful and highly parallel processors cheaply available to us in the graphics coprocessors of our home video game systems. Researchers such as (at UCI) graduating student Nodari Sitchinava and his advisor Mike Goodrich have been hard at work on developing analysis models and algorithms for these new systems and figuring out how many of the old PRAM-algorithm techniques can be carried over to them. But there has also been a lot of work in this area in non-theory communities that could benefit from our theoretical expertise. In part, this is one of the themes of the Workshop on Massive Data Algorithmics to be held in conjunction with SoCG in Aarhus this summer, and older parallel algorithms conferences such as SPAA have also adapted to these new directions.

Uzi Vishkin has asked me to publicize another workshop, even more focused on this subject, to be held a little closer to (my) home. The Workshop on Theory and Many-Cores is to be held in College Park, Maryland, on May 29, 2009, the day before STOC and in the same state. There's an abstract submission deadline of April 27 (less than two weeks away). As the conference announcement states,

The sudden shift from single-processor computer systems to many-processor parallel computing systems requires reinventing much of Computer Science (CS): how to actually build and program the new parallel systems. Indeed, the programs of many mainstream computer science conferences, such as ASPLOS, DAC, ISCA, PLDI and POPL are heavily populated with papers on parallel computing and in particular on many-core computing. In contrast, the recent programs of flagship theory conferences, such as FOCS, SODA and STOC, hardly have any such paper. This low level of activity should be a concern to the theory community, for it is not clear, for example, what validity the theory of algorithms will have if the main model of computation supported by the vendors is allowed to evolve away from any studied by the theory. The low level of current activity in the theory community is not compatible with past involvement of theorists in parallel computing, and to their representation in the technical discourse. For example, 19 out of 38 participants in a December 1988 NSF-IBM Workshop on Opportunities and Constraints of Parallel Computing in IBM Almaden had theory roots. The lack of involvement of theorists should also concern vendors that build many-core computers: theorists are often the instructors of courses on algorithms and data-structures, and without their cooperation it will be difficult to introduce parallelism into the curriculum.

The main objective of the workshop will be to explore opportunities for theoretical computer science research and education in the emerging era of many-core computing, and develop understanding of the role that theory should play in it.

There's still time to get something together for this, so get working! And I'm sure Uzi would appreciate workshop participants who want to learn more about this subject but are not ready to speak on it themselves, as well.
 
 
0xDE
03 January 2009 @ 09:54 pm
I'm now in New York for ALENEX (today) and SODA (the following three days). The most interesting juxtaposition at ALENEX, for me, was the pair of back-to-back talks by Martin Nöllenburg and Siamak Tazari.

Tanglegram drawings and planar graph Steiner trees )
 
 
0xDE
21 August 2008 @ 11:55 am
I've updated my library of Python algorithm implementations to include another module: SortedSet. It maintains a set of items (like a Python set data type), but adds a method to report all the items in the set in sorted order.

The obvious ways of doing this are to sort everything at reporting time or to maintain the items in a balanced binary tree data structure. My solution combines the simplicity of the first solution with the asymptotic speed of the second: store, along with the set itself, the sorted output from the last report and smaller lists of changed items. A new report request can be handled by sorting the smaller lists and merging them with the previous output, in constant time for each previously listed item and logarithmic time for each changed item.
 
 
0xDE
22 March 2008 @ 09:00 am
Here's a cute algorithmic puzzler that occurred to me yesterday, though perhaps it was long-known to others.

Let S be a set (or multiset) of positive integers. Describe an efficient algorithm for finding the smallest positive integer x such that x is not the sum of some subset of S.

Using dynamic programming to test each possible subset sum isn't good enough; I want something strongly polynomial. Or, to be really concrete about it, let's suppose that you have a computer in which W-bit integers can be added, subtracted, and compared in constant time, that additionally you have a constant time operation to compute floor(log2(k)) for any W-bit value k, and that all the members of S are W-bit numbers and that W ≥ log2|S|; I want an algorithm that runs in time O(|S|+W) in this model.

If you get stuck, the characterization of practical numbers might give you a hint.
 
 
0xDE
10 January 2008 @ 12:04 am

Today is Don Knuth's 70th birthday. Happy birthday, Don!

I could say a lot about my own relation with Knuth's work: as a freshman in college in 1981 I was hired to help typeset a book in TeX (The Handbook of Artificial Intelligence), my first published paper was on graph drawing using TeX, and my thesis work concerned dynamic programs closely related to the line-breaking algorithms in TeX. But I thought it might be appropriate, instead, to do something a little more technical.

Knuth was the first to use the phrase “analysis of algorithms,” at the 1970 ICM in Nice. He popularized and extended O-notation (previously used in functional analysis) as an essential tool for algorithm analysis. And, his Art of Computer Programming set the standards for the field and is still well worth reading today. So, it seems a little presumptuous for me to analyze one of Knuth's own algorithms. I set out only with the goal of understanding one of his many papers, “Dancing Links,” which concerns a backtracking algorithm for an NP-complete problem, a subject of some interest to me. But, as so often, the problem took over and wouldn't let me go until I'd found something to add to it. Several times I thought I'd reached the end of the analysis, only to discover another refinement that kept it going deeper, until eventually this grew from a blog post to something resembling the outline of a full paper. I imagine Knuth is familiar with this process, on a much larger scale, as his Art of Computer Programming also grew far larger than he originally envisioned. Regardless, here is my analysis.

Read more... )
 
 
0xDE
09 October 2007 @ 04:57 pm

So you're all familiar with Avrim Blum's Motwani and Raghavan's (?) slick analysis of quicksort in CLRS, avoiding probabilistic recurrences and easily getting the correct constant in the leading term, right? (If not, I review it below.) What CLRS doesn't tell you is that the same analysis works almost as well for quickselect.

Read more... )

 
 
0xDE
09 September 2007 @ 12:57 pm
Via Muthu: the list of accepted papers at the 2008 ACM-SIAM Symposium on Discrete Algorithms (SODA) is now available.

I'm happy to report that my own submission, the one on recognizing partial cubes, is among the accepts. So I'll see you all in San Francisco!
 
 
0xDE
21 June 2007 @ 10:14 am
Michael Mitzenmacher has another interesting post up, on programming in theory courses. I don't see a way to comment directly on his blog, so I'll put some of my own thoughts on the subject here:

Read more... )
 
 
0xDE
18 June 2007 @ 07:26 pm
Find the max gap among n integers, in linear time and space.

The problem is stated in an ambiguous way that could be interpreted as asking for the largest difference between successive elements of the unsorted sequence, but regardless of what the original questioner wanted, what I want is the largest gap in the sequence formed by sorting the input.

spoilers )
 
 
0xDE
11 June 2007 @ 04:39 pm
Harvard theoretical computer scientist Michael Mitzenmacher has a new blog.

Michael writes "The main thrust that I hope will differentiate this blog from others is that it will focus on the convergence of algorithms (or, more generally, "CS theory"), information theory, and networks." But I think one could stop at the word "focus" and already differentiate it from some of the rest of ours...

More TCS bloggers can only be a good thing, I think, both for increased communication within the field and for outreach to the rest of the world. And though there hasn't yet been enough time for much technical content to appear, he does already have an interesting post on suggested reading lists for algorithmic networking.
 
 
0xDE
30 April 2007 @ 06:42 pm
 
 
0xDE
07 April 2007 @ 08:53 am
The list of accepted papers for ICALP 2007 just became available.
 
 
0xDE
19 March 2007 @ 02:04 pm
Algorithm Education in Python. Pai Chou, a faculty member in a different department here at UCI, clarifies why Python is such a good match for the pseudocode commonly used in algorithms classes. An old paper from 2002, but still quite valid, I think. (Via.)
 
 
0xDE
18 March 2007 @ 06:38 pm

Some years before Dijkstra attributed it to Hamming, Gingerich considered an interesting variant of Hamming's problem: list, in order, only those regular numbers in the interval [60k,60k+1).

The motivation comes from the study of Babylonian mathematics. In the sexagesimal system the Babylonians used, which we still use a modified version of for times, latitudes and longitudes, and angles, the power of the initial base-60 digit was not specified. That is, if I tell you that a duration of time is 1:12, it's not obvious from that notation whether I mean one hour and twelve minutes (that is, 72 minutes), or one minute and twelve seconds (that is, 72 seconds); both are written the same way. So, in a Babylonian table of the reciprocals of regular numbers, one would not have separate entries for 72, 72×60, and 72×60×60; all three would just be written as 1:12. Grouping equivalent numbers in this way allowed the Babylonians a considerable space savings in their arithmetic tables: there are O(k2) different k-digit sexagesimal representations of regular numbers to be listed, while there are Θ(k3) actual regular numbers that can be represented with k digits. The sorted order of the regular numbers in Gingerich's range is the order in which the Babylonians would have listed these numbers.

Gingerich listed these numbers out of order, and then sorted them. Can we do better, and list them in sorted order in a constant number of arithmetic operations per output value? Yes!

Read more... )
 
 
0xDE
08 January 2007 @ 10:47 pm
The early morning Monday sessions of SODA had, for me, the most collisions between talks I wanted to see in all three sessions.

More SODA talks )