Antoine Jouglet
email: antoine.jouglet@hds.utc.fr

Jacques Carlier
email: jacques.carlier@hds.utc.fr

Dominance rules in combinatorial optimization problems

Keywords: combinatorial optimization, dominance rules, constraints, modeling

The aim of this paper is to study the concept of a "dominance rule" in the context of combinatorial optimization. A dominance rule is established in order to reduce the solution space of a problem by adding new constraints to it, either in a procedure that aims to reduce the domains of variables, or directly in building interesting solutions. Dominance rules have been extensively used over the last fifty years. Surprisingly, to our knowledge, no detailed description of them can be found in the literature other than a few short formal descriptions in the context of enumerative methods. We are therefore proposing an investigation into what dominance rules are. We first provide a definition of a dominance rule with its different nuances. Next, we analyze how dominance rules are generally formulated and what are the consequences of such formulations. Finally, we enumerate the common characteristics of dominance rules encountered in the literature and in the usual process of solving combinatorial optimization problems.

Introduction

In combinatorial optimization, the term "dominance rule" seems to have been introduced in the late fifties. We can find it in early papers by Manne [START_REF] Manne | Programming of economic lot sizes[END_REF], Levitan [START_REF] Levitan | A note on Professor Manne's "dominance" theorem[END_REF], Ignall and Schrage [START_REF] Ignall | Applications of the branch-and-bound technique to some flow-shop scheduling problems[END_REF], Fox [START_REF] Fox | Discrete optimization via marginal analysis[END_REF], Proshan and Bray [START_REF] Proshan | Optimum redundancy under multiple constraints[END_REF], Weingartner and Ness [START_REF] Weingartner | Methods for the solution of the multidimensional 0/1 knapsack problem[END_REF] and Elmagharaby [START_REF] Elmaghraby | The one machine sequencing problem with delay costs[END_REF], although the term seems have taken several years to be established. Later, it was intensively used by Baker [START_REF] Baker | Introduction to sequencing and scheduling[END_REF], Kohler and Steiglitz [START_REF] Kohler | Characterization and theoretical comparison of branch-and-bound algorithms for permutation problems[END_REF] and Ibaraki [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF]. Dominance rules had, however, been used much earlier, but under different names. Johnson [START_REF] Johnson | Optimal two-and three-stage production schedules with setup times included[END_REF] talked about a "decision rule" for the two-machine flowshop scheduling problem, since such a rule allowed him to construct an optimal solution directly. In the same way, Smith [START_REF] Smith | Various optimizers for single stage production[END_REF] spoke of a "sufficient condition of optimality" for the one-machine total weighted completion time scheduling problem. In the context of integer linear programming, Gomory [START_REF] Gomory | Outline of an algorithm for integer solutions to linear programs[END_REF] used the term "additional constraints" that are needed to be satisfied by integer solutions. Swift [START_REF] Swift | Isomorph rejection in exhaustive search techniques[END_REF] talked about a "rejection" rule for eliminating solutions isomorphic to other solutions. Giffler and Thompson [START_REF] Giffler | Algorithms for solving production scheduling problems[END_REF] spoke of a characterized subset of solutions containing a subset of optimal solutions. These different terms are often contextual but express the same general idea: eliminating uninteresting solutions, or selecting interesting solutions. The common theme is that one subset of solutions is rejected while the complementary subset is retained.

The interest of dominance rules is obvious, since their raison d'être is to reduce, either statically or dynamically, the search space of combinatorial problems which are in the process of being solved. Among these, scheduling problems have been the subject of much investigation because of their applications in industry. "Scheduling is the allocation of resources over time to perform a collection of tasks" [START_REF] Baker | Introduction to sequencing and scheduling[END_REF]. Since the early works of Johnson [START_REF] Johnson | Optimal two-and three-stage production schedules with setup times included[END_REF] and Smith [START_REF] Smith | Various optimizers for single stage production[END_REF] in the mid fifties, scheduling has remained at the interface between theory and practice [START_REF] Baker | Principles of sequencing and scheduling[END_REF]. It has given rise to a number of techniques for problem solving including dominance rules which have played an important role. Therefore, throughout this paper, we shall be looking at a single-machine scheduling problem which is sufficiently general to illustrate all the concepts.

In this paper we try to provide a kind of bird's eye view of dominance rules in combinatorial optimization problems. In Section 2 we define combinatorial optimization problems and provide definitions which will be useful later on. In Section 3 we define the concept of a dominance rule. In Section 4 we analyze how dominance rules are generally formulated and what the consequences of such formulations are. Next, in Section 5 we provide a list of the main characteristics of dominance rules encountered in the literature. In Section 6 we show how the concept of dominance is extended to dominance rules themselves, or to problems or instances of problems. Finally, the main uses of dominance rules for solving combinatorial optimization problems are discussed in Section 7.

Combinatorial optimization problems

In this section, we begin by defining what we mean by combinatorial optimization problems and we provide definitions which will be useful later on. In particular, the notions of a problem, of an instance and a solution of a problem, and of the procedures of modeling and solving a problem are discussed.

Notion of problem: formalizing a question to solve

A problem can be defined as "a question to solve". A large number of ("real" or "invented") problems are from the domain of the computation and can be handled by using computers. For Garey and Johnson [START_REF] Garey | Computers and intractability: a guide to the theory of NP-completeness[END_REF], a problem is a general question to be answered. It usually possesses several parameters. A problem is described by giving: (1) a general description of all its parameters, and (2) a statement of what properties a solution of the problem is required to satisfy. A problem can be viewed simply as a "basic model", i.e. a simple formalization, the mere comprehension of which suggests a set of solutions.

For example, scheduling problems are described by giving the characteristics of the available resources and of the set of tasks. In particular, a single-machine problem is a problem in which only one machine which can process only one task at a time (the machine is said to be disjunctive and the tasks to be subject to disjunctive constraints) is available from time 0. Each task i has a processing time p i and a release date r i before which the job cannot be processed by the machine. The preemption of tasks is not allowed, meaning that a task i has to be processed by the machine without interruption over p i units of time from its starting time to its completion time. A question to be answered is, for example, whether a starting time can be assigned to each task such that the sum of the task completion times i C i is minimal. Following the 3-field notation widely used in the literature (see for example [START_REF] Brucker | Scheduling Algorithms[END_REF]), this problem will be denoted as 1|r i | C i throughout this paper. Moreover, the special case of this problem in which all release dates are equal to 0 is denoted as 1|| C i . Suppose we associate a due date d i with each task i , i.e. a date before which we would like i to be completed. Suppose also that if a task i is completed after d i it is considered to be late and that its tardiness T i is defined as being equal to the difference between its completion time C i and its due date d i , i.e. T i = max(0,C i -d i ). Another question is whether a starting time can be assigned to each task such that the sum of the task tardiness is minimal. This problem is denoted as 1|r i | T i , or 1|| T i when all release dates are equal to 0. Finally, suppose that we associate a deadline di with each task i , i.e. a date before which task i has to be strictly completed. Another question might then be whether a starting time can be assigned to each task such that each task starts after its release date and is completed before its deadline. This problem is denoted as 1|r i , di |_.

Instances of a problem

An instance of a problem is obtained by specifying particular values for all the problem parameters [START_REF] Garey | Computers and intractability: a guide to the theory of NP-completeness[END_REF]. This description of a problem instance can be viewed as a finite string of symbols chosen from a finite input alphabet according to one particular fixed encoding scheme. The input length for an instance of the problem is then defined as the number of symbols in the description of the instance and it is used as the formal measure of instance size. In the case of a single-machine problem, an instance is specified by its number of tasks and by the values given to the processing times, the release dates, the due dates and the deadlines of the tasks if they are required by the studied version of the problem. The instance size is generally expressed as a multiple of the number of tasks, since the maximum number of symbols used for each value is generally considered to be fixed.

Note that since an instance has to be decoded, we can complete Garey and Johnson's [START_REF] Garey | Computers and intractability: a guide to the theory of NP-completeness[END_REF] definition of a problem by adding a polynomial time decoding program of fixed size which is used to read an instance (a string of symbols) of variable size and to store its parameters in the memory of the computer.

