Using decomposition in integer programming

When implicit enumeration algorithms are used for solving integer programs, a form of primal decomposition can be used to reduce the number of solutions which must be implicitly examined. If the problem has the proper structure, then under the proper decomposition a different enumeration tree can be defined for which the number of solutions which must be implicitly examined increases with a power of the number of variables rather then exponentially. The proper structure for this kind of decomposition is that the southwest and northeast corners of the constraint matrix be zero or equivalently that the matrix be decomposable except for linking columns. Many real traveling salesmen, plant location, production scheduling, and covering problems have this structure.