A greedy algorithm for some classes of integer programs

We establish a necessary and sufficient condition for a greedy algorithm to find an optimal solution in the case of integer programs with separable concave objective functions. This extends some well-known results for spanning trees, matroids, and greedoids. As a corollary we obtain one new generalization of matroids and integer polymatroids preserving the optimality of greedy solutions.