Modeling a problem

As we have said above, once a problem has been put into words, it can be viewed as a basic model formalizing the question to solve. Now it has to be modeled. Modeling means elaborating a more sophisticated model than the basic model. This new model will allow us to solve the problem. Modeling consists of identifying the objective function, the variables, and the constraints for the given problem. This step is not neutral as regards to the eventual solution. Formulating a "good" model is of crucial importance in solving the problem" [START_REF] Nemhauser | Integer and Combinatorial Optimization[END_REF]. Indeed, it is at this stage that the decision variables of the problem are defined. Most of the time several possibilities occur and the variables are often chosen simply from the definition of a solution. For example, the variables of the single-machine scheduling problem described above could be the completion times of the tasks. However, an obvious choice may not be a good one when it comes to solving the problem. Thus, the choice between the different ways of modeling has a dramatic impact on the effectiveness of its solution. In particular, the structural properties of the solutions to be obtained have to be expressed via the model. For example, another model of the single-machine scheduling problem could be obtained by considering only one variable corresponding to the sequence in which tasks have to be processed. While this model necessitates a procedure to compute the starting times of the tasks associated with a sequence, the disjunctive constraints of the machine are easier to express in this model and lead to more effective solving methods in a lot of cases.

3

Once modeled, a combinatorial optimization problem can then be formally defined by:

• a n-tuple of variables (x 1 , x 2 , . . . , x n ), the value of each variable x i belonging to a set D(x i ) that we call the domain of x i ;

• a set C of constraints on variables;

• an objective function Φ : D(x 1 ) × D(x 2 ) × . . . × D(x n ) → R which associates a value with each assignment.

Hence, a combinatorial optimization problem can be viewed as a second, more sophisticated model. In contrast to the "basic model", which only formalized the question to solve, the aim of this new model is to solve the problem. Given a set of parameters of the basic model obtained by decoding an instance of the problem, a second polynomial program (in addition to the first program that was used to read and decode an instance), must exist to obtain a new set of parameters for the combinatorial optimization problem. Note that a large range of flexibility is permitted in both the constraint set and the objective function. Note also that while several problems are multi-criteria, this paper only considers problems with one objective function at a time.

The constraints of a combinatorial problem express which combinations of variable values are allowed. A constraint can be formally defined as follows:

Definition 1. A constraint c belonging to C is a function c : Ω = D(x 1 ) × D(x 2 ) × . . . × D(x n ) → P (Ω)
, which associates with Ω a subset c(Ω) ⊆ Ω containing the assignments satisfying the constraint. For the constraint c, an element belonging to subset c(Ω) is said to be feasible, and an element belonging to its complementary with respect to Ω, i.e. Ω-c(Ω), is said to be unfeasible.

The conjunction of all subsets defined by the constraints belonging to C defines the set of feasible solutions of the problem.

From now on, the modeling of the "real" problem to be solved is assumed to be fully specified, and the term "problem" refers to a combinatorial search problem as defined above. Thus, the single-machine problem with n tasks can be formally defined by the n-tuple (C 1 , . . . ,C n ) of completion times with D(C i ) = {r i +p i , r i +p i +1, . . . , di }. Note that in a problem with no deadline, the di values can be assumed to be a large number. A disjunctive constraint between two tasks i and j , i j , is expressed as follows: (C i ≥ C j + p i ) ∨ (C j ≥ C i + p j ). The entire set of disjunctive constraints between the different pairs of tasks has to be satisfied. Note that constraints such as C i ≥ r i + p i and C i ≤ di are also taken into account in the model through the domain variables. The objective function to consider in the example is the total completion time i C i or the total tardiness i T i .

Solving a problem

Once modeled, solving a combinatorial optimization problem consists of assigning a value to each variable. An assignment has to be chosen from the Cartesian product Ω = D(x 1 ) × D(x 2 ) × . . . × D(x n ) in such a way that:

1. the set C of constraints is satisfied; 2. the objective function Φ is minimized.

Note that maximizing an objective function is equivalent to minimizing the negative of the same function. Thus, the above formulation also covers maximization problems.

In this paper we consider that a combinatorial optimization problem is any problem as defined above which is decidable, i.e. for which there exists an algorithm solving the problem in a finite number of steps. Of course, if Ω is finite, the problem is decidable.

Optimization problems and search problems

We wish to obtain an assignment satisfying all the constraints and which minimizes the objective function Φ. Thus, an objective function is required to associate with each assignment a value from among a given set of values referred as D(Φ). We extend the objective function to subsets of solutions: for any subset S of solutions, we define Φ(S) = min z∈S Φ(z). The existence of an assignment satisfying the constraints of the problem is usually not part of the question. Often, the number of such possible assignments is irrelevant and all that matters is to find an optimal assignment. That is why we generally speak of "optimization problems".

The objective function can be bi-valued by 0 and ∞, corresponding to feasible (the constraints are eventually satisfied) and unfeasible (at least one constraint is not satisfied), and it may not be known in advance whether or not feasible solutions exist. Therefore, the problem consists in finding a feasible solution or concluding that no such solution exists. Here the problem is referred as a "search problem" rather than an "optimization problem". For example, searching for a feasible solution to a single-machine scheduling problem when deadlines are considered (i.e. 1|r i , di |_) is such a problem. Nevertheless, the formulation of a combinatorial optimization problem, as described above, is often used to cover this case as well as the multi-valued or continuous valued objective function [START_REF] Golomb | Backtrack programming[END_REF][START_REF] Agin | Optimum seeking with branch and bound[END_REF]. For the sake of simplicity we will adopt this convenient generalization in this paper, while noting that optimization problems are also often solved using successive solutions of search problems.

Nevertheless, in the following pages we shall sometimes need to distinguish between what derives from "feasibility" considerations (in relation to a set of constraints C ), and what derives from "optimality" considerations (in relation to the optimization of an objective function Φ).

Constraints

The constraints of a combinatorial search problem can be implicit or explicit (see for example [START_REF] Agin | Optimum seeking with branch and bound[END_REF]). Implicit constraints are those which are implicitly satisfied by the way the problem has been modeled. Thus they do not require an explicit procedure to ensure that they are satisfied, because they are satisfied according to the variables and the domain of the variables which have been chosen to model the problem. Explicit constraints, on the other hand, will require procedures for recognition as part of the method employed to solve the problem. For example, in the model described above for the single-machine scheduling problem, constraints C i ≥ r i + p i and C i ≤ di are implicit because they are always satisfied through the domain D(C i ) = {r i + p i , r i + p i + 1, . . . , di } of variable C i . However, disjunctive constraints are explicit and require a procedure to determine whether they are satisfied or not.

A constraint can be intentional, i.e. expressed using a relation between variables which has to be satisfied, e.g. an arithmetic formula. It can also be extensional, i.e. expressed as a set of tuples of values that satisfy the constraint.

In constraint programming the global constraints are usually identified (see for example [START_REF]Handbook of Constraint Programming[END_REF]). A global constraint corresponds to a conjunction of constraints which it is more convenient to consider together, since this leads to greater clarity, in addition to improving the problem solving process. For example, in the single-machine scheduling problem, it is common to consider the set of disjunctive constraints as only one global constraint. Indeed, some efficient techniques known as Edge-Finding (see for example [START_REF] Baptiste | Constraint-based scheduling, applying constraint programming to scheduling problems[END_REF]) allow more deductions to be obtained when considering disjunctive constraints all together.

In light of our remarks made in the previous section, we might also wish to identify the set of "feasibility constraints" of the problem, which correspond to the constraints cited above, as well as the "optimality constraint", which stipulates the requirement for solutions having the best value with respect to the objective function.

The notion of a solution

We wish to determine a vector from the Cartesian product space Ω = D(x 1 ) × D(x 2 ) × . . . × D(x n ) which minimizes the objective function Φ and satisfies all the constraints.

A partial assignment where a value is specified for some variables of the problem while the values of others remain unknown is called a partial solution.

