# 1. Combinatorial Structures and Ordinary Generating Functions

## I.1 Symbolic enumeration methods

## I.2 Admissible constructions and specificationsInteger compositions

## I.3 Integer compositions and partitions

## I.4 Words and regular languages

## I.5 Tree structures

## I.6 Additional constructions

## I.7 Perspective

#### Selected Exercises

## Note I.23

*Alice, Bob, and coding bounds.*Alice wants to communicate $n$ bits of information to Bob over a channel (a wire, an optic fibre) that transmits

`0,1`-bits but is such that any occurrence of

`11`terminates the transmission. Thus, she can only send on the channel an encoded version of her message (where the code is of some length $\ell\ge n$) that does not contain the pattern

`11`.

Here is a first coding scheme: given the message $m=m_1m_2\cdots m_n$,
where $m_j\in\{{\sf 0,1}\}$, apply the substitution:
$\sf 0\mapsto \sf 00$ and $\sf 1\mapsto\sf 10$; terminate the transmission by
sending $\sf 11$. This scheme has $\ell=2n+O(1)$, and we say that its *rate* is 2.
Can one design codes with better rates?
with rates arbitrarily close to 1, asymptotically?

Let $\cal C$ be the class of allowed code words. For words of length $n$, a code of length $L\equiv L(n)$ is achievable only if there exists a one-to-one mapping from $\{0,1\}^n$ into $\bigcup_{j=0}^L \cal C_j$, i.e., $2^n\le \sum_{j=0}^L C_j$. Find the OGF of $\cal C$ and use it to show that \[ L(n) \ge \lambda n +O(1), \qquad \lambda=\frac{1}{\log_2 \varphi}\doteq 1.440420, \quad \varphi=\frac{1+\sqrt{5}}{2}.\] Thus no code can achieve a rate better than $1.44$; i.e., a loss of at least 44% is unavoidable.

## Note I.43

*Fast determination of the Cayley-Polya numbers.*Use logarithmic differentiation of $H(z)$ to provide for the $H_n$ a recurrence that can serve as the basis for computing $H_n$ in time polynomial in $n$. (Note: a similar technique applies to the partition numbers $P_n$.)

#### Selected Experiments

## Program I.1

Determine the choice of four coins that maximizes the number of ways to change a dollar.

## Program I.2

Write a program that estimates the rate of growth of the Cayley numbers ($H_n/H_{n-1}$). See Note I.43.