Bell number

From Wikipedia, the free encyclopedia

In combinatorial mathematics, the nth Bell number, named in honor of Eric Temple Bell, is the number of partitions of a set with n members, or equivalently, the number of equivalence relations on it. Starting with B0 = B1 = 1, the first few Bell numbers are (sequence A000110 in OEIS):

1, 1, 2, 5, 15, 52, 203, 877, 4140, 21147, 115975

(See also breakdown by number of subsets/equivalence classes.)

Contents

[edit] Partitions of a set

In general, Bn is the number of partitions of a set of size n. A partition of a set S is defined as a set of nonempty, pairwise disjoint subsets of S whose union is S. For example, B3 = 5 because the 3-element set {abc} can be partitioned in 5 distinct ways:

{ {a}, {b}, {c} }
{ {a}, {b, c} }
{ {b}, {a, c} }
{ {c}, {a, b} }
{ {a, b, c} }

B0 is 1 because there is exactly one partition of the empty set. Every member of the empty set is a nonempty set (that is vacuously true), and their union is the empty set. Therefore, the empty set is the only partition of itself.

Note that, as suggested by the set notation above, we consider neither the order of the partitions nor the order of elements within each partition. This means the following partitionings are all considered identical:

{ {b}, {a, c} }
{ {a, c}, {b} }
{ {b}, {c, a} }
{ {c, a}, {b} }

[edit] Another view of Bell numbers

Bell numbers can also be viewed as the number of distinct possible ways of putting n distinguishable balls into one or more indistinguishable boxes. For example, let us suppose n is 3. We have three balls, which we will label a, b, and c, and three boxes. If the boxes can not be distinguished from each other, there are five ways of putting the balls in the boxes:

  • Each ball goes in to its own box.
  • All three balls go in to one box. Since the boxes are anonymous, this is only considered one combination.
  • a goes in to one box; b and c go in to another box.
  • b goes in to one box; a and c go in to another box.
  • c goes in to one box; a and b go in to another box.

[edit] Properties of Bell numbers

The Bell numbers satisfy this recursion formula:

B_{n+1}=\sum_{k=0}^{n}{{n \choose k}B_k}.

They also satisfy "Dobinski's formula":

B_n=\frac{1}{e}\sum_{k=0}^\infty \frac{k^n}{k!}
= the nth moment of a Poisson distribution with expected value 1.

And they satisfy "Touchard's congruence": If p is any prime number then

B_{p+n}\equiv B_n+B_{n+1}\ (\operatorname{mod}\ p).

or, generalizing

B_{p^m+n}\equiv mB_n+B_{n+1}\ (\operatorname{mod}\ p).

Each Bell number is a sum of Stirling numbers of the second kind

B_n=\sum_{k=0}^n S(n,k).

The Stirling number S(n, k) is the number of ways to partition a set of cardinality n into exactly k nonempty subsets.

The nth Bell number is also the sum of the coefficients in the polynomial that expresses the nth moment of any probability distribution as a function of the first n cumulants; this way of enumerating partitions is not as coarse as that given by the Stirling numbers.

The exponential generating function of the Bell numbers is

\sum_{n=0}^\infty \frac{B_n}{n!} x^n = e^{e^x-1}.

[edit] Asymptotic limit

Several asymptotic formulae for the Bell numbers are known. One such is

B_n  \sim \frac{1}{{\sqrt n }}\left[ {\lambda \left( n \right)} \right]^{n + \frac{1}{2}} e^{\lambda \left( n \right) - n - 1}.

Here \scriptstyle \lambda(n) = e^{W(n)}=n/W(n), where W is the Lambert W function.

(Lovász, 1993)

[edit] Triangle scheme for calculating Bell numbers

The Bell numbers can easily be calculated by creating the so-called Bell triangle, also called Aitken's array or the Peirce triangle:

  1. Start with the number one. Put this on a row by itself.
  2. Start a new row with the rightmost element from the previous row as the leftmost number
  3. Determine the numbers not on the left column by taking the sum of the number to the left and the number above the number to the left (the number diagonally up and left of the number we are calculating)
  4. Repeat step three until there is a new row with one more number than the previous row
  5. The number on the left hand side of a given row is the Bell number for that row.

