Approaches to integer programming