1. Bell Numbers

1.1. Introduction

Bell numbers is the number of ways to partition a set. Given a set of elements, find number of ways of partitioning it.

Examples:

# Example 1
Input:  n = 2
Output: Number of ways = 2
Explanation: Let the set be {1, 2}
            { {1}, {2} } 
            { {1, 2} }

# Example 2
Input:  n = 3
Output: Number of ways = 5
Explanation: Let the set be {1, 2, 3}
             { {1}, {2}, {3} }
             { {1}, {2, 3} }
             { {2}, {1, 3} }
             { {3}, {1, 2} }
             { {1, 2, 3} }.

The solution to above questions is Bell Number.

1.2. What is a Bell Number?

Let be total number of partitions of elements into sets. The value of n’th Bell Number is sum of for k = 1 to n. Value of can be defined recursively as

1.3. How does above recursive formula work?

When we add a (n+1)’th element to k partitions, there are two possibilities. 1) It is added as a single element set to existing partitions, i.e, S(n, k-1) 2) It is added to all sets of every partition, i.e., k*S(n, k) is called Stirling numbers of the second kind First few Bell numbers are 1, 1, 2, 5, 15, 52, 203, ….

A Simple Method to compute n’th Bell Number is to one by one compute for = 1 to and return sum of all computed values. Refer this for computation . Below is Dynamic Programming based implementation of the above recursive code using the Stirling number-

1.4. Bell Triangle

A Better Method is to use Bell Triangle. Below is a sample Bell Triangle for first few Bell Numbers.

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

The triangle is constructed using below formula.

// If this is first column of current row 'i'
If j == 0
   // Then copy last entry of previous row
   // Note that i'th row has i entries
   Bell(i, j) = Bell(i-1, i-1) 

// If this is not first column of current row
Else 
   // Then this element is sum of previous element 
   // in current row and the element just above the
   // previous element
   Bell(i, j) = Bell(i-1, j-1) + Bell(i, j-1)

1.4.1. Interpretation

Then Bell(n, k) counts the number of partitions of the set {1, 2, …, n + 1} in which the element k + 1 is the largest element that can be alone in its set. For example, Bell(3, 2) is 3, it is count of number of partitions of {1, 2, 3, 4} in which 3 is the largest singleton element. There are three such partitions:

    {1}, {2, 4}, {3}
    {1, 4}, {2}, {3}
    {1, 2, 4}, {3}.

Below is Dynamic Programming based implementation of above recursive formula.

results matching ""

    No results matching ""