Enumerative combinatorics is the science of counting. It sits at the intersection of algebra and combinatorics, employing techniques from both. At the most basic level it is all about generating functions, binomial coefficients, and recurrence relations; at the most advanced level is it about symmetric functions, posets, and polytopes, with application to problems in physics, probability, and other areas of mathematics (representation theory, analytic number theory, etc.) Computer scientists will be familiar with enumerative combinatorics, or enumeration, as half of the typical discrete mathematics course, and, perhaps also familiar with it as the first section of Chapter 5 of Knuth’s The Art of Computer Programming, Vol III. And, at the most obvious level, enumeration is important for the analysis of algorithms: if you can count how many times various portions of the program execute, you can begin to consider complexity. However, this view just scratches the surface. Counting intersects many of the areas of computer science, for example, linear probing in hashing is related to parking functions in enumeration, sorting is related to increasing subsequences, DNA strings in bioinformatics are related to string counting problems, and anonymization in security is related to permutations and shuffles. In many ways—and for many reasons—enumerative combinatorics is a topic that should be better known in computer science, and the textbook by Richard Stanley is a wonderful place to start.
Unfortunately, ACM prohibits us from displaying non-influential references for this paper.
To see the full reference list, please visit http://dl.acm.org/citation.cfm?id=2527757.