Every complete assignment belonging to Ω is called a solution, since it satisfies the implicit constraints [START_REF] Agin | Optimum seeking with branch and bound[END_REF]. It does not matter whether or not the assignment is feasible with respect to the explicit constraints. It is usual to designate Ω as being the solution space. In the following we shall refer to the power set of Ω, i.e. the set of all subsets of Ω, as P (Ω).

For a lot of problems we may consider that each selection space D(x i ) contains only a finite number of distinguishable (numeric or symbolic) values. In this case we refer to the cardinal of domain D(x i ) as |D(x i )|. The solution space is then also finite and its cardinal is equal to |Ω| = n i=1 |D(x i )|. A solution respecting all the constraints belonging to C is called a feasible solution. From now on we shall refer to the subset of feasible solutions belonging to Ω as F (Ω). Any solution which does not belong to F (Ω) is said to be unfeasible or unacceptable. The subset of unfeasible solutions is referred as U (Ω). Note that F (Ω) and U (Ω) are disjoint and complementary according to Ω, i.e. F (Ω)∩U (Ω) = and F (Ω)∪U (Ω) = Ω. We also define F (S) as the subset of feasible solutions of any subset S of Ω, i.e. if S ⊆ Ω then F (S) = F (Ω) ∩ S. U (S) is defined as the set of unfeasible solutions of the set S.

Any feasible solution z * ∈ F (Ω) such that ∀z ∈ F (Ω), Φ(z * ) ≤ Φ(z) is called an optimal solution. The value Φ(z * ) = Φ(F (Ω)) is called the optimal value of the problem. In the following, the subset of optimal solutions of Ω is referred to as O(Ω). We have O(Ω) ⊆ F (Ω). In the case of a "decision" problem, subsets O(Ω) and F (Ω) coincide, i.e. O(Ω) = F (Ω). Any feasible solution which is not in O(Ω), i.e. any solution belonging to F (Ω) -O(S) is said to be suboptimal. We also define O(S) as the subset of the optimal solutions of any subset S of Ω. Thus, z ∈ O(S) if and only if Φ(z) = Φ(S). Note that Φ(S) can be greater than Φ(Ω), i.e. none of the optimal solutions of Ω belongs to S.

Solving combinatorial search problems

For Garey and Johnson [START_REF] Garey | Computers and intractability: a guide to the theory of NP-completeness[END_REF], algorithms are general step-by-step procedures for solving problems. An algorithm is said to solve a problem Π if that algorithm can be applied to any instance I of Π and is always guaranteed to produce an optimal solution for this instance I .

There are many algorithms available for solving problems. While some algorithms are dedicated to specific problems, others are more generic methods suitable for solving more than one problem. Many methods are appropriate only for certain types of problems. That is why we have to recognize the characteristics of a problem in order to identify an appropriate technique for solving it. Optimization problems are then classified according to their characteristics (the nature of the objective function, variables and constraints). Thus, algorithms are often classified according to the type of problems they are designed to solve, or according to whether they are designed to produce optimal solutions or only approximate (but possibly optimal) solutions. Among these general techniques, Linear Programming, Integer Linear Programming, Dynamic Programming, Backtrack Programming and Constraint Programming are the most frequently used and the most effective techniques for dealing with search problems. Where there is no possibility (owing to the size or the intractability of the problem) of obtaining an optimal solution, or no requirement for the solution to be optimal, then suboptimal solutions only may be sought, using approximate algorithms called heuristics.

It is interesting to note that the effectiveness of the solving methods (other than in a few specific cases of approximate methods) is highly dependent on the possibility of finding structural properties of feasible and optimal solutions which can then be used to identify the solutions of interest. Most of these properties can be stated as "dominance rules" whose raison d'être is discerning interesting subsets of solutions in which it is sufficient to search for optimal solutions.

Dominance rules

In this section, we provide a formal definition of the dominance rule concept with its different nuances.

Few definitions of dominance rules are to be found in the literature. Baker and Trietsch [START_REF] Baker | Principles of sequencing and scheduling[END_REF] define them in the following way: "Dominance properties provide conditions under which certain potential solutions can be ignored".

One formal definition that we encounter is by Carlier and Chrétienne [START_REF] Carlier | Problèmes d'ordonnancement: modélisation / complexité / algorithmes[END_REF]. We also find formal definitions by Kohler and Steiglitz [START_REF] Kohler | Characterization and theoretical comparison of branch-and-bound algorithms for permutation problems[END_REF][START_REF] Kohler | Computer and job-shop scheduling theory[END_REF], and also by Ibaraki [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF], whose definitions pertain to dominance relations (see Section 5.1). All these definitions are provided in the specific context of enumerative methods. We now put forward the following definitions in the general context: . The subset δ(S) is said to be a dominant subset of S and its complementary with respect to S, i.e. Sδ(S), is said to be dominated.

Ω S F (S) O(S) δ(S)
Informally, a dominance rule identifies a subset of S containing at least one optimal solution of S (see Figure 1). However, when the dominant part includes all optimal solutions, we can refer to a strict dominance rule, since all solutions belonging to O(S) ∩ δ(S) are then strictly better than solutions belonging to Sδ(S) (see Figure 2): ⇒ O(S) ⊆ δ(S). The subset δ(S) is said to be a strict dominant subset of S and its complementary with respect to S, i.e. Sδ(S), is said to be strictly dominated.

Ω S F (S) O(S) δ(S)
Moreover, when the dominant part includes all feasible solutions, we can refer to a redundant dominance rule since it does not eliminate feasible solutions (see Figure 3):

Ω S F (S) O(S) δ(S)

Definition 4.

A redundant dominance rule δ : P (Ω) → P (Ω) associates with a given subset S ⊆ Ω a subset δ(S) ⊆ S such that F (S) ⊆ δ(S). The subset δ(S) is said to be a redundant dominant subset of S and its complementary with respect to S, i.e. S -δ(S), is said to be redundantly dominated.

Most of the time δ is expressed using a property A which is satisfied by optimal or feasible solutions (see Section 4). Moreover, if O(Ω) ∩ S then at least one optimal solution of the problem belongs to δ(S). In this case δ(S) is also a dominant subset of Ω.

In scheduling, a semi-active schedule is defined as a schedule in which no job can be scheduled earlier without changing the sequence of execution of jobs on the machine or violating the constraints [START_REF] Brucker | Scheduling Algorithms[END_REF]. In other words, a semi-active schedule is a schedule in which no local left-shift is possible (i.e. a schedule containing no superfluous idle time). The application which associates the set of semi-active schedules with the set of all feasible schedules is a dominance rule, since there is at least one optimal schedule which is semi-active [START_REF] Baker | Introduction to sequencing and scheduling[END_REF]. Note that this dominance rule is strict when considering the total completion time criterion (1|r i | C i ) since all optimal schedules are semi-active (a schedule with a superfluous idle time cannot be optimal because a simple local left shift of the task scheduled just after the idle time allows the value of the objective function to decrease strictly). However, it is not the case when considering the total tardiness criterion. For example, consider an optimal schedule of an instance of 1|r i | T i in which the last task of the schedule is strictly completed before its due date. This task can then be delayed until its due date without changing the optimality of the schedule while it is no longer semi-active. Note also that dominance rules on which Edge-Finding techniques are based are redundant because they filter the set of solutions by eliminating only solutions which are not feasible according to the disjunctive constraints.

In the above definitions, it is not required that the dominance rules provide an operational method for building such a subset δ(S). A dominance rule is established in order to reduce the solution space either by adding new constraints to the problem, or by writing a procedure that attempts to reduce the domains of variables, or by building interesting solutions directly. Note that algorithms are not themselves dominance rules: they simply make use of them. The process of filtering the domain of a variable using a dominance rule is called an adjustment. In constraint programming it is also called domain reduction. An algorithm performing one or several adjustments is called a filtering algorithm.

In fact, most of the time, procedures or added constraints using dominance rules to reduce the search space are not able to eliminate the dominated part totally. The result obtained is therefore a subset of S containing δ(S). Nevertheless, note that the following proposition obviously holds:

Proposition 1. Let S be a subset of Ω such that F (S)
. Given δ(S), a dominant subset of S, any subset S of S such that δ(S) ⊆ S is a dominant subset of S.

Proof. Since, by definition, δ(S) ∩ O(S)

, and δ(S) ⊆ S , then δ(S) ∩ O(S) ⊆ S ∩ O(S) .

The choice of the dominance rule δ usually involves a compromise between a powerful expression and an easy identification of solutions belonging to δ(S).

When using a dominance rule, the considered subset of solutions S depends on the algorithm in which the dominance rule is used. However, most of the time such a subset is represented via a partial solution: the subset S contains all solutions which can be derived from this partial solution according to the domains of the unfixed variables.

If we carry the above definition to its limits we can think of dominance rules as constraints of the problem (feasibility constraints as well as optimality constraints). Indeed, constraints intentionally define a subset of solutions containing optimal solutions. Of course, by definition O(Ω) is a dominant set of Ω. If O(Ω) can be built directly, the problem is solved. In fact, it is more interesting to think of constraints as dominance rules only if they can be used in an operational way, i.e. if they lead to procedures or new constraints that can reduce the search space as the computation progresses, and not only to test the validity of a given solution (which may or may not be a partial solution). Note that dominance rules can often be put into practice by the addition of new constraints to the initial set of constraints.

Formulations of dominance rules

In this section, we analyze how dominance rules are generally formulated and what the consequences entailed by such formulations are. Most of the time a dominance rule is expressed using a property A which allows a dominant subset and a dominated subset of S to be identified. Formulation can be done in different ways. The possible adjustments which can be performed according to the dominance rule being considered are highly dependent on the characteristics of property A and on the formulation which uses this property.

Note that a large range of flexibility is permitted in the expression of A. Thus, using a dominance rule involves placing oneself at the mercy of the property A, since identifying solutions satisfying A may or may not be straightforward.

We now analyze different formulations of a dominance rule according to a given property A and we show what kind of adjustments can be performed according to a formulation. Consider a subset S of Ω. When we refer below to "an optimal solution of S with respect to S" we mean a solution z such that z ∈ O(S), i.e. such that Φ(z) = Φ(S).

Universal property-based dominance rule

This dominance rule is expressed as "all optimal solutions of S with respect to S have the property A". Therefore A is a necessary condition of optimality with respect to S. The subset of solutions belonging to S and satisfying A is dominant. Note that some solutions satisfying A may not be optimal. From a practical point of view:

• Any solution which does not satisfy A can be removed from S since it is not optimal.

• We can retain any identified subset of S containing the whole subset of solutions satisfying A, since this superset of A is dominant (see Proposition 1).

We refer to such a formulation as a universal property-based dominance rule. For example, "given an instance of 1|r i | C i , all optimal schedules are semi-active" is such a rule [START_REF] Baker | Introduction to sequencing and scheduling[END_REF]. Thus, only semi-active schedules need to be considered. This dominance rule allows the use of a model that considers sequences instead of completion times. In fact, from a given sequence, completion times are computed by scheduling tasks as soon as possible by following the sequence. The obtained schedule is then semi-active. Note that this property provides the basis for a lot of solving algorithms.

Existential property-based dominance rule

This dominance rule is expressed as "there exists at least one optimal solution of S having the property A". The subset of solutions belonging to S satisfying A is also dominant. Note that an optimal solution may not satisfy A. From a practical point of view:

• Any solution which does not satisfy A can be removed from S, since there is at least one optimal solution of S satisfying A.

• Therefore, we can retain any identified subset of S containing the whole subset of solutions satisfying A, since this superset of A is dominant (see Proposition 1).

We refer to such a formulation as an existential property-based dominance rule. For example, "given an instance of 1|r i | T i , there is at least one optimal schedule which is semi-active" is such a rule [START_REF] Baker | Introduction to sequencing and scheduling[END_REF]. Thus, only semi-active schedules can also be considered and it is also possible to use models in which only sequences are considered.

Sufficient property-based dominance rule

This dominance rule is expressed as "any solution of S satisfying property A is optimal": therefore A is a sufficient condition of optimality according to S. Note that an optimal solution may not satisfy A. From a practical point of view:

• Any solution which can be established satisfying A is an optimal solution of S.

• We can retain any subset of solutions for which this subset can be established it contains at least one solution satisfying A since such a subset is dominant (see Proposition 1). If such a subset does not exist or cannot be established, no adjustment can be performed.

We refer to such a formulation as a sufficient property-based dominance rule. For example, "given an instance of 1|| T i , any semi-active schedule in which tasks are sequenced in non decreasing order of processing times (i.e. the schedule is said to follow the shortest processing time order) and in which all tasks are tardy is optimal" is such a rule [START_REF] Emmons | One-machine sequencing to minimize certain functions of job tardiness[END_REF]. Of course, when building the semi-active schedule according to the shortest processing time order, there is at least one task which is on time, all semi-active schedules have potentially to be considered.

Necessary and sufficient property-based dominance rule

This dominance rule is expressed as "all optimal solutions of S with respect to S have the property A, and any solution of S satisfying A is optimal". Therefore A is a necessary and sufficient condition of optimality with respect to S. The subset of solutions belonging to S satisfying A is said to be strictly dominant. From a practical point of view:

• Any solution which does not satisfy A can be removed from S.

• Any solution which can be established satisfying A is an optimal solution of S.

• We can retain any identified subset of S containing the whole subset of solutions satisfying A, since such a subset is strictly dominant (see Proposition 1).

• We can retain any subset of solutions which can be shown to contain at least one solution satisfying A, since such a subset is dominant (see Proposition 1).

We refer to such a formulation as a necessary and sufficient property-based dominance rule. For example, "given an instance of 1|| C i , any semi-active schedule following the shortest processing time order is optimal" is such a rule [START_REF] Smith | Various optimizers for single stage production[END_REF]. This famous dominance rule, known as the Smith's rule, allows this problem to be solved in O(n log n) time.

Combining dominance rules

Emmons [START_REF] Emmons | One-machine sequencing to minimize certain functions of job tardiness[END_REF] pointed out that some dominance rules provide only existential properties, while others provide universal properties. From a practical point of view, this distinction is important. Indeed, universal property-based dominance rules can obviously be "accumulated", while existential property-based dominance rules cannot. By "accumulation" Emmons means that if two valid universal property-based dominance rules take the form "all optimal solutions have the property A" and "all optimal solutions have the property B", then clearly the dominance rule "all optimal solutions satisfy the properties A and B" will hold.

It seems natural that existential property-based dominance rules cannot generally be directly "accumulated" in the above sense. Given two dominance rules δ 1 and δ 2 , set δ 1 (S) ∩ δ 2 (S) ∩ O(S) may be empty. Nevertheless, this does not mean that we cannot use different property-based dominance rules together if one of them is existential. In fact, dominance rule δ 2 should not be applied to S but to δ 1 (S), taking into account the new constraints (implicit or explicit) which have been added by the application of the first dominance rule. Of course, the dominance checking involved by such an application may be really complex. Fortunately, the dominance rules described by Emmons for 1|| T i can be accumulated, even though they are not universal. For example, one of these rules is expressed as "for any tasks i and k with (k

∉ B i )∧(p i < p k ∨(p i = p k ∧d i ≤ d k ))∧(d i ≤ max( j ∈B k p j +p k , d k ) then i precedes k"
, where B x is the set of tasks which it has been decided will precede x using the same rule with other tasks. In this context, "i precedes k" means "there exists an optimal schedule in which all precedences previously established are satisfied and in which i is completed before k". Thus, while this dominance rule is an existential property-based dominance rule, it can be accumulated with itself (and two other rules of the same kind) if no inconsistencies are introduced in relation to the other pairs of tasks. To this end, sets B x are used to be sure that the solution space will not be reduced to a set in which, for example, both i ∈ B k and k ∈ B i . This kind of accumulation is common, particularly in enumerative methods where these kinds of added constraints are often implicit, i.e. taken into account in the variable domains.

Types of dominance rules

In this section we review the common characteristics of dominance rules encountered in the literature and we propose formal definitions of these characteristics.

Relation-based dominance rules

Dominance rules are often expressed as dominance relations. A formal definition of a dominance relation can be found in Kohler and Steiglitz [START_REF] Kohler | Characterization and theoretical comparison of branch-and-bound algorithms for permutation problems[END_REF][START_REF] Kohler | Computer and job-shop scheduling theory[END_REF] and in Ibaraki [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF] in the context of enumerative methods. Informally speaking, a dominance relation is a binary relation between two disjoint subsets of solutions S 1 and S 2 whereby the best solution belonging to S 2 is not better than the best solution of S 1 .

Definition 5. A dominance relation is a partial, reflexive and transitive binary relation defined on P

(Ω) such that, given two disjoint subsets S 1 and S 2 of Ω, S 1 S 2 if it can be established that Φ(S 1 ) ≤ Φ(S 2 ). We say that S 1 dominates S 2 or that S 1 is dominant over S 2 , and that S 2 is dominated by S 1 .

For example, "given an instance of 1|r i | C i , if there exist two tasks i and k such that (p i ≥ p k )∧(r i + p i ≤ r k + p k ) then the set of schedules S i sequencing task i first dominates the set of schedules S k sequencing task k first [START_REF] Dessouky | Sequencing jobs with unequal ready times to minimize mean flow time[END_REF]" is such a relation. Indeed, it can be proved that the schedule minimizing the total completion time in S i has a total completion time lower than or equal to the total completion time of a schedule minimizing the total completion time in S k . Note that it does not mean that S i contains an optimal solution of the problem. It means that S i contains a schedule minimizing the total tardiness in S i ∪ S k . Therefore, in the previous definition, a dominance relation can be seen as a special case of a dominance rule applied to the set S 1 ∪S 2 (or to any superset of S 1 ∪S 2 ) where the property identifying the dominant subset is the dominance relation.

Thus, when it is possible to find a relation whereby the best solution belonging to S 1 is strictly better than the best solution belonging to S 2 we shall refer to a strict dominance relation: Definition 6. A strict dominance relation is a binary relation over P (Ω) satisfying S 1 S 2 implies Φ(S 1 ) < Φ(S 2 ). We say that S 1 dominates strictly S 2 or that S 1 is strictly dominant over S 2 and that S 2 is strictly dominated by S 1 .

Note that special requirements must usually be met in order for dominance relations to be used correctly, according to the method used. In particular, a dominance relation is often required to be antisymmetric so as to be able to handle disjoint subsets S 1 and S 2 where Φ(S 1 ) = Φ(S 2 ) (see for example [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF]): at least one of the two subsets has to be retained.

Dominance rules for optimality and feasibility

Some dominance rules are established to identify subsets of solutions with at least one optimal solution, while others are established to eliminate unfeasible solutions. Whereas the former use the objective function to identify the dominated parts, the latter make use of the constraints of the problems. We can therefore establish the two following classes of dominance rules: Definition 7. An optimality-led dominance rule is a dominance rule δ where the characteristics of the dominated part are expressed according to the objective function of the problem. Applied to a subset S ⊆ Ω, the conditions of the dominance rule establish that Φ(δ(S)) ≤ Φ(S -δ(S)).

Definition 8. A feasibility-led dominance rule is a dominance rule where the characteristics of the dominated part are expressed in terms of feasibility according to the constraints of the problem. Such a rule is commonly called an elimination rule. In a search problem, the dominated part should only contain unfeasible solutions.

For example, a feasibility-led dominance rule for 1|r i , di | C i (i.e. when deadlines are considered and the total completion time has to be minimized) could be "if there exist two tasks i and k such that (r k + p k > dip i ) then the domain of D(C i ) can be adjusted to {r i + p i , . . . , min( di , dkp k )} and the domain of D(C k ) to {max(r k + p k , r i + p i + p k , . . . , dk }" because there is no feasible schedule in which task k is completed before task i . Note that in the case of a decision problem, some dominance rules include some feasible solutions in the dominated part. However, such a dominance rule belongs to the class of optimality-led dominance rules in which the objective function is two-valued (acceptable or unacceptable, see Section 2.5).

For example, it is the case when the previous dominance rule is applied to 1|r i , di |_ in which the objective function is two-valued. Note also that a feasibility-led dominance rule is a redundant dominance rule (see Definition 4).

Morphism-based dominance rules

Some dominance rules depend on a transformation function over solutions. Informally, given two sets S and S of solutions such that S ⊂ S ⊆ Ω, a morphism-based dominance rule establishes that if any solution belonging to S can be transformed into a dominant solution belonging to S -S , then S is dominated (see Figure 4):

S δ(S)

Definition 9.

Let S be a subset of Ω. Given a subset S of S, a morphism-based dominance rule is a dominance rule depending on a morphism µ : P (S ) → P (S -S ) preserving validity so that to any solution z ∈ S there corresponds a solution µ(z) ∈ S -S such that z ∈ F (S) ⇒ Φ(µ(z)) ≤ Φ(z). The subset S is then a dominated subset of S.

For example the dominance of semi-active schedules for the single-machine problem described in Section 3 depends on the application which associates with any non-semi-active schedule the only semi-active schedule following the same sequence of jobs obtained by removing all superfluous idle times. Commonly-encountered special cases of such dominance rules rely on isomorphisms that preserve the validity (feasibility or unfeasability). Informally, an isomorphism-based dominance rule establishes that a subset of solutions S 2 is dominated as being isomorphic to another dominant subset of solutions S 1 (see Figure 5). Definition 10. Let S be a subset of Ω. Given two disjoint subsets S 1 and S 2 of set S, an isomorphism-based dominance rule is a dominance rule relying on a bijective mapping function µ : S 2 → S 1 preserving validity such that to any solution z ∈ S 2 , there corresponds a solution µ(z) ∈ S 1 , and where it may be established that Φ(S 1 ) ≤ Φ(S 2 ). Subset S 2 is then a dominated subset of S. Subsets S 1 and S 2 are said to be isomorphic.

Note that while such a dominance rule will often satisfy z ∈ F (S) ⇒ Φ(µ(z)) ≤ Φ(z), the definition does not require this to be the case. Indeed, only the best solution belonging to S 1 (in the definition) needs to be at least as good as the best solution belonging to S 2 .

Such dominance rules were identified very early on as being an important factor in the efficiency of solution methods. Thus, in 1960, Swift wrote [START_REF] Swift | Isomorph rejection in exhaustive search techniques[END_REF]: "In many problems involving exhaustive searches the limiting factor with respect to speed or completion may not be the efficiency with which the search as such is conducted but rather the number of times the same basic problem is investigated. That is, the search routine may be effective in rejecting impossible cases in large blocks and still fails to accomplish its purpose in that the cases which must be investigated are looked at too frequently." In decision problems we often talk about symmetry breaking (see for example [START_REF] Brown | Applied algebra, algebraic algorithms and error-correcting codes[END_REF]). As far back as 1874 an article proposed making use of symmetries in the eight queens problem [START_REF] Glaisher | On the problem of the eight queens[END_REF]. This subject has been addressed by a number of researchers in the past decades, particularly in the constraint programming community (see for example [START_REF] Brown | Applied algebra, algebraic algorithms and error-correcting codes[END_REF][START_REF] Freuder | Eliminating interchangeable values in constraint satisfaction problems[END_REF][START_REF] Puget | On the satisfiability of symmetrical constrained satisfaction problems[END_REF][START_REF] Benhamou | Study of symmetry in constraint satisfaction problems[END_REF][START_REF] Smith | Reducing symmetry in a combinatorial design problem[END_REF][START_REF] Fahle | Symmetry in constraint optimization[END_REF][START_REF] Prestwich | Exploiting dominance in three symmetric problems[END_REF][START_REF] Cohen | Symmetry definitions for constraint satisfaction problems[END_REF][START_REF] Walsh | General symmetry breaking constraints[END_REF]). Note that there are several definitions of symmetry which differ in the attributes they apply to (only the values, only the variables, or variable-value pairs) and in what they preserve (the constraints or the set of solutions) [START_REF] Cohen | Symmetry definitions for constraint satisfaction problems[END_REF].

Evaluation-based dominance rules

Some optimality-led dominance rules (see Section 5.2) rely on the use of a lower bounding function to identify dominated parts. This kind of dominance rule is notably the key element in the "bounding" operation for branch and bound methods. Whereas this operation is often described separately from the set of dominance rules, it can obviously be considered as a special case of dominance rules [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF]. Consider a subset S of Ω. A function lb : P (Ω) → R is a lower bounding function if it satisfies the following conditions [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF]:

• lb(S) ≤ Φ(S);

• lb(S) = Φ(S) if S is a singleton {s}; • lb(S) ≤ lb(S ) if S ⊆ S.
A lower bound-based dominance rule is then established via the following proposition: Proposition 2. Given a lowering function lb : P (Ω) → R, consider a solution z and a subset S ⊆ Ω with z ∉ S. If lb(S) ≥ Φ(z) then {z} S and S is dominated. If lb(S) > Φ(z) then {z} S and S is strictly dominated.

In the same way, upper bound-based dominance rules can be established for maximization problems.

Dependent/independent-instance dominance rules

While some dominance rules can be expressed at a global level of the problem and are valid for any instance, others can be applied only if certain conditions are satisfied regarding the data. The first sort can be referred to as independent-instance dominance rules, in contrast to the second sort, which we may term dependent-instance dominance rules.

For example, the dominance of semi-active schedules for 1|| T i described in Section 3 is independent of the instance to be solved, since it is valid for any instance, while the Emmons rule described in Section 4.5 depends on conditions which have to be fulfilled by a pair of tasks.

Shaving

In the context of job-shop scheduling, Carlier and Pinson [START_REF] Carlier | Adjustments of heads and tails for the job-shop problem[END_REF], and Peridy [START_REF] Peridy | Le problème de job-shop : arbitrages et ajustements[END_REF] introduced the concept of "global operations", in parallel with Martin and Shmoys who used the term "shaving". This kind of rule is based on a refutation principle. Informally, global operations use a feasibility test to determine whether or not there exists a solution that satisfies a given property A. They are based on the following proposition:

Proposition 3. Let S be a subset of Ω with F (S)

.

Given a property A, if it can be established (by another rule) that none of the solutions satisfying A belongs to F (S), then the set of solutions not satisfying A is dominant.

For example the feasibility-led dominance rule described in Section 5.2 for 1|r i , di | C i relies on the fact that if (r k + p k > dip i ) and if k is completed before i then the schedule is not feasible according to the disjunctive constraint between i and k. Because these rules use other feasibility-led dominance rules, they are called "global". Peridy [START_REF] Peridy | Règles d'éliminations pour les problèmes d'ordonnancement disjonctif[END_REF] proposed a uniform framework to classify the dominance rules according to their level of use. Thus, feasibility-led dominance rules are said to be of level 1 while global operations using dominance rules of level 1 for their feasibility test are said to be of level 2.

The concept of shaving can obviously be extended to the optimality constraint:

Definition 11. Let S be a subset of Ω with F (S) . Given a property A, if it can be established (by another rule) that none of the solutions satisfying A belongs to O(S) then the set of solutions not satisfying A is dominant.

Other dominances

While dominance rules apply to sets of solutions, the notion of dominance can be extended between dominance rules themselves, between instances of a problem and between problems.

Dominances between dominance rules or between dominance relations

In some cases, two dominance rules can be compared according to their potential for discarding solutions. Informally, we say that a dominance rule δ is stronger than a dominance rule δ (δ dominates δ ) if it eliminates the same solutions as δ , with the expectation of other eliminations in addition.

Definition 12. Consider two dominance rules δ and δ

. δ dominates δ if ∀S ⊆ Ω, δ(S) ⊆ δ (S).
For example, a feasible schedule is said to be active if no job can be completed earlier without either delaying another job or violating a constraint [START_REF] Brucker | Scheduling Algorithms[END_REF]. It is well known that the subset of active schedules is dominant for 1|r i | C i and 1|r i | T i [START_REF] Giffler | Algorithms for solving production scheduling problems[END_REF][START_REF] Baker | Introduction to sequencing and scheduling[END_REF]. Moreover, any active schedule is also semi-active. Since the set of active schedules for a given instance of a problem is included in the set of semi-active schedules, the dominance rule on active schedules dominates the dominance rule on semi-active schedules.

In the same way, this idea of potential can be expressed through dominance relations [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF]:

Definition 13. Given two dominance relations (strict or not) and ¯ , dominates ¯ if ∀S, S ⊆ Ω with S ∩ S = then S ¯ S ⇒ S S .

For example, the following slightly modified version of the dominance relation described in Section 5.1: "given an instance of 1|r i | C i , if there exist two tasks i and k such that (p i > p k ) ∧ (r i + p i < r k + p k ), then the set of schedules S i sequencing task i first dominates the set of schedules S k sequencing task k first" is dominated by the dominance relation as stated in Section 5.1 because

(p i > p k ) ∧ (r i + p i < r k + p k ) ⇒ (p i ≥ p k ) ∧ (r i + p i ≤ r k + p k ).
Dominance between dominance rules determines whether it is sufficient to use only one rule instead of both dominance rules in a solution procedure. Dominance checking can be really time consuming, and it may be advantageous to know when using both dominance rules will not be useful. However, although it might appear obvious that a stronger dominance rule would contribute more than a weaker one to the effectiveness of a problem-solving algorithm, this is not always the case, as shown by Kohler and Steiglitz [START_REF] Kohler | Characterization and theoretical comparison of branch-and-bound algorithms for permutation problems[END_REF][START_REF] Kohler | Computer and job-shop scheduling theory[END_REF] or Ibaraki [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF] in branch and bound methods for which several counterexamples can be easily built. Nevertheless, Ibaraki provides several classes of branch and bound methods for which a stronger dominance relation always results in a more effective algorithm in terms of generated states. This monotonicity property for such classes of algorithms has encouraged practitioners to seek the strongest possible dominance rules for the problem to be solved, unless the computational time required for establishing dominance becomes predominant [START_REF] Ibaraki | The power of dominance relations in branch-and-bound algorithm[END_REF]. Indeed, a stronger dominance relation may take too much time to be applied.

Dominances between instances of problems

In some cases it is useful to express a dominance relation between two instances of the same problem. Informally, an instance I dominates an instance I if an optimal solution of I is not better than an optimal solution of I . A dominance relation between two instances can be defined as follows: Definition 14. Consider two instances I and I of the same problem whose solution spaces are respectively Ω and Ω . If it can be established that Φ(Ω ) ≤ Φ(Ω) then I dominates I . Moreover, if it it can be established that Φ(Ω ) < Φ(Ω) then I strictly dominates I .

Such dominance rules can be used for preprocessing (see Section 7.4) or for establishing lower bounds and upper bounds of the problem. For example, in scheduling it is common to build an instance I from an original instance I by splitting tasks into unary processing time jobs. In certain cases, the obtained instance I dominates I and may possibly be solved easily (see for example [START_REF] Belouadah | Scheduling with release dates on a single machine to minimize total weighted completion time[END_REF]). Solving this new instance could then produce a lower bound of the value of an optimal solution of I .

Note that when an instance I can be split into subproblems, I can then correspond to the consideration of several subproblems which can be solved independently.

Dominances between problems

The notion of dominance can also be extended between problems, as we now define: Definition 15. Consider two problems Π 1 and Π 2 . If it can be established that for any instance I 2 of problem Π 2 , an instance I 1 of problem Π 1 can be built such that I 1 (strictly) dominates I 2 , then Π 1 (strictly) dominates Π 2 .

As for dominance rules between instances of the same problem, such dominance rules are often used for preprocessing (see Section 7.4) or for establishing lower bounds and upper bounds of the problem.

For example, consider the same problem as 1|| C i but in which the preemption of tasks is allowed (the problem is denoted as 1|pmt n| C i ): this means that the execution of a task can be interrupted to process another task and be terminated later. In such a case, nonpreemptive schedules (i.e. schedules in which no task is interrupted) are dominant [START_REF] Baker | Introduction to sequencing and scheduling[END_REF] because any preemptive schedule can be transformed into a non-preemptive schedule (which is also a solution of the problem) with a total completion time lower than or equal to the initial completion time. Therefore, given an instance of 1|pmt n| C i , if we consider exactly the same instance (here, the transformation is the identity) for 1|| C i , then the solution space to consider is reduced, while any solution to 1|| C i is also a solution to 1|pmt n| C i . On the other hand, consider the problem with release dates 1|r i | C i . The problem obtained by allowing preemption, i.e. 1|r i , pmt n| C i , dominates 1|r i | C i because solving an instance of 1|r i , pmt n| C i always gives a lower bound of 1|r i | C i for the same instance. Moreover, while 1|r i | C i is NP-Hard in the strong sense, 1|r i , pmt n| C i is solvable in O(n log n) time.

Dominance rules for solving combinatorial optimization problems

In this section we describe the main applications of dominance rules in solving combinatorial optimization problems. As we shall see, they can be used at different stages of the problem solving process, and in the main general resolution methods.

Dominance rules and problem modeling

As stated in Section 2.1, modeling is an important stage where the variables and constraints of the problem are decided. Even at this stage it is possible to make use of dominance rules. Indeed, if we can consider a subset of solutions containing at least one optimal solution (or all optimal solutions), and if this subset of solutions can lead to a special model in which only these solutions are considered, the solution space considered by the solving algorithm is of course smaller, leading to a more effective method.

For example, consider the eight queens problem. At the modeling stage we use a dominance rule stipulating that in all optimal solutions, there is exactly one queen per column (see for example [START_REF] Golomb | Backtrack programming[END_REF]). We then obtain a model with only eight variables {X 1 , . . . , X 8 }, where each variable X i corresponds to the line of the queen located in column i . It is easy to see that this model leads to a solution space considerably smaller than when two variables are considered in order to locate each queen on the chessboard.

Dominance rules and the building of solutions

Some algorithms directly build solutions by taking into account a dominant subset of solutions. While the dominance rule is not used in the structure of the model, as it was in the previous section, it manifests itself in the way the solution is built by a solving algorithm.

For example, we have seen in Section 4 that the set of semi-active schedules is dominant for 1|r i | C i and 1|r i | T i allowing solving algorithms for these problems to build sequences of tasks instead of using starting times of tasks as decision variables. The starting times are obtained by scheduling the jobs as early as possible in the order of the sequence (see for example [START_REF] Elmaghraby | The one machine sequencing problem with delay costs[END_REF]).

Dominance rules as decision rules

Some algorithms are designed to deal with a specific problem, and most of them rely on dominance properties. They interesting properties of the solutions being sought, and often belong to the class of polynomially solvable problems [START_REF] Garey | Computers and intractability: a guide to the theory of NP-completeness[END_REF]. These properties are usually sufficiently strong to specify the structure of the optimal solutions which can then directly be built. Since the properties used are specific to the given problem, most of the time these algorithms cannot be used to solve other problems.

For example, Smith's rule described in Section 4.4 for the solving of 1|| C i , is such a decision rule. An instance of this problem can be solved simply by iteratively choosing the task with the shortest processing time and by scheduling it as soon as possible. Thus, in scheduling, decision rules are often described by giving a criterion (the processing time of the task in the example) which allows the next job to schedule to be identified. These criteria are commonly called priority rules.

Dominance rules and preprocessing

Preprocessing is a phase that occurs after the problem has been modeled but before it has been solved. It consists of operations that can be performed to improve or simplify the formulation by tightening bounds on variables, fixing values, etc. [START_REF] Nemhauser | Integer and Combinatorial Optimization[END_REF]. The aim is to prepare the formulation for the chosen solution method. The use of dominance rules is natural at this stage in the solution process. Different operations can be performed according to dominance rules:

• They facilitate the assignment of fixed values to some variables which can then be eliminated from the model.

• They may allow new constraints to be added, thus reducing the search space.

• They may allow the bounds of the variables to be tightened.

• They facilitate the splitting of a problem into subproblems.

Dominance rules in evaluation methods

When there is no possibility of an optimal solution (because of the size or of the intractability of the problem), or no requirement for one, suboptimal solutions may only be sought using approximate algorithms. Approximate methods include any way that can provide a "good" or near-optimal feasible solution with low computational requirements. Among these, greedy algorithms with their more or less complex variants and metaheuristics [START_REF] Glover | Handbook of Metaheuristics[END_REF] appear to be very effective for a wide variety of problems. Thus, in minimization (respectively maximization) methods, approximate algorithms produce upper bounds (respectively lower bounds) of the value of the objective function. Lower bounds (respectively upper bounds) of problems are important information in minimization (respectively maximization) problems. Indeed, they provide indications about the quality of the solutions being built, and they can improve the behavior of solving algorithms, particularly in enumerative methods (see Section 5.4).

Both in approximate algorithms and in the production of bounds, dominance rules are of significant interest. A lot of heuristics use dominance rules to improve the quality of the solutions built (see for example [START_REF] Chu | Some new efficients methods to solve the n|1|r i | T i[END_REF][START_REF] Chu | Efficient heuristics to minimize total flow time with release dates[END_REF][START_REF] Jouglet | Dominance-based heuristics for one-machine total cost scheduling problems[END_REF]). Dominances between instances of problems or between problems are particularly useful for the development of bounds (see Sections 6.2 and 6.3).

Dominance rules and linear programming

Many problems belong to the class of problems solvable with linear programming. These problems are characterized by a linear objective function, linear inequality constraints and variables whose domain is the set of real numbers. The solution space defined by the linear inequality constraints is a convex polytope. These problems can be solved using the "simplex algorithm" [START_REF] Dantzig | Linear Programming and Extensions[END_REF] which proceeds from one vertex of the polytope to another one by improving each time the value of the objective function. Dominance rules can be exploited as preprocessing to add some inequalities during a preprocessing phase (see Section 7.4). One way to solve a combinatorial search problem is also to identify a dominant set of solutions which can be expressed across a linear programming model.

In integer linear programming methods (see for example [START_REF] Nemhauser | Integer and Combinatorial Optimization[END_REF]), the problem is formulated with a set of linear inequalities which describe a convex polyhedron enclosing points corresponding to the subset of feasible solutions of the combinatorial problem whose coordinates are integers. A variant of the simplex algorithm can then be applied in which additional inequality constraints, called "cutting planes", are generated as needed as the computation progresses. Cutting planes limit the solution space and can be considered as feasibility-led dominance rules identifying a dominant subset of solutions.

Dominance rules and dynamic programming

A large number of combinatorial problems (see for example [START_REF] Held | A dynamic programming approach to sequencing problems[END_REF][START_REF] Lawler | A functional equation and its application to resource allocation and sequencing problems[END_REF]) fit into the recursive framework of dynamic programming: solving a problem of order N requires solving subproblems of order N -1, N -2, . . . , 1, where the solution of a subproblem of order i can be expressed in terms of solutions of order i -1. This allows a recursive approach for solving the original problem from the solutions of the subproblems.

This approach is based on Bellman's principle of optimality [START_REF] Bellman | The theory of dynamic programming[END_REF] which can itself be considered as a dominance rule: "an optimal sequence of decisions (a policy) has the property that whatever the initial state and initial decisions are, the remaining decisions must constitute an optimal policy with regard to the state resulting from the first decisions". Thus, an optimal solution can be built from locally optimal solutions of subproblems. Using dynamic programming to solve a problem essentially means deciding how to separate the problem into subproblems in order to satisfy the principle of optimality. Such a property has to be found in the structural properties of the problem solutions, and entails the use of dominance rules. Moreover, dominance rules can be used to eliminate non-interesting solutions of subproblems during the execution of the algorithm. [START_REF] Kohler | Computer and job-shop scheduling theory[END_REF] establish the relationship between enumerative and dynamic programming algorithms by showing that a dynamic programming method is equivalent to an enumerative algorithm (see the following section) in which dominance relations are used. In fact, solutions generated by the dynamic programming method for the subproblem of order i are the non-dominated solutions according to the dominance relation used in the enumerative method. The states generated for both methods are then the same.

Kohler and Steiglitz

Dominance rules and enumerative methods

Among the most commonly-used methods for solving combinatorial problems are the enumerative techniques [START_REF] Walker | An enumerative technique for a class of combinatorial problems[END_REF] that we encounter in the literature under a variety of names, such as "Backtrack Programming" [START_REF] Golomb | Backtrack programming[END_REF]. These are used for solving problems for which there is no known way of avoiding the huge size of their solution space. The idea is to find a way of organizing an enumerated list of solutions, using as much information as possible, so as to eliminate intelligently dominated parts of the solution space as the computation progresses, without having to enumerate these dominated parts [START_REF] Kohler | Computer and job-shop scheduling theory[END_REF] explicitly.

Thus, the term "partial enumeration" is often used, meaning a procedure for systematically enumerating parts of the solutions of Ω and examining them in such a way as to ensure that, by enumerating a reasonable small number of solutions, we have implicitly examined all elements of the solution space [START_REF] Balas | Discrete programming by the filter method[END_REF], the ones which are not explored being dominated. Thus, the utility of the method comes from the fact that only a small part of the solution space actually needs to be enumerated [START_REF] Mitten | Branch-and-bound methods: general formulation and properties[END_REF]. The remaining solutions are eliminated from consideration through the application of dominance rules that establish that such solutions cannot be optimal or better than the best one already known. Among these methods, the "branch and bound" procedure has been popularized by Land and Doig [START_REF] Land | An automatic method for solving discrete programming problems[END_REF] to solve Integer Linear Programming problems, by Little et al. [START_REF] Little | An algorithm for the traveling salesman problem[END_REF] to solve the traveling salesman problem, and by Ignall and Schrage [START_REF] Ignall | Applications of the branch-and-bound technique to some flow-shop scheduling problems[END_REF] to solve scheduling flowshop problems. The branch and bound method has been examined and generalized by a lot of authors (see for example [START_REF] Bertier | Procédure de résolution pour une classe de problèmes pouvant avoir un caractère combinatoire[END_REF][START_REF] Agin | Optimum seeking with branch and bound[END_REF][START_REF] Lawler | Branch-and-bound methods: a survey[END_REF][START_REF] Balas | A note on the branch-and-bound principle[END_REF][START_REF] Roy | Procédure d'exploration par séparation et évaluation[END_REF]). A formal description with a theoretical behavior study of branch and bound methods is provided by Kohler and Steiglitz [START_REF] Kohler | Characterization and theoretical comparison of branch-and-bound algorithms for permutation problems[END_REF][START_REF] Kohler | Computer and job-shop scheduling theory[END_REF] in the context of permutation problems. The name "branch and bound" arises from two basic operations [START_REF] Mitten | Branch-and-bound methods: general formulation and properties[END_REF]:

1. branching, which consists in dividing a subset of solutions into smaller subsets; 2. bounding, which consists in establishing bounds on the value of the objective function over the subsets of solutions, so as to be able to use it with an evaluation-based dominance rule (see Section 5.4).

The branch and bound method needs a recursive application of the branching and the bounding operations. A "lower bound" on the value of the objective function for all solutions belonging to one subset of solutions means that we can stop the branching of this subset since it is established that no better solution than the one already known can be reached from this subset. The popularity of this rather general method comes from its simplicity and its ability to solve combinatorial problems even when the objective and the constraints are nonlinear, discontinuous or even non-mathematically defined [START_REF] Agin | Optimum seeking with branch and bound[END_REF]. In order to use the branch and bound method, it is only necessary to be able to describe the problem as a tree, in which each node represents a partial solution. In addition, it must be possible to fix, at each node, a lower bound on the objective function for all nodes that emanate from it [START_REF] Ignall | Applications of the branch-and-bound technique to some flow-shop scheduling problems[END_REF]. Moreover, if dominance rules can be defined for identifying and eliminating active nodes leading to dominated solutions (because they are proved to be either not optimal or equivalent to other solutions enumerated elsewhere in the search tree) this can dramatically improve the behavior of the branch and bound procedure [START_REF] Balas | A note on the branch-and-bound principle[END_REF]. However, this technique may require a good deal of judgment to be able to choose a lower bound, the potential use of an initial solution, the incorporation of complicated dominance checks, and the specification of a branching mechanism [START_REF] Kohler | Characterization and theoretical comparison of branch-and-bound algorithms for permutation problems[END_REF][START_REF] Kohler | Computer and job-shop scheduling theory[END_REF]. Among the most recent techniques which can be considered as belonging (at least in part) to enumerative methods is the programming paradigm known as constraint programming (see for example [START_REF] Baptiste | Constraint-based scheduling, applying constraint programming to scheduling problems[END_REF][START_REF]Handbook of Constraint Programming[END_REF]). The power of the constraint programming method lies mainly in the fact that constraints of the problem are used in an active process termed "constraint propagation", where certain deductions are performed in order to reduce the domain of the variables, thus reducing the computational effort. Constraint propagation removes values from the domains, deduces new constraints, and detects inconsistencies. Since constraint propagation cannot usually detect all inconsistencies, an enumerative method is then used to branch on the remaining possible decisions. Constraint propagation algorithms mainly rely on the exploitation of feasibility-led dominance rules (see Section 5.2). Isomorphismbased dominance rules (see Section 5.3) are also frequently used. Less often, optimality-led dominance rules are used (see for example [START_REF] Prestwich | Exploiting dominance in three symmetric problems[END_REF][START_REF] Walsh | Symmetry in constraint optimization[END_REF]). In constraint programming, there are three main ways of introducing dominance rules [START_REF] Smith | Reducing symmetry in a combinatorial design problem[END_REF]:

• remodeling the problem according to dominance rules;

• adding statically (implicit or explicit) constraints to the model which will only be satisfied by solutions of dominant parts;

• adding dynamically constraints during the search to ensure that any solution which is dominated by a solution already considered will not be considered.

Conclusion

Many of the "problems of everyday life" are computable and can be handled using computers. Optimizing energy and raw material consumption and reducing costs have recently become crucial objectives, both for ecological and economic reasons. A lot of the problems in question can be viewed as combinatorial optimization problems, defined by a set of variables subject to constraints. The aim is to find an assignment of the variables which satisfies all the constraints and which maximizes or minimizes an objective function representing a performance measure of the solution. There are a wide range of applications, including the distribution of goods, production scheduling, planning, budgeting, facility location and transportation network design. Dealing with these problems is a challenge. Indeed, most of them belong to the class of NP-Hard problems. Most of the time, and even for small-scale problems, the number of possible assignments is so huge that it is not feasible to consider all possibilities. Finding ways to reduce the search spaces is therefore a key issue. Dominance rules, which eliminate uninteresting assignments or select interesting ones, are important stratagems. The interest of dominance rules is obvious since they reduce the search space of combinatorial problems which are in the process of being solved. Informally, a dominance rule identifies, generally via the formulation of properties, a subset of assignments containing at least one optimal solution. Despite their extensive use in solving combinatorial optimization problems, no detailed description of them is, to our knowledge, to be found in the literature. Thus, in this paper we have formally defined dominance rules. We have established how dominance rules can be formulated and characterized. Moreover, we have shown how useful dominance rules can be in solving combinatorial problems.

It should be noted that the elaboration of the model remains the most crucial step in the problem solving process. Dominance rules can be used at this stage to reduce the search space at the outset, as this paper has pointed out. However, the richness of the model and its associated expressive power are also highly significant. Using dominance rules in filtering methods clearly shows that the different structural properties of interesting solutions are revealed only in the nuances of an elaborated model. This is why we think that calling traditional models into question might be the first step towards discovering new solutions to optimization combinatorial problems.

Figure 1 :

 1 Figure 1: δ(S) is dominant and Sδ(S) is dominated.

Figure 2 :

 2 Figure 2: δ(S) is strictly dominant and Sδ(S) is strictly dominated.

Figure 3 :

 3 Figure 3: δ(S) is redundantly dominant and Sδ(S) is redundantly dominated.

Figure 4 :

 4 Figure 4: Morphism-based dominance rules.

5 :

 5 Isomorphism-based dominance rule.