Blog Stats

Notes on math, coding, and other stuff

Tag: bijection

If you were asked to find the sum of the first four cubes, you would easily be able to do so:

But here you may notice something interesting:

It turns out that this holds for the sum of the first cubes for any — an identity. This identity can be written also as:

A second way of expressing the same identity simplifies the right side and expresses it as a combination:

A proof by bijection

This identity can be proven combinatorially by noticing that is the number of ways to choose 2 elements with repetition from the set {1..n} — the following is a proof by Benjamin and Orrison.

In this proof, we prove the third form of the identity

by constructing one set of size and constructing another set of size , then constructing a bijection between the two sets.

Let be the set of ordered 4-pairs such that — that is, the fourth integer of the pair is greater or equal to each of the other three. If we fix , the number of possibilities for the variables is . As ranges from 1 to n, the total number of elements in is equal to .

Also, since is the number of ways to choose 2 elements with repetition from the set {1..n}, there are pairs of integers satisfying . So let be the set of pairs of such pairs where and . The number of elements in is then .

We further partition the sets as follows: let be the subset of where and let be the subset of where . Similarly, let be the subset of where and let be the subset of where . We can construct a bijection between and by constructing two bijections:

The following is trivially a bijection from to — the case where :

The equivalent bijection from to — the case where :

We can confirm that the two operations we defined are indeed bijections. This proves the identity.

About a year ago or so, I created a math problem and submitted it to CsTutoringCenter. Titled Stepping Stones, my problem statement went like this:

In a certain river, there are a bunch of stepping stones arranged from one side to the other. A very athletic person can cross the river by jumping on these stepping stones, one at a time.

A stepping stone is big enough for only one person, and the gap between two stepping stones is small enough that it is possible to jump between two adjacent stepping stones.

You are an army commander trying to get a group of soldiers across this river (using these stepping stones). Initially your n soldiers are placed on the first n stepping stones. Your task is to get all of them onto the last n stepping stones.

For example, here are the five possible ways to get a group of two soldiers across a river with five stepping stones:

Let C(k,n) be the number of ways of which n soldiers can cross a river with k stepping stones. In the example, C(5,2) = 5.

Find C(50,12) mod 987654321.

Of course, small values of may be bruteforced by a computer. But is well out of reach of brute force, and substantial mathematics is needed. Or for the lazy, it is possible to find small values by brute force, then look the sequence up on OEIS to find the formula.

Bijection to a matrix representation

We find that any instance of the problem can be represented, or bijected to a special matrix, one where each row and column is increasing.

Let us number the soldiers in the following fashion. Let the rightmost soldier, that is, the soldier first to move, be labelled 1. The soldier behind him is labelled 2, and so on, until the last soldier to move is labelled . Since the order of soldiers cannot change, each soldier moves exactly times.

Consider a very simple case, with 4 stones and 2 soldiers. One possible way is the first soldier moving twice, followed by the second moving twice.

This move sequence can be represented by . The other sequence, and the only other sequence is .

Firstly a sequence like is invalid because in a valid sequence, each soldier has to move the same number of times. Another invalid case is something like , since obviously 2 cannot move the first turn. But how can you tell whether is valid or not?

It isn’t very easy to tell in sequence form. Instead we represent the sequence as a matrix form.

Let’s try some examples first, The sequence in matrix form is:

The other sequence, , is:

Try a more complex example, :

To create the matrix, first have a counter and initialize it to 1; when the first soldier moves, place the counter in the first cell that’s unfilled in the first row, and increment the counter. Now if the second soldier moves, we place the counter in the second row (first unfilled cell), and increment it again, and so on. By the time we’re through all of the soldier moves, the matrix should be nice and rectangular.

Perhaps a different explanation is more intuitive. If (where is the matrix, means row 3, column 2), that means on move 7, soldier number 3 makes his move number 2.

From this interpretation, several important facts surface. The rows must be increasing, obviously, since if the row is not increasing, say 7 comes before 5, move 7 happened before move 5, which can’t be!

Less obviously, the column has to be increasing. Suppose that in some matrix, , and the cell directly underneath, . In that case soldier 3 made his move 7 before soldier 2 made his move 7. This results in soldier 3 ahead of soldier 2 (or at least on the same stone)!

So with stones and soldiers, the matrix should have rows and columns. The cells contain the numbers , while each row and each column is increasing. Our job is to enumerate these matrices, since such a matrix forms a 1-to-1 correspondence to a valid move sequence.

Enumerating matrices with the hook length formula

AYoung tableau is an interesting combinatorial object, based on the Ferrers diagram. From a Ferrers diagram of size , a Young tableau is one where every number from is filled in it and all rows and all columns are increasing:

From any cell of a Young tableau, a hook is formed by extending all the way down, and all the way to the right:

The hook length of a cell is the length of its hook (including itself). In the above picture, the hook length is 5. Each cell in the tableau has a hook and a hook length.

The number of valid Young tableaux with a given shape and with cells is given by the hook length formula:

A special case of the hook length formula can be used to enumerate rectangular Young tableaux. For instance, we have a 3*4 Young tableau. If we fill each cell with its hook length we get:

The count would then be

Or alternatively,

Simplifying:

This can be generalized to a formula. If we have rows and columns:

For , we have rows and columns, thus by substitution we arrive at our formula:

This can be used to compute , trivial to implement in Haskell or any other language.