Suppose there are three categories of people. Type X, Type Y, Type Z. In each type, there are two objects of subtype Type 'a' and type 'b'. For example. X: a1 , a2 , b1 , b2 Y: a3 , a4 , b3 , b4 Z: a5 , a6 , b5 , b6 Each object of type 'a' should be assigned with an object of type 'b'. But it is ****desirable** not necessary** to assign a type 'a' with type 'b' from different classes (X, Y, Z). In this example, the optimal solution would be: a1 with b5 , a2 with b6 , a3 with b1 , a4 with b2 , a5 with b3 , a6 with b4 . Non -optimal solution would be : a1 with b5 , a2 with b6 , a5 with b1 , a6 with b2 , a3 with b3 , a4 with b4 . (Non -optimal because a3 and a4 are assigned with b's of same type Y) If we generalize, there can be n- number of Types (X,Y,Z, .....and so on) with different number of a's and b's in each (but total number of a's = total number of b's). How to find an optimal solution?