For example, the first row is made by placing one by itself. The next (second) row is made by taking the rightmost number from the previous row (1), and placing it on a new row. We now have a structure like this:

 1
 1  ''x''

The value x here is determined by adding the number to the left of x (one) and the number above the number to the left of x (also one).

 1
 1  2
 y

The value y is determined by copying over the number from the right of the previous row. Since the number on the right hand side of the previous row has a value of 2, y is given a value of two.

 1
 1  2
 2  3  ''x''

Again, since x is not the leftmost element of a given row, its value is determined by taking the sum of the number to x's left (three) and the number above the number to x's left (two). The sum is five.

Here is the first five rows of this triangle:

 1
 1  2
 2  3  5
 5  7 10 15
15 20 27 37 52

The fifth row is calculated thus:

  • Take 15 from the previous row
  • 15 + 5 = 20
  • 20 + 7 = 27
  • 27 + 10 = 37
  • 37 + 15 = 52

The following is example code in the Ruby programming language that prints out all the Bell numbers from the 1st to the 300th inclusive (the limits can be adjusted)

#!/usr/bin/env ruby
 
def print_bell_numbers(start, finish)
    # Initialize the Bell triangle as a two-dimensional array
    triangle = Array[Array[1]]
 
    # Make sure "start" is less than "finish", and both numbers are at least 1
    (finish, start = start, finish) if finish < start
    start = 1 if start < 1
    finish = 1 if finish < 1
 
    1.upto(finish-1) do |row_num|
 
        # Set the first element of the current row to be the last element
        # of the previous row
        current_row = [triangle[row_num-1][row_num-1]]
 
        # Calculate the rest of the elements in this row, then add the row
        # to the Bell triangle
        1.upto(row_num) do |col_num|
            sum = triangle[row_num-1][col_num-1] + current_row[col_num-1]
            current_row.push(sum)
        end
 
        triangle[row_num] = current_row
 
    end
 
    # Print out the Bell numbers
    start.upto(finish) do |num|
        puts triangle[num-1][0]
    end
end
 
# Adjust the limits here
print_bell_numbers(1, 300)

The number in the nth row and kth column is the number of partitions of {1, ..., n} such that n is not together in one class with any of the elements k, k + 1, ..., n − 1. For example, there are 7 partitions of {1, ..., 4} such that 4 is not together in one class with either of the elements 2, 3, and there are 10 partitions of {1, ..., 4} such that 4 is not together in one class with element 3. The difference is due to 3 partitions of {1, ..., 4} such that 4 is together in one class with element 2, but not with element 3. This corresponds to the fact that there are 3 partitions of {1, ..., 3} such that 3 is not together in one class with element 2: for counting partitions two elements which are always in one class can be treated as just one element. The 3 appears in the previous row of the table.

[edit] Prime Bell numbers

The first few Bell numbers that are primes are:

2, 5, 877, 27644437, 35742549198872617291353508656626642567, 359334085968622831041960188598043661065388726959079837

corresponding to the indices 2, 3, 7, 13, 42 and 55 (sequence A051130 in OEIS)

The next prime is B2841, which is approximately 9.30740105 × 106538. [1] As of 2006, it is the largest known prime Bell number. Phil Carmody showed it was a probable prime in 2002. After 17 months of computation with Marcel Martin's ECPP program Primo, Ignacio Larrosa Cañestro proved it to be prime in 2004. He ruled out any other possible primes below B6000, later extended to B30447 by Eric Weisstein.

[edit] References

  • Gian-Carlo Rota, 1964, "The Number of Partitions of a Set," American Mathematical Monthly 71(5): 498—504.
  • Lovász, L. Combinatorial Problems and Exercises, 2nd ed. Amsterdam, Netherlands: North-Holland, 1993.

[edit] See also

[edit] External links