n个不同的物体按固定次序入栈，随时可以出栈，求最后可能的出栈序列的总数。

只想到这个问题等价于把n个push和n个pop操作排列，要求任意前几个操作中push数都不能少于pop数，至于这个排列数怎么求就不知道了。请教了peter大牛后，原来这就是一个Catalan数的应用。

Wikipedia上的Catalan numbers:

In combinatorial mathematics, the **Catalan numbers** form a sequence of natural numbers that occur in various counting problems, often involving recursively defined objects. They are named for the Belgian mathematician Eugène Charles Catalan (1814–1894).

The *n*^{th} Catalan number is given directly in terms of binomial coefficients by

The first Catalan numbers (sequence A000108 in OEIS) for *n* = 0, 1, 2, 3, … are

- 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 24466267020, 91482563640, 343059613650, 1289904147324, 4861946401452, …

## Properties

An alternative expression for *C*_{n} is

This shows that *C*_{n} is a natural number, which is not *a priori* obvious from the first formula given. This expression forms the basis for André's proof of the correctness of the formula (see below under second proof).

The Catalan numbers satisfy the recurrence relation

They also satisfy:

which can be a more efficient way to calculate them.

Asymptotically, the Catalan numbers grow as

in the sense that the quotient of the *n*^{th} Catalan number and the expression on the right tends towards 1 for *n* → ∞. (This can be proved by using Stirling's approximation for *n*!.)

## Applications in combinatorics

There are many counting problems in combinatorics whose solution is given by the Catalan numbers. The book *Enumerative Combinatorics: Volume 2* by combinatorialist Richard P. Stanley contains a set of exercises which describe 66 different interpretations of the Catalan numbers. Following are some examples, with illustrations of the case *C*_{3} = 5.

*C*_{n}is the number of**Dyck words**of length 2*n*. A Dyck word is a string consisting of*n*X's and*n*Y's such that no initial segment of the string has more Y's than X's (see also Dyck language). For example, the following are the Dyck words of length 6:

- Re-interpreting the symbol X as an open parenthesis and Y as a close parenthesis,
*C*_{n}counts the number of expressions containing*n*pairs of parentheses which are correctly matched:

*C*_{n}is the number of different ways*n*+ 1 factors can be completely parenthesized (or the number of ways of associating*n*applications of a binary operator). For*n*= 3 for example, we have the following five different parenthesizations of four factors:

- Successive applications of a binary operator can be represented in terms of a binary tree. It follows that
*C*_{n}is the number of rooted ordered binary trees with*n*+ 1 leaves:

If the leaves are labelled, we have the quadruple factorial numbers.

*C*_{n}is the number of non-isomorphic full binary trees with*n*vertices that have children, usually called internal vertices or branches. (A rooted binary tree is*full*if every vertex has either two children or no children.)

*C*_{n}is the number of**monotonic paths**along the edges of a grid with*n*×*n*square cells, which do not cross the diagonal. A monotonic path is one which starts in the lower left corner, finishes in the upper right corner, and consists entirely of edges pointing rightwards or upwards. Counting such paths is equivalent to counting Dyck words: X stands for "move right" and Y stands for "move up". The following diagrams show the case*n*= 4:

*C*_{n}is the number of different ways a convex polygon with*n*+ 2 sides can be cut into triangles by connecting vertices with straight lines. The following hexagons illustrate the case*n*= 4:

*C*_{n}is the number of stack-sortable permutations of {1, ...,*n*}. A permutation*w*is called**stack-sortable**if*S*(*w*) = (1, ...,*n*), where*S*(*w*) is defined recursively as follows: write*w*=*unv*where*n*is the largest element in*w*and*u*and*v*are shorter sequences, and set*S*(*w*) =*S*(*u*)*S*(*v*)*n*, with*S*being the identity for one-element sequences.

*C*_{n}is the number of noncrossing partitions of the set { 1, ...,*n*}.*A fortiori*,*C*_{n}never exceeds the*n*th Bell number.*C*_{n}is also the number of noncrossing partitions of the set { 1, ..., 2*n*} in which every block is of size 2. The conjunction of these two facts may be used in a proof by mathematical induction that all of the*free*cumulants of degree more than 2 of the Wigner semicircle law are zero. This law is important in free probability theory and the theory of random matrices.

## Proof of the formula

There are several ways of explaining why the formula

solves the combinatorial problems listed above. The first proof below uses a generating function. The second and third proofs are examples of bijective proofs; they involve literally counting a collection of some kind of object to arrive at the correct formula.

### First proof

We start with the observation that several of the combinatorial problems listed above can easily be seen to satisfy the recurrence relation

For example, every Dyck word *w* of length ≥ 2 can be written in a unique way in the form

*w*= X*w*_{1}Y*w*_{2}

with (possibly empty) Dyck words *w*_{1} and *w*_{2}.

The generating function for the Catalan numbers is defined by

As explained in the article titled Cauchy product, the sum on the right side of the above recurrence relation is the coefficient of *x*^{n} in the product

Therefore

Multiplying both sides by *x*, we get

So we have

and hence

The square root term can be expanded as a power series using the identity

which can be proved, for example, by the binomial theorem, (or else directly by considering repeated derivatives of ) together with judicious juggling of factorials. Substituting this into the above expression for *c*(*x*) produces, after further manipulation,

Equating coefficients yields the desired formula for *C*_{n}.

### Second proof

This proof depends on a trick due to D. André, which is now more generally known as the reflection principle (not to be confused with the Schwarz reflection theorem in complex analysis). It is most easily expressed in terms of the "monotonic paths which do not cross the diagonal" problem (see above).

Suppose we are given a monotonic path in an *n* × *n* grid that *does* cross the diagonal. Find the first edge in the path that lies above the diagonal, and *flip* the portion of the path occurring after that edge, along a line parallel to the diagonal. (In terms of Dyck words, we are starting with a sequence of *n* X's and *n* Y's which is *not* a Dyck word, and exchanging all X's with Y's after the first Y that violates the Dyck condition.) The resulting path is a monotonic path in an (*n* − 1) × (*n* + 1) grid. Figure 1 illustrates this procedure; the green portion of the path is the portion being flipped.

Since every monotonic path in the (*n* − 1) × (*n* + 1) grid must cross the diagonal at some point, every such path can be obtained in this fashion in precisely one way. The number of these paths is equal to

- .

Therefore, to calculate the number of monotonic *n* × *n* paths which do *not* cross the diagonal, we need to subtract this from the *total* number of monotonic *n* × *n* paths, so we finally obtain

which is the *n*th Catalan number *C*_{n}.

### Third proof

The following bijective proof, while being more involved than the previous one, provides a more natural explanation for the term *n* + 1 appearing in the denominator of the formula for *C*_{n}.

Suppose we are given a monotonic path, which may happen to cross the diagonal. The **exceedance** of the path is defined to be the number of pairs of edges which lie *above* the diagonal. For example, in Figure 2, the edges lying above the diagonal are marked in red, so the exceedance of the path is 5.

Now, if we are given a monotonic path whose exceedance is not zero, then we may apply the following algorithm to construct a new path whose exceedance is one less than the one we started with.

- Starting from the bottom left, follow the path until it first travels above the diagonal.
- Continue to follow the path until it
*touches*the diagonal again. Denote by*X*the first such edge that is reached. - Swap the portion of the path occurring before
*X*with the portion occurring after*X*.

The following example should make this clearer. In Figure 3, the black circle indicates the point where the path first crosses the diagonal. The black edge is *X*, and we swap the red portion with the green portion to make a new path, shown in the second diagram.

Notice that the exceedance has dropped from three to two. In fact, the algorithm will cause the exceedance to decrease by one, for any path that we feed it.

It is also not difficult to see that this process is *reversible*: given any path *P* whose exceedance is less than *n*, there is exactly one path which yields *P* when the algorithm is applied to it.

This implies that the number of paths of exceedance *n* is equal to the number of paths of exceedance *n* − 1, which is equal to the number of paths of exceedance *n* − 2, and so on, down to zero. In other words, we have split up the set of *all* monotonic paths into *n* + 1 equally sized classes, corresponding to the possible exceedances between 0 and *n*. Since there are

monotonic paths, we obtain the desired formula

Figure 4 illustrates the situation for *n* = 3. Each of the 20 possible monotonic paths appears somewhere in the table. The first column shows all paths of exceedance three, which lie entirely above the diagonal. The columns to the right show the result of successive applications of the algorithm, with the exceedance decreasing one unit at a time. Since there are five rows, *C*_{3} = 5.

## Hankel matrix

The *n*×*n* Hankel matrix whose (*i*, *j*) entry is the Catalan number *C*_{i+j} has determinant 1, regardless of the value of *n*. For example, for *n* = 4 we have

Note that if the entries are ``shifted", namely the Catalan numbers *C*_{i+j+1}, the determinant is still 1, regardless of the size of *n*. For example, for *n* = 4 we have

- .

The Catalan numbers is the unique sequence with this property.

## Quadruple factorial

The quadruple factorial is given by , or . This is the solution to labelled variants of the above combinatorics problems. It is entirely distinct from the multifactorials.

## History

The Catalan sequence was first described in the 18th century by Leonhard Euler, who was interested in the number of different ways of dividing a polygon into triangles. The sequence is named after Eugène Charles Catalan, who discovered the connection to parenthesized expressions. The counting trick for Dyck words was found by D. André in 1887.