Decomposition Algorithm