Decomposition methods for quadratic zero-one programming