# Lecture 5 – Multinomial Theorem, Pigeonhole Principle, & Complexity

You may want to download the lecture slides that were used for these videos (PDF).

## 1. Multinomial Coefficients

How many ways can you rearrange the letters of a string if some of the letters are duplicated? The answer is given by multinomial coefficients.  (4:25)

## 2. The Binomial & Multinomial Theorems

Here we introduce the Binomial and Multinomial Theorems and see how they are used. The Binomial Theorem gives us as an expansion of (x+y)n.  The Multinomial Theorem gives us an expansion when the base has more than two terms, like in (x1+x2+x3)n. (8:07)

## 3. The Pigeon Hole Principle

This short video introduces the Pigeon Hole Principle, as well as a generalization of it. (2:29)

## 4. Paul Erdős & the Erdős-Szekeres Theorem

In this video, Professor Trotter explains the Erdős number, and tells some stories about this famous mathematician. The Erdős-Szekeres Theorem is introduced, and a proof of this theorem is provided that uses the Pigeon Hole Principle. (11:33)

## 5. Easy Application

Here is an easy application of the Pigeon Hole Principle. (3:13)

## 6. Complexity, Problem Size, & Running Time

Within the framework of a mathematics course, we introduce the idea of a problem size and the concept of running time. (4:37)

## 7. A Small Catalog of Increasing Functions

In this video, we consider a list of increasing functions, and ask how quickly they tend to infinity. (3:44)

## 8. Big-Oh Notation & Little-Oh Notation

It is often difficult to say, precisely, what the running times for an algorithm might be. So, we bound them or estimate them. This video introduces big-oh and little-oh notation, and provides a few examples that use these concepts. (7:47)

## 9. Four Motivating Problems

In this video we start to develop a framework for understanding the difficulty of a problem. Suppose, for example, we have a list of n distinct positive integers. We ask a set of questions about this list that leads us back to the fair division problem. (12:08)

## 10. Sorting & Stirling’s Approximation

This video introduces the sorting problem, and gives an example of a poor sorting algorithm.  Then, a theorem is discussed which gives a lower bound on the length of time an arbitrary sorting algorithm can take in the worst-case scenario.  Ultimately, the lower bound is simplified by using Stirling’s approximation. (10:33)

## 11. An Informal Discussion of Merge Sort

We want to determine an unknown linear order on {1,2,3, … , n}, and we want to do this by dividing the problem into different subproblems. We describe, informally, how we can divide and merge the subproblems, yielding a recurrence relation for the runtime of merge sort.  Then, we discuss what the running time of merge sort would be. (8:26)