Combinatorial optimization constitutes one specific class of problems. The word combinatorial is derived from the word combinatorics, which is a branch of mathematics concerned with the study of arrangement and selection of discrete objects. In combinatorics one is usually concerned with finding answers to questions such as "does a particular arrangement exist?" or "how many arrangements of some set of discrete objects exist?" Finding the number of orderings of some set of discrete objects usualty consists of deriving a mathematical formula or relation which, when evaluated for the parameters of the problem leads to the answer. On the other hand, combinatorial optimization is not concerned with whether a particular arrangement or ordering exists but rather, concerned with the determination of an optimal arrangement or order [Law76]. In most general terms, a problem is a question whose answer is a function of several parameters. Usually the problem is stated by articulating the properties that must be satisfied by its solution. A particular instance of the problem is obtained by fixing the values of all its parameters. Let's take a simple example.