Advanced generating function techniques include singularity analysis (extracting asymptotics from singularities), bivariate generating functions (for counting with parameters), transfer matrices (for restricted structures), and Lagrange inversion (for implicit sequences). These tools convert counting into analytic problems, yielding precise asymptotics for combinatorial sequences.
You already know that a generating function encodes a sequence a₀, a₁, a₂, ... as the power series A(x) = Σ aₙ xⁿ, and that algebraic manipulations on A(x) correspond to combinatorial operations on the sequence. Advanced techniques extend this further: instead of just finding closed forms for aₙ, you now extract *asymptotic behavior* — how aₙ grows as n → ∞ — by analyzing A(x) as a complex function.
The central tool is singularity analysis. When A(x) is a rational function or has an algebraic singularity at some radius r from the origin, the dominant singularity closest to the origin controls the exponential growth rate of aₙ. A simple pole at x = r contributes a term of the form C · (1/r)ⁿ to aₙ. A branch-point singularity of the form (1 - x/r)^α contributes terms involving nᵅ⁻¹ · (1/r)ⁿ. The transfer theorems of Flajolet and Sedgewick make this precise: reading off the singularity type immediately gives the asymptotic form of the coefficients. This converts a combinatorial question — "how fast does the count grow?" — into a complex-analytic one — "where does the generating function fail to be analytic?"
Bivariate generating functions F(x, y) = Σ aₙ,ₖ xⁿ yᵏ track two parameters simultaneously. Setting y = 1 recovers the ordinary generating function. Taking ∂/∂y|_{y=1} extracts the expected value of k for objects of size n. This is how you prove that a random binary tree of size n has expected height Θ(√n) — encode height as a parameter, differentiate, and extract asymptotics. Transfer matrices handle sequences with local constraints: if a valid string of length n is built by concatenating valid transitions, the count of valid strings is the (i,j) entry of a matrix power Mⁿ, and its growth rate is controlled by the largest eigenvalue.
Lagrange inversion solves the hardest type of problem: sequences defined *implicitly* by T(x) = x · φ(T(x)). Rather than solving algebraically (often impossible), the formula extracts coefficients directly: [xⁿ] T(x) = (1/n)[uⁿ⁻¹] φ(u)ⁿ. This is how the Catalan numbers C_n = (1/n+1)C(2n,n) are derived: the generating function for Catalan numbers satisfies C(x) = 1 + x·C(x)², and Lagrange inversion extracts the explicit formula without solving the quadratic. Together, these four techniques transform advanced combinatorics from a bag of clever tricks into a systematic analytic toolkit.