add algorithm collinear assignment