ABSTRACT

Given that generating functions are an important tool in our analysis, how do we

derive them in the first place? We have seen a few examples in Chapter 2, mostly

from recurrences, which often correspond to the way in which data structures are

built, or algorithms progress and modify their state. In this chapter, we describe other

approaches based on tightening the bond between generating functions and combi-

natorial entities, to use a general term. In order to enumerate a set, we first construct

it by a recursive definition, using well-defined intuitive operations on primitive com-

ponents. We are then led directly to suitable generating functions, avoiding the need

for recurrences. We show a mechanical way based on symbolic calculus, which can

often guide us to such a construction, when intuition alone is an insufficient guide.

The basic concepts in this calculus are the combinatorial class and the combinato-

rial operation. A combinatorial class is essentially a set consisting of combinatorial

objects, such as points, lines, graphs and symbols, alone or in any combination. A

combinatorial operation is used to create complex classes from simple ones, such as

letters to strings or words, or nodes and edges to graphs, or words to books.