Combinatorial optimization is a branch of discrete mathematics. The problems looked at revolve around finding an optimal object from a set of objects, or finding an ordering of the objects in the set that is optimal according to some criteria. Examples are finding the Minimum spanning tree in a graph or the Travelling Salesman Problem. Many of the problems looked at have also been solved using linear programming. 