This work presents a new constructive heuristic for graph coloring based on Genetic Algorithms. The Constructive Genetic Algorithm (CGA) begins with an initial ...
CONSTRUCTIVE GENETIC ALGORITHM FOR GRAPH COLORING
Luiz Antonio N. Lorena LAC/INPE - Instituto Nacional de Pesquisas Espaciais Geraldo Ribeiro Filho Universidade de Mogi das Cruzes
Abstract: This work presents a new constructive heuristic for graph coloring based on Genetic Algorithms. The Constructive Genetic Algorithm (CGA) begins with an initial population formed only of schemas (partial colorings), and iterates (re)combining two schemas. The new schemas present more colored nodes. At each iteration, is performed an elimination of schemas from the population and the process finishes with an empty population or an iteration limit reached. The permanence criterion is based on proportional adaptation of the schema to the population. The same CGA is adapted to find the maximum independent node set of a given graph. The identified set is removed from the graph and the process is repeated for the reduced graph. Successive reductions result in the node coloring of the original graph. This approach is used for large, or high density graphs. Computational results are shown for instances from the literature using microcomputer implementation.
Resumo: Este trabalho apresenta uma nova heurística construtiva para coloração de grafos baseada nos Algorítmos Genéticos. O Algorítmo Genético Construtivo (AGC) começa com uma população inicial formada apenas por esquemas (colorações parciais), e avança (re)combinando dois esquemas. Os novos esquemas apresentam mais vértices coloridos. A cada iteração é feita uma eliminação de esquemas da população e o processo termina com uma população vazia ou um limite de iterações atingido. O critério de permanência de esquemas é baseado na adaptação proporcional do esquema à população. O mesmo AGC é adaptado para encontrar o maior conjunto independente de vértices de um dado grafo. O conjunto identificado é eliminado do grafo e o processo se repete para o grafo reduzido. Reduções sucessivas resultam numa coloração de vértices do grafo original. Esta abordagem é usada em grafos muito grandes, ou com muita densidade. Resultados computacionais são exibidos para instâncias da literatura, usando implementação em microcomputadores.
Key words: Genetic algorithms, Coloring problems, Constructive heuristics.
1. Introduction The graph coloring problem considered in this work is a known NP-complete problem [Garey & Johnson, 1978] of coloring the vertex set of a graph G = (V,E) such that no adjacent vertices receive the same color. The task must be performed using the minimum number of colors possible. Each set of vertices that receives a color is an independent set, and the coloring problem can be seen as a clustering problem of forming independent sets. The graph coloring is a very studied problem [de Werra, 1990; Korman, 1979]. A 1995 DIMACS challenge was dedicated to the problem, and efficient algorithms are developed [Fleurent & Ferland, 1995]. Applications appeared in scheduling (timetabling) [de Werra, 1985; Leighton, 1979], frequency assignment [Gamst, 1986; Hale, 1980] and others [Briggs et al., 1989]. The use of metaheuristics has produced the best algorithms for a large class of graph instances. Johnson et al. [Johnson et al., 1991] and Chams et al. [Chams et al., 1987] applied Simulated Annealing, Costa and Hertz [Costa & Hertz, 1996] and the Ant Colony , Friden et al. [Friden at al., 1989] and Hertz and de Werra [Hertz & de Werra, 1987] applied Tabu Search and Fleurent and Ferland [Fleurent & Ferland, 1994] used hybrid GA with local search and Tabu search. We propose in this work a Constructive Genetic Algorithm (CGA) for graph coloring. Genetic Algorithms (GA) are now very known, having several successful applications in Combinatorial Optimization (CO) problems [Fleurant & Ferland, 1995; Furtado, 1996; Levine, 1993; Lorena & Lopes, 1996; Lorena &Lopes, 1997; Tam, 1992; Ulder et al., 1991]. GA is based on the controlled evolution of a structured population. The basis of a GA is the recombination operators and the schema formation and propagation over generations [De Jong, 1975; Golberg, 1989; Holland, 1975]. To obtain successful applications of GA to CO problems some characteristics of a classical GA have been adapted and redefined. Some specialized solution representation was proposed [Fleurent & Ferland, 1994; Levine, 1993; Tam, 1992; Ulder et al., 1991] and, recently, local search have took the place of mutation [Fleurent & Ferland, 1994; Lorena & Lopes, 1996; Lorena & Lopes, 1997, Ulder et al., 1991]. The CGA intents to complement the early successful approaches to CO problems. The algorithm works with an initial population formed only by schemas. The schema theory was for long the central point in classical GA [De Jong, 1975; Goldberg, 1989; Holland, 1975] and less explored in recent years. A schema fails to represent a feasible solution to the coloring problem when some vertices are not yet colored. Proportional fitting is used to evaluate the schema adaptation. At each iteration, the population can increase combining two schemas. The good schemas are preserved on new schemas generated presenting in general more colored vertices. An evolution parameter eliminates some schemas that do not satisfy a permanence criterion, and the better schema found so far is kept. The process finishes with an emptied population or when an iteration limit is reached. The main objective of a CGA is to produce a “highly informed” population after some generations. The process proceeds with some schemas in the current population representing (very) good feasible solutions to the problem. The work is divided in the following sections. Section two presents the foundations of a CGA using a small example for the coloring problem. The next section shows computational tests and some parameter analysis. In section four the graph reduction of independent sets is examined. We conclude in section five with some comments about the origins of the CGA and suggestions for future applications.
2. The Constructive Genetic Algorithm A general view of a classical GA can be described by the pseudo-code: ----------------------------------------------------------------GenAlg t := 0 ; Initialize Pt ; { initial population } Evaluate Pt ; While (not stop condition) do t := t + 1 ; Select Pt from Pt-1 ; { reproduction operator } Recombine Pt ; { crossover and mutation operators } Evaluate Pt ; { evaluate fitness } end_while ------------------------------------------------------------------------------------------Algorithm GenAlg works on a set of variables called structures. For applications to CO problems the first step is the definition of a codification plan that permits a one to one mapping between solutions and structures. A structure is represented by the string si = (si1 , si2 ,..., sin), where n is the number of variables in the problem (for the coloring problem: the number of vertices). The fitness function gives the structure adaptation to the current population. Genetic operators used are the regular selection, like tournament or biased roulette wheel, working together with a number of crossover and mutation operators. The best structure is kept before a predefined number of generations. [De Jong, 1975; Fleurent & Ferland, 1994; Holland, 1975; Levine, 1993; Lorena & Lopes, 1996; Lorena & Lopes, 1997; Tam, 1992]. The basic form of a CGA is: ----------------------------------------------------------------ConstGenAlg α := 0 ; Initialize Pα ; { initial population } Evaluate Pα ; While (not stop condition) do For all sk ∈ Pα satisfying α < δ ( s k ) do { evolution test } α := α + ε ; Select Pα+1 from Pα ; { reproduction operator } Recombine Pα ; { recombination operators } Evaluate Pα ; { evaluate proportional fitness } end_for end_while -------------------------------------------------------------------------------------------
Some steps in algorithm ConstGenAlg are notably different from the classical GenAlg. The ConstGenAlg woks with a dynamic population, that increases after the use of recombination operators and can decrease guided by the evolution parameter α. At the creation time, each structure receives a proportional fitting evaluation and the rank δ ( s k ) used on the evolution test. Another central difference is the directly work with schemas and the new double fitting process. We discuss here a small example to explain the main differences between algorithms GenAlg and ConstGenAlg. Consider the graph G1 = (V1 , E1 ) of figure 1.
3/1
2/#
5/#
1/1
7/2
4/3
6/2 /2/2
Figure 1: Graph G1 and color setting Suppose we decided to color G1 with three colors. In figure 1 the numbers in vertices represent [vertex number/color number], respectively. The structure for the graph coloring represented in figure 1 is si = (1,#,1,3,#,2,2), where sij = 1 or 2 or 3 means that vertex j has the color 1 or 2 or 3, respectively. When sij = # , a color was not assigned to the vertex j , and in that case we call the structure si a schema. When the structure represents a problem solution, it is called complete. The “do not care” symbol # can assume in the future any one of the three colors. The initial population The initial population in ConstGenAlg is formed only by schemas. For each schema, a percentage of vertices receive colors and the others will be colored only in the future, after recombination. For a schema formation, some colored vertices receive random colors. For the coloring problem, the following procedure was used:
-----------------------------------------------------------Ini_pop For p = 1 to n do While i < n While j < k sp[(i+j)mod n]← j + 1; j ← j + 1; end_while; Complete a % of the following vertices with random colors; end_while; end_for. ----------------------------------------------------------------------------------------------------A percentage of random colors is assigned after the attribution of the k colors (3 colors for the example) in sequence. A shift is considered for the next schema until the formation of n (number of vertices) schemas in the initial population. The following could be an initial population for the graph of figure 1: s1 = (1,2,3,2,1#,#,#), s2 = (#,1,2,3,3,2,#), s3 = (#,#,1,2,3,1,1), s4 = (2,#,#,1,2,3,3), s5 = (1,2,#,#,1,2,3), s6 = (3,3,2,#,#,1,2), and s7 = (2,3,2,2,#,#,1). The use of this procedure assure that each vertex receive (in at least one structure) each one of the possible colors, benefiting the formation of complete structures after recombination. We call an initial population P0 . When a vertex is not colored it can be interpreted as out of the problem for the schema considered, working with a subgraph of the original graph instance. The recombination will produce subgraphs of higher dimension or the original graph. We need to evaluate each schema in the initial population, but a schema may not represent a solution to the problem. Schema (1,#,1,3,#,2,2) does not represent a solution for the graph coloring problem using graph G1 . We create then a double fitness procedure for proportional schema evaluation. Evaluation We make population evaluation mapping the current population of structures on ℜ + . Let Pα be the population of structures (schemas or complete structures) at evolution time α (to be explained later), the functions f and g are defined as f : Pα → ℜ + and g : Pα → ℜ + and evaluated such that f (si) ≤ g(si) , for all si ∈ Pα . It is also defined a common upper bound g max > Max g ( si ) . si ∈Pα
Figure 2 shows Pα , f , g and g max .
Figure 2: Representation of a population and double fitting
For the coloring problem the functions used are respectively
(
)
C −1 . C k ip ip , f ( si ) = g( si ) − ∑ E Cip , and g ( si ) = ∑ 2 p =1 p =1 ( n / k − 1). n / k g max = mult. k . . 2 k
( )
Where k is a pre-fixed number of colors, Cip is the set of vertices receiving the color
( )
p on
schema si (the notation Cip is the number of vertices in set Cip ), and E Cip is the set of edges with both terminal vertices in Cip . The expression
(C
ip
)
− 1 . Cip / 2 gives the number of edges of
a complete graph with Cip vertices. Function g(si ) can be interpreted as the total number of edges if k complete graphs of sizes Cip are considered. Function f (si) decreases this number by the number of edges actually linking vertices on the sets Cip . When f (si) = g(si) the k sets Cip are independent sets. To obtain the upper bound g max , first is considered divide the number of vertices n in k sets with approximately the same number of elements ( the expression n / k gives the large integer smaller than n/k ), then the same procedure used for g(si ) is applied, where the positive integer mult is considered to certify that g max > Max g( si ) . si ∈Pα
For our example, Ci1 = {1,3}, Ci 2 = {6,7}, and Ci3 = {4}; g(si) = 2 and f (si) = 1. For mult = 1, g max = 3. Obviously other definitions for functions f and g and for the bound g max are possible here.
Population evolution The double fitting in figure 2 gives bounds for each structure that will be now related with the common upper bound g max . For each structure si there is an associated gap (percentage deviation from g(si )) di =
g ( si ) − f ( si ) , i = 1,..., m. g( si ) k
( )
If d i = 0 (f (si) = g(si)), the absolute deviation d i g(si ) = ∑ E Cip p =1
is null. Suppose now we
admit a percentage deviation from g max . Denoting d this deviation, d g max will be the admitted absolute deviation from g max . We next evaluate a structure comparing the absolute deviations' d i g(si ) and d g max . Using an A* [Pearl, 1985] approach for evaluation, for all si ∈ Pα our goal is the admitted absolute deviation from g max , and the current absolute deviation from g(si ) is d i g(si ) . To reach the goal, an estimate of what we will additionally have in the future as absolute deviation can be given by d [ g max − g( si )] . Then, if d i g(si ) + d [ g max − g ( si )] ≥ d g max the structure si has no future and must be rejected. This expression is equivalent to d i g(si ) ≥ d g(si ) , or simply d i ≥ d . Analyzing this result, observing the population evolution, the simple comparison of d i and d is not representative. When an schema is considered for combination, even presenting d i ≥ d their offspring may present improved evaluations restoring the condition d i < d . So, we consider an evolution parameter α ≥ 0 that modifies the A* expression as d i g(si ) + α . d [ g max − g( si )] ≥ d g max This expression is now equivalent to d i ≥ d {(1-α)[ g max / g(si )] + α}. Only when α = 1 we are comparing if d i ≥ d , and for α = 0 the expression becomes d i ≥ d [ g max / g(si )]. Considering that [ g max / g(si )] ≥ 1, a stronger condition is imposed for structure rejection in the interval 0 ≤ α < 1. It is interesting to note that [ g max / g(si )] >> 1 when g(si ) is small related to g max . That’s what happens in general with schemas. We need to preserve the (good) schemas for combination, then the evolution parameter starts from 0 , increasing slowly in small time intervals ( parameter ε in ConstGenAlg ) from generation to generation. Population P0 is the initial population for α = 0. In general we denote Pα a population at the evolution time α . When α > 1 , even a structure having d i ≤ d may be rejected. Obviously for the coloring problem the ideal situation is d i = 0 for a complete structure.
The parameter α is isolated producing the expression α ≥
dg max − d i g ( s i ) = δ ( si ) . d [ g max − g ( s i )]
At the creation time, each structure (complete or schema) receives the corresponding ratio value δ ( s i ) , and at each iteration it will be compared with the current evolution parameter α . At thecreation moment we know how much time it will survive. Higher the value of δ ( s i ) , the structure will have more surviving time. Analyzing the ratio δ ( s i ) it is immediate to note that schemas more complete ( g(si ) near g max ) and/or presenting small d i will have more time to recombine. Rewriting δ ( s i ) as (1 − d i g( si ) / dg max ) / (1 − g( si ) / g max ) is possible to isolate the effects of d and g max in population size. It is immediate that for small d , the population presents slow increase and maintains of small dimension. A large d may give the storage problems of a large population, but eventually formed by good structures. An undesired effect of g max can also be seen here. When g max >> g(si ) , for a large number of si ∈ S , they all have δ ( s i ) ≅ 1 , and can be eliminated together from generation to the next (after α = 1) . The effect can be an enormous reduction in population size from an evolution time to another. The setting of parameters' d and g max must be the result of careful study. Our stop conditions occur with an emptied population (assured by a sufficiently large α) or at a predefined number of iterations. The population increases after the initial generations, reaching an upper limit (in general controlled by storage conditions), and decreases for higher values of the evolution parameter α . Selection and recombination The structures (completes and/or schemas) in population Pα are non decreasing ordered using the following key 1 + ∑ E (C ip ) k
∆ ( si ) =
p =1
, nv ( s i ) where nv(si) is the number of colored vertices in structure si . A complete structure (nv(si) = n), schemas with n - nv(si) small, and structures presenting small d i are better and come at first order positions. Two structures are selected for combination. The first (s1st ) is random selected on the n first positions in Pα , having the best structures. The second (s2nd ) is random selected considering the total population. The current colors at corresponding vertices are compared. Let snew be the new structure (offspring) resulted after combination.
Five cases are possible here: (i) For each j ∈ {1,...,n} presenting s1st j = # and s2nd j = # set snew j = # ; (ii) for each j ∈ {1,...,n} presenting s1st j = # and s2nd j = p ( p ∈ {1,...,k} ) set snew j = p ; (iii) for each j ∈ {1,...,n} presenting s1st j = p ( p ∈ {1,...,k} ) and s2nd j = # set snew j = p ; (iv) for each j ∈ {1,...,n} presenting s1st j = p ( p ∈ {1,...,k} ) and s2nd j = p set snew j = p ; (v) for each j ∈ {1,...,n} presenting s1st j = p ( p ∈ {1,...,k} ) and s2nd j = q ( q ∈ {1,...,k} ) set snew j = p if
E ( C1stj ) ≤ E ( C2 ndj ) and snew j = q otherwise.
The last case can be seen as a kind of mutation although not a local search. Some local search mutation are subject of current research and will be reported in a future work. For each α value, n new structures are generated and included in the new population Pα +1 .
3. Computational tests The ConstGenAlg was coded in C language, and a Pentium 166 MHz used for running test instances from the literature [Trick, 1996]. The instances can be divided into: • Book graphs (Anna, David, Huck and Jean) - given a literature titlle, a graph is created where each node represents a character. Two nodes are connected by an edge if the corresponding characters encounter each other in the book; • Game graphs (Games 120) - a graph representing the games played in a college football season. The nodes represent each college team. Two teams are connected by an edge if they played each other during the season; • Miles graphs (Miles250, Miles500 and Miles750) - graphs similar to geometric graphs in that nodes are placed in space with two nodes connected if they are close enough; • Register graphs (Musol_1, Musol_2, Zeroin_1 and Zeroin_2) - graphs based on register allocation for variables in real code; • Mycielski graphs [Mycielski, 1955] (Myciel5, Myciel6 and Myciel7) - graphs based on the Mycielski transformation. These graphs are difficult to solve because they are triangle free (clique number 2) but the coloring number increases in problem size; • Queen graphs (Queen55 and Quenn66) - given an n by n chessboard, a queen graph is a graph on n 2 nodes, each corresponding to a square of the board. Two nodes are connected by an edge if the corresponding squares are in the same row, column or diagonal. Book graphs, game graphs, miles graphs and queen graphs are from Donald Knuth’s Stanford GraphBase [Trick, 1996]. All the instances can be obtained from M. Trick’s home page [Trick, 1996]. Table 1 gives the computational results. The column named “colors” shows the known k-coloring number for the instances. All running tests were made looking for these numbers. If for some instance the exact number of colors was unknown a number supposed to be greater than k is tried at first time. If successful a smaller number must be tried, and so on. The total number of generations appears in the following column. The next column shows if the problem is solved or
not, and the last column the computational times. All but three problems are solved in at most 6637 seconds. The instances not solved resulted with very small number of conflicts.
Instances
Vertices
Edges
Colors
Iterations
k
∑
p =1
Anna David Huck Jean Games120 Miles250 Miles500 Miles750 Mulsol_1 Mulsol_2 Zeroin_1 Zeroin_2 Myciel5 Myciel6 Myciel7 Queen55 Queen66
138 87 74 80 120 128 128 128 197 188 211 211 47 95 191 25 36
493 11 46 406 11 62 301 11 12 254 10 12 638 9 55 387 8 74 1170 20 322 2113 31 296 3925 49 42 3885 31 48 4100 49 84 3541 30 67 236 6 23 755 7 170 2360 8 295 160 5 725 290 7 251 Table 1: results for coloring.
( )
E C ip
0 0 0 0 0 0 0 2 0 0 0 0 0 0 2 0 4
Times (sec.) 108 44 5 6 91 142 2610 4703 114 2377 6637 4893 1 122 4433 42 10
The parameters used for the tests are: d = 0.1 , mult = 3 , and ε = 0.05 for 0 ≤ α ≤ 1 and 0.025 for α > 1. They resulted after a detailed analysis reported on Ribeiro Filho’s master thesis [Ribeiro Filho, 1996]. We examine now a graphical resume of the experiment with the larger instance in test bed, the Zeroin_1 instance. Figure 3 shows the sizes of populations Pα at corresponding generations (84 generations). The large population was P0.9 , with almost 4000 structures. Figure 4 gives the size in number of vertices of the largest subgraph by generation. After generation 5 , at least one structure is complete. Figure 5 gives the minimization of conflicts by generation. The algorithm stopped with an optimal solution in this case.
P o p u l a ti o n
G e n e r a ti o n
Figure 3: Population evolution.
N od es
G e n e r a tio n
Figure 4: Large subgraph evolution.
C o n flic ts
G e n e ra tio n
Figure 5:Number of conflicts evolution.
4. Maximum Independent Sets The k-coloring problem can be described as the problem of identify k independent sets on the graph instance. We describe in this section some preliminary tests made for size reduction of a large scale random graph. The graph considered is denoted by G2 (V2 , E2 ) , having 100 vertices and 2487 edges, and were used in the works of Fleurent and Ferland [Fleurent & Ferland, 1994; Fleurent & Ferland, 1995]. We begin looking for the largest maximal independent subset of V2 . Let C1 be this set, then we can subtract the vertices in C1 from V2 and the edges with end point vertices in C1 from E2 . The first color is assigned to the vertices in C1 . We proceed looking for the maximum independent set on the resulting subgraph, and so on. The ConstGenAlg for coloring described later is then applied on a final resulted graph of small size. The Maximum Independent Set (MIS) is also a difficult NP-hard problem [Garey & Johnson, 1978]. The same ConstGenAlg is adapted to MIS problems. A schema si is can be denoted by the string si = (1,#,1,1,#,1,1), where sij = 1 or # for each j ∈ {1,...,n}. Here a difference from the coloring approach arises. We don’t need a complete schema to be a MIS solution. Any schema presenting E ( Ci1 ) = 0 is a solution, although in general not maximal. The initial population was generated using an adaptation of procedure Ini_pop described in section 2. The functions f , g , and parameter g max are defined as g( si ) =
(C
i1
)
− 1 . Ci1 2
,
f ( si ) = g ( si ) − E ( Ci1 ) , and g max = mult.
[n / χ − 1]. n / χ . 2
Where χ is an estimate for the chromatic number of the current instance. For selection, the schemas in population Pα are non decreasing ordered using the following key ∆( si ) =
1 + E ( Ci1 ) Ci1
.
The recombination is guided by the schema conservation. Two structures are selected for combination. The first (s1st ) is random selected on the n first positions in Pα , having the best structures. The second (s2nd ) is random selected on the total population. Let snew a new structure (offspring) resulted after combination. For each j ∈ {1,...,n} , if s1st j = 1 then snew j = 1 , and for each s1st j = # and s2nd j = 1 (j = 1,...,n), a different offspring is generated making the corresponding snew j = 1.
The computational results for graph G2 are reported in table 2 (for d = 0.1). Three replications of ConstGenAlg are made before each reduction. The first column gives the number of vertices before reduction. The number of vertices in G2 is reduced from 100 to 46. Best MSI Vertices 1 2 100 7 7 93 6 6 85 7 6 78 5 8 70 6 6 63 6 6 57 6 5 51 5 5 46 Table 2: MIS reduction
3 7 6 7 6 7 6 6 5 -
The random graph G2 have 15 as an expected coloring number [Fleurent & Ferland, 1994], and 8 colors are already used. Then, after reduction we start using the ConstGenAlg for the coloring
∑ E(C k
problem on the resulted subgraph, looking for k = 7. If the number of conflicts
p=1
ip
)
is greater
than 0, a greater k must be tried. Table 3 shows the results.
∑ E(C k
Best
p=1
Vertices 46 46 46 46 46
k 1 2 7 48 8 36 9 16 10 1 6 11 8 0 Table 3: Coloring G2
ip
) 3 5 -
Three replications of the ConstGenAlg were made, but the two extras were conducted only when the number of conflicts is smaller than 10 in the first one. Eleven (11) colors were needed and must be added to the 8 colors already assigned, resulting in 19 colors for coloring G2 . As an interesting comparison we used the ConstGenAlg directly on G2 looking for k = 19. The best solution resulted with 69 conflicts, showing the effectiveness of MIS reduction for G2 . We think these results can be very improved using mutation local searches.
5. Conclusion We presented in this work a new constructive heuristic using genetic algorithms and A* concepts. The key features are the direct work with schemas and proportional fitting evaluation that provides long surviving time for good schemas. An evolution parameter makes control of population evolution, and best structures are preserved seeking for a predefined proportional deviation. The CGA ideas started in the work of Lorena and Lopes [Lorena & Lopes, 1996], followed by the works of Furtado [Furtado, 1996] and Ribeiro Filho [Ribeiro Filho, 1997]. Furtado is giving formalism to the CGA theory as a doctorate thesis proposal, having reached good results applying the CGA to p-median problems, where the introduction of local search mutations was considered. Ribeiro Filho presented an application of the CGA to graph coloring and maximum independent sets on his master thesis [Ribeiro Filho, 1997]. Some experiments are in course considering local search mutation in CGA for graph coloring using large-scale instances. Results are promising and will be reported in a future work.
Acknowledgments: The first author acknowledges the partial support of CNPq - projects number 520844/96-3, 680082/95-6 and from FAPESP projetc number 95/9522-0.
References [1] Brélaz, D. (1979) New methods to color the vertices of a graph. Communications of the ACM 22(4):251-256. [2] Briggs, P.; Cooper, K.; Kennedy, K. and Torczon, L. (1989) Coloring heuristics for register allocation. In ASCM Conference on Program Language Design and Implementation, pp.275-284. [3] Chams, M.; Hertz A.and Werra, D. (1987) Some experiments with simulated annealing for coloring graphs. European Journal of Operations Research 32:260-266. [4] Costa, D. and .Hertz, A. (1996) Ants can color graphs. Journal of the Operational Society 47:111. [5] De Jong, K. A. (1975) Analysis of the behaviour of a class of genetic adaptive systems. Ph.D. Dissertation - Department of Computer and Communication Sciences - University of Michigan , Ann Arbor. [6] de Werra, D. (1985) An introduction to timetabling. European Journal of Operational Research 19(2):151-162. [7] de Werra, D (1990) Heuristics for Graph Coloring. In Computational Graph Theory, ed. Tinhofer, G. ; Mayr, E. ; Noltemeier, H. and Syslo, M., Springer-Verlag , Berlin, pp.191-208. [8] Fleurent, C. and Ferland, J. A. (1994) Genetic and Hybrid Algorithm for Graph Coloring, Technical report - Université de Montréal. [9] Fleurent, C. and Ferland, J. A. (1995) Object-oriented implementation of heuristic search methods for graph coloring, maximum clique, and satisfiability. In David S. Johnson and Michael A. Trick, editors. Cliques, Coloring, and Satisfiability: Second DIMACS Implementation Challenge, DIMACS Series in Discrete Mathematics and Theoretical Computer Science. [10] Friden, C.; Hertz, A. and de Werra, D. (1989) STABULUS: A technique for finding stable sets in large graphs with tabu search. Computing 42:35-44, 1989. [11] Furtado, J. C. (1996) Uma Nova Heurística Construtiva e sua Aplicação a Problemas de Otimização Combinatória. Proposta de tese de doutorado em Computação Aplicada - INPE. [12] Gamst, A. (1986) Some lower bounds for a class of frequency assignment problems. IEEE Transactions of Vehicular Technology 35 (1):8-14. [13] Garey, M. R. and Johnson, D. S. (1978) Computers and Intractability: a Guide to the Theory of NP-Completeness. San Francisco, W. H. Freemann. [14] Goldberg, D. E. (1989) Genetic Algorithms in Search, Optimization and Machine Learning. Addison Wesley, New York. [15] Hale, W. K. (1980) Frequency assignment: Theory and applications. Proceedings of the IEEE 68(12):1497-1514.
[16] Hertz A. and Werra, D. (1987) Using tabu search techniques for graph coloring. Computing 39:345-351. [17] Holland, J. H. (1975) Adaptation in Natural and Artificial Systems. The University of Michigan Press. , Ann Arbor. [18] Johnson, D. S.; Aragon, C. R. ; McGeoch, L. A. and Schevon, C. (1991) Optimization by simulated annealing: An experimental evaluation; part II, graph coloring and number partitioning. Operations Research 39(3):378-406. [19] Korman, S. M. (1979) The graph-coloring problem. In Christofides, N. ; Mingozzi, A.; Toth, P. and Sandi, C. editors, Combinatorial Optimization: 211-235. JohnWiley & Sons, Inc., New York. [20] Leighton, F. T. (1979) A graph coloring algorithm for large scheduling problems. Journal of Research of the National Bureau of Standards 84: 489-506. [21] Levine, D. M. (1993) A genetic algorithm for the set partitioning problem. In Proceedings of the 5th International Conference on Genetic Algorithms , pp. 481-487. [22] Lorena, L.A.N. and Lopes, F.B. (1996) A Dynamic List Heuristic for 2D-Cutting. In System Modelling and Optimization, ed. Dolezal, J. and Fidler, J., Chapman & Hall, London, pp. 481-488. [23] Lorena, L.A.N. and Lopes, L.S. (1996) Computational Experiments with Genetic Algorithms Applied to Set Covering Problems. Pesquisa Operacional 16: 41-53. [24] Lorena, L.A.N. and Lopes, L.S. (1997) Genetic Algorithms Applied to Computationally Difficult Set Covering Problems. Journal of the Operational Research Society 48, 440-445. [25] Mycielski, J. (1955) Sur le coloriage des graphs. Colloquium Mathematicum 3(2):161-162. [26] Pearl, J. (1985) Heuristics: Intelligent search strategies for computer problem solving AddisonWesley, New York. [27] Ribeiro Filho, G. (1996) Uma heurística Construtiva para Coloração de Grafos. Master thesis, INPE. [28] Trick, M. A. (1996) Clique and Coloring Problems, a Brief Introduction with Project Ideas. http://mat.gsia.cmu.edu/COLOR/general/ccreview/ccreview.html. [29] Tam, K. Y. (1992) Genetic algorithm, function optimization and facility layout design. European Journal of Operational Research 63:322-240. [30] Ulder, N. L. J. ; Aarts, E. H. L. ; Bandelt, H.-J. ; vanLaarhoven, P. J.M.and Pesch, E (1991) Genetic local search algorithms for the traveling salesman problem. In H.-P. Schwafel and R. Manner, editors, Springer-Verlag, Proceedings 1st International Workshop on Parallel Problem Solving from Nature, Lecture Notes in Computer Science 496: 109-116.