<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A complete algorithm to solve the graph-coloring problem</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Huberto Ayanegui</string-name>
          <email>hayanegui@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Alberto Chavez-Aragon</string-name>
          <email>albertochz@gmail.com</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Facultad de Ciencias Basicas, Ingenieria y Tecnologia, Universidad Autonoma de Tlaxcala</institution>
          ,
          <addr-line>Calzada de Apizaquito s/n, Apizaco, Tlaxcala</addr-line>
          ,
          <country country="MX">Mexico</country>
        </aff>
      </contrib-group>
      <abstract>
        <p>The Graph k-Colorability Problem (GCP) is a well known NP-hard problem which consist in finding the k minimum number of colors to paint the vertices of a graph in such a way that any two vertices joined by an edge have always different colors. Many years ago, Simulated Annealing (SA) was used for graph coloring task obtaining good results; however SA is not a complete algorithm and it not always gets the optimal solution. In this paper GCP is transformed into the Satisfiability Problem and then it is solved using a algorithm that uses the Threshold Accepting algorithm (a variant of SA) and the Davis &amp; Putnam algorithm. The new algorithm is a complete one and so it gets better quality that the classical simulated annealing algorithm.</p>
      </abstract>
      <kwd-group>
        <kwd>graph coloring</kwd>
        <kwd>simulated annealing</kwd>
        <kwd>threshold accepting</kwd>
        <kwd>davis &amp; putnam</kwd>
      </kwd-group>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1 Introduction</title>
      <p>
        Let G=(V,E) be a graph where V is a set of vertices and E is a set of edges. A
kcoloring of G is a partition of V into k sets {V1, …, Vk}, such that no two vertices in
the same set are adjacent, i.e., if v, w belong to Vi, 1 i k, then (v, w) not belong to
E. The sets {V1, …, Vk} are referred to as colors. The chromatic number, x(G), is
defined as the minimum k for which G is k-colorable. The Graph k-Colorability
Problem (GCP) can be stated as follows. Given a graph G, find x(G) and the
corresponding coloring. GCP is a NP-hard problem [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ].
      </p>
      <p>
        GCP is very important because it has many applications; some of them are
planning and scheduling problems [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ][
        <xref ref-type="bibr" rid="ref3">3</xref>
        ], timetabling [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], map coloring [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] and many
others. Since GCP is a NP-hard problem, until now there are not known deterministic
methods that can solved it in a polynomial time [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ]. So non-deterministic algorithms
have been built to solve it; one of them is Simulated Annealing (SA) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] that has been
used on GCP with good results [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ][
        <xref ref-type="bibr" rid="ref8">8</xref>
        ]. However, SA is not a complete algorithm and
it not always gets the optimal solution.
      </p>
      <p>
        The approach used in this paper is to transform GCP into a Satisfiability Problem
(or SAT problem) [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ] and then use the algorithm proposed in this paper. We propose
to use iteratively the Threshold Accepting (TA) algorithm (a variant of Simulated
Annealing) [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] and then a Davis and Putnam algorithm [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
    </sec>
    <sec id="sec-2">
      <title>2 Simulated annealing and threshold accepting</title>
      <p>
        Simulated annealing (SA) [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ] is a stochastic computational technique derived from
statistical mechanics to find near global-minimum-cost solutions to large optimization
problems. In many instances, finding the global minimum value of an objective
function with many degrees of freedom subject to conflicting constraints is an
NPcomplete problem, since the objective function will tend to have many local
minimums. A procedure for solving optimization problems of this type should sample
the search space in such a way that it has a high probability of finding the optimal or a
near-optimal solution in a reasonable time. Over the past decade, SA has proven to be
a powerful technique that meets these criteria for a wide range of problems. SA
exploits an analogy between the way a metal cool and freezes into a minimum energy
crystalline structure (the annealing process) and the search for a minimum in a more
general system. SA makes a random search which not only accepts changes that
increase its cost function f, but also some that decrease it. For this reason, SA uses a
control parameter c, which by analogy with the original application is known as the
“System Temperature”, c starts out high and gradually decreases.
      </p>
      <p>A deteriorating random move from solution Si to Sj is accepted with a probability
exp-(f(Sj)-f(Si))/c. If this move is not deteriorating (the new solution Sj is better than the
previous one Si) then it is accepted and a new random move is proposed again. When
the temperature is high, a bad move can be accepted. As c tends to zero, SA becomes
more demanding through accept just better moves. The algorithm for minimization is
shown below:</p>
      <sec id="sec-2-1">
        <title>Procedure SIMULATED ANNEALING</title>
      </sec>
      <sec id="sec-2-2">
        <title>Begin</title>
        <p>INITIALIZE(Si=initial_solution,
c=initial_temperature)
k = 0</p>
      </sec>
      <sec id="sec-2-3">
        <title>Repeat</title>
      </sec>
      <sec id="sec-2-4">
        <title>Repeat</title>
        <p>Sj = PERTURBATION(Si)
If COST(Sj) &lt;= COST(Si) Then</p>
        <p>Si = Sj</p>
      </sec>
      <sec id="sec-2-5">
        <title>Else If exp(-INC_COST/c) &gt; random[0,1) Then</title>
        <p>Si = Sj</p>
      </sec>
      <sec id="sec-2-6">
        <title>Until stochastic equilibrium k = k + 1 c = COOLING(c)</title>
      </sec>
      <sec id="sec-2-7">
        <title>Until thermal equilibrium End</title>
        <p>The INITIALIZE function starts the initial solution Si and the initial temperature c.
The PERTURBATION function makes a random perturbation from Si to generate a
neighborhood solution Sj. The COST function gets the cost from a solution. The
INC_COST function gets the difference in cost between Sj and Si. Finally, the
COOLING function decreases the actual temperature parameter c.</p>
        <p>
          A variant of Simulated Annealing (SA) is the Threshold Accepting method (TA). It
was designed by Dueck &amp; Scheuer [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ] in order to get a more efficient algorithm than
Simulated Annealing. The principal difference, between SA and TA, is the
mechanism of accepting the solution randomly chosen from the set of neighbors of
the current solution. While SA uses a probabilistic model (see equation (1)), TA uses
a static model: if the difference between the cost values of the chosen solution Sj and
the current one Si is smaller than a threshold T (or temperature), TA accepts moving
to the chosen solution. Otherwise it stays at the current solution. Again, the threshold
parameter T is a positive control parameter which decreases with increasing number
of iterations and converges to value near to 0. Henceforth, in every iteration some
solution deterioration are allowed; this deterioration depends on the current threshold
T (see equation (2)); in this way only improving solutions with almost none
deterioration solution are accepted at the end of the process.
        </p>
        <p>p(S1, S2) = exp(min{f(S1)-f(S2), 0}/c)
COST(Sj) &lt; COST(Si) +T  accept Sj
(1)
(2)</p>
        <p>For SAT problems, using a good tune method Threshold Accepting yields better
results than Simulated Annealing. This could be because TA does not compute the
probabilistic function (1) and does not expend a lot of time making random decisions.
The Threshold Accepting algorithm for minimization is the following:</p>
      </sec>
      <sec id="sec-2-8">
        <title>Procedure THRESHOLD ACCEPTING</title>
      </sec>
      <sec id="sec-2-9">
        <title>Begin</title>
        <p>INITIALIZE (Si = initial_solution,</p>
        <p>T = initial_threshold or temperature)
k = 0</p>
      </sec>
      <sec id="sec-2-10">
        <title>Repeat</title>
      </sec>
      <sec id="sec-2-11">
        <title>Repeat</title>
        <p>Sj = PERTURBATION(Si)
E = COST(Sj) – COST(Si)</p>
      </sec>
      <sec id="sec-2-12">
        <title>If E &lt; T Then</title>
        <p>Si = Sj</p>
      </sec>
      <sec id="sec-2-13">
        <title>Until stochastic equilibrium</title>
        <p>k = k + 1</p>
        <p>T = DECREASE_THRESHOLD(T)</p>
      </sec>
      <sec id="sec-2-14">
        <title>Until Thermal Equilibrium End</title>
        <p>
          Here, the DECREASE_THRESHOLD function is equivalent to the COOLING
function in SA and the threshold T is named “temperature” in order to make more
evident that TA belongs to Simulated Annealing Like Algorithms class (SALA).
SALA uses Simulated-annealing approach with two main loops: internal loop named
Metropolis Cycle and external loop called Temperature Cycle. Number of iterations
in internal and external loop usually are tuned experimentally [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ], [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. However,
recently an analytical method using a Markov model was proposed to tune TA solving
SAT problems.
        </p>
        <p>External loop executed from a initial temperature Ti until a final temperature Tf and
the internal loop builds a Markov chain of length Lk which depends on the
temperature value Tk (k represents the sequence index in Temperature cycle). A strong
relation exists between Tk and Lk in a way that:</p>
        <p>If Tk
, Lk
0 and if Tk
0, Lk
.</p>
        <p>(3)</p>
        <p>Due to TA is applied through a neighborhood structure, V, (PERTURBATION
function makes a random perturbation from Si to generate a neighborhood solution Sj),
the maximum number of different solutions that can be rejected from Si is the size of
its neighborhoods, |VSi|. Then the maximum length of a Markov chain in a TA
algorithm is the number of samples that must be taken in order to evaluate an
expected fraction of different solutions from VSi at the final temperature Tf, this is:</p>
        <p>Lf = C|VSi| .
where C varies from 1 C 4.6 (exploration from 63% until 99%), Lf is the length of
the Markov chain at Tf.</p>
        <p>
          From (3), Lk must be incremented in a similar but inverse way that Tk is
decremented. Then for the geometric reduction cooling function used by Kirkpartick
[
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] , and Dueck and Scheuer [
          <xref ref-type="bibr" rid="ref9">9</xref>
          ],
(4)
(5)
(6)
(7)
the incremental Markov chain function must be:
where
        </p>
        <p>Tk+1 = Tk.</p>
        <p>Lk+1 = Lk.</p>
        <p>= exp((ln Lf – ln Li) / n).</p>
        <p>Here, Li is the length of the Markov chain at Ti, usually Li = 1, and n is the number of
temperature steps from Ti to Tf through (5).</p>
        <p>Now, the maximum and minimum cost increment produced through the
neighborhood structure are:</p>
        <p>ZVmax = Max{COST(Sj) – COST(Si)}.</p>
        <p>ZVmin = Min{COST(Sj) – COST(Si)}.
(8)
(9)
(10)
(11)
for all Sj VSi, and for all Si S</p>
        <p>Then Ti and Tf must be calculated as:</p>
        <p>Ti = ZVmax .</p>
        <p>Tf</p>
        <p>ZVmin .</p>
        <p>This way of determining the initial temperature enable TA to accept any possible
transition at the beginning of the process, since Ti is set as the maximum deterioration
in cost that may be produced through the neighborhood structure. Similarly, Tf
enables TA to have control of the climbing probability until the algorithm
performs a greedy local search.</p>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>3 Davis &amp; Putnam Method</title>
      <p>
        Satisfiablity Problem [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ] (or SAT) is very important in complexity theory.
      </p>
      <p>Let be a propositional formula like formula (12):</p>
      <p>F = F1 &amp; F2 &amp; … &amp; Fn
(12)
where every Fi is a disjunction.</p>
      <p>Every Fi is a disjunction of propositional formulas such as X1 v X2 v..v Xr. Every
Fi is a clause and every Xj is a literal. Every literal can take a truth value (0 or false, 1
or truth). In Satisfiability problem a set of values for the literals should be found, in
such a way that the evaluation of (12) be true; otherwise if (12) is not true, we say that
F is unsatisfiable. Besides we say that (12) is in Conjunctive Normal Form or CNF.</p>
      <p>
        The Davis &amp; Putnam method is widely regarded as one of the best deterministic
methods for deciding the satisfiability [
        <xref ref-type="bibr" rid="ref11">12</xref>
        ] of a set of propositional clauses [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. It is
also a complete resolution method. This procedure calls itself after rewriting the input
formula according to a number of rules for generating a smaller formula with the
same truth value. The rules used for the Davis &amp; Putnam method are:
Rule 1: if the input formula has no clauses, then it is satisfiable
Rule 2: if it has a clause with no literals, it is unsatisfiable
Rule 3:if it has a clause with exactly one literal, then make the literal true and
rewrite the formula accordingly
Rule 4:if some variable appear only positively or negatively, then pick one such
variable and assign a value to it to make the literal true, and rewrite the
formula accordingly
      </p>
      <p>If none rule could be applied, one picks up an arbitrary variable as a branching
point and two new formulas are derived by assigning 0 and 1 to this variable. If one of
the calls returns with the positive answer the input is satisfiable; otherwise, it is
unsatisfiable.</p>
      <p>The Davis &amp; Putnam algorithm is shown below:</p>
      <sec id="sec-3-1">
        <title>Function DAVIS-PUTNAM(In formula : clauses list)</title>
      </sec>
      <sec id="sec-3-2">
        <title>Begin</title>
        <p>REDUCE(formula, vreduce)</p>
      </sec>
      <sec id="sec-3-3">
        <title>If formula is empty Then</title>
        <p>Return vreduce</p>
      </sec>
      <sec id="sec-3-4">
        <title>Else If formula has a clause with no literals Then</title>
      </sec>
      <sec id="sec-3-5">
        <title>Return fail</title>
      </sec>
      <sec id="sec-3-6">
        <title>Else</title>
      </sec>
      <sec id="sec-3-7">
        <title>Choose a literal V from formula</title>
        <p>valuation=DAVIS-PUTNAM(SUBSTITUTION(true,V,
formula))
If valuation != fail Then
Return ADD(V=true, vreduce, valuation)
valuation=DAVIS-PUTNAM(SUBSTITUTION(false,V,
formula))
If valuation != fail Then</p>
        <p>Return ADD(V=false, vreduce, valuation)</p>
      </sec>
      <sec id="sec-3-8">
        <title>Return fail</title>
      </sec>
      <sec id="sec-3-9">
        <title>Endif</title>
      </sec>
      <sec id="sec-3-10">
        <title>End DAVIS-PUTNAM</title>
      </sec>
      <sec id="sec-3-11">
        <title>Function SUBSTITUTION (TF, V, formula)</title>
      </sec>
      <sec id="sec-3-12">
        <title>Begin</title>
      </sec>
      <sec id="sec-3-13">
        <title>For Each one clause C In formula Do If [C contain V and TF=true]or [C contain ~V and TF=false] Then delete C from formula</title>
        <p>Else If [C contain V and TF=false]or
[C contain ~V and TF=true] Then
delete V from C</p>
      </sec>
      <sec id="sec-3-14">
        <title>Endif</title>
      </sec>
      <sec id="sec-3-15">
        <title>Endfor</title>
        <p>Return formula</p>
      </sec>
      <sec id="sec-3-16">
        <title>End_SUBSTITUTION</title>
      </sec>
      <sec id="sec-3-17">
        <title>Function REDUCE(In Out: formula, vreduce)</title>
      </sec>
      <sec id="sec-3-18">
        <title>Begin</title>
        <p>vreduce = empty</p>
      </sec>
      <sec id="sec-3-19">
        <title>While exists clause C In formula with exactly one literal L</title>
      </sec>
      <sec id="sec-3-20">
        <title>If L is positive variable V Then</title>
        <p>formula = SUBSTITUTION(true, V, formula)
vreduce = CONS(V=true, vreduce)</p>
      </sec>
      <sec id="sec-3-21">
        <title>Else If L is negative variable V Then</title>
        <p>formula = SUBSTITUTION (false, V , formula)
vreduce = CONS(V=false, vreduce)</p>
      </sec>
      <sec id="sec-3-22">
        <title>Endif</title>
      </sec>
      <sec id="sec-3-23">
        <title>Endwhile</title>
      </sec>
      <sec id="sec-3-24">
        <title>Return(formula)</title>
      </sec>
      <sec id="sec-3-25">
        <title>End_REDUCE</title>
        <p>The DAVIS-PUTNAM function is the main function and it selects randomly a
literal to set a true a group of values in order to create unitary clauses. If that true set
values is not the correct solution the complement set of true values is tried. If the new
assignment is neither a satisfiable solution, then the formula is unsatisfiable.</p>
        <p>The function SUBTITUTION makes the propagation of one literal over all the
clauses in formula, deleting clauses where occurs the positive literal L and its value is
1 (true). Therefore the clauses where ~L occurs can delete that literal.</p>
        <p>The REDUCE function carries out the search of unitary clauses, so that it can be
possible propagate through the function SUBSTITUTION.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4 Graph Coloring through Accepting and Davis &amp; Putnam</title>
      <p>Informally coloring a graph with k colors or Graph k-Colorability Problem (GCP) is
stated as follows: Is it possible to assign one of k colors to each node of a graph
G=(V,E), such that no two adjacent nodes be assigned the same color? If answer is
positive we say that the graph is k-colorable and k is the chromatic number x(G). It is
possible to transform Graph k-Colorability Problem (GCP) into Satisfiability problem
(SAT); that means that for a given graph G=(V,E) and a number k, it is possible to
derive a CNF formula F such that F is satisfiable only in the case that G is
kcolorable. The formulation of GCP as SAT is made assigning X Boolean variables as
follow:
1) Take every node and assign a Boolean variable Xij for every node i and color
j; the disjunction of all these variables. In this way every node will have
at least one color. Therefore, in the case of figure 1, we have the clauses:
2) To avoid the fact that a node has more that one color, add the formula Xij 
~Xik
3) In order to be sure that two nodes (Vi,Vj) connected with an arc have different
colors, add a clause such that if Vi has color k, Vj should not be color with this color.
This clause is writing as Xik ~Xjk.
4) In order to know which nodes are connected with an edge, an adjacent matrix A of
the graph is needed; its elements are:</p>
      <p>Aij =
1
0
if i is connected with j
otherwise</p>
      <p>The reduction of a graph to the Conjunctive Normal Form (CNF) generates so
many clauses even for small graphs. For example, for a full graph with 7 nodes (42
edges), 308 clauses with 98 literals can be generated. If we use Davis &amp; Putnam
algorithm to color a graph, we could start coloring with R colors (the graph’s degree
or from a number given). If it is not possible to color it, then we can increase R and
try again.</p>
      <p>Due to find a large chromatic number x(G) is a very hard task for a complete
method as Davis &amp; Putnam (it demands many resources), we need an incomplete
method to help in this task. For this reason we have chosen the Threshold Accepting
method. TA will search the chromatic number, but as it is known TA not always get
the optimal solution. By this reason, the number found by TA is send to a Davis &amp;
Putnam procedure, and this one will get the optimal solution. The complete process is
shown in the figure 2.</p>
      <p>Any graph can be colored with Gmax+1 colors, where Gmax represents the
graph degree. For this reason, TA will try coloring with Gmax colors. If TA gets a
success, then TA will try to color with Gmax-1, and so on. When TA finishes, it sends
to the output the minimum k of colors founded. In other case, when TA can not color
with Gmax colors, then it will send k=Gmax+1 to Davis &amp; Putnam procedure.</p>
      <p>Davis &amp; Putnam will attempt to decrease the value of k through binary
partitions. The first attempt, Davis &amp; Putnam will choose the number of colors given
by (1+k)/2. If the coloring is right, it will color with (1+(1+k)/2)/2 colors, i.e., the left
half. Otherwise, the algorithm will color with ((1+k)/2+k)/2 colors, the right half. This
process continues until Davis &amp; Putnam cannot decrease k. So, the chromatic number
was found. This situation is shown in figure 2.</p>
      <p>The figure 3 shows an example where TA found the number nine as its
better solution and it is send to Davis &amp; Putnam procedure. When Davis &amp;
Putnam takes the last TA solution, using binary partitions and other rules the
optimal solution is waited. For example in the case of the figure 3, if Davis &amp;
Putnam can not color with five colors, it moves to other alternative, trying
with seven colors. Finally, in the last partition, i.e. (7+9)/2, can not color the
graph and so the result is a chromatic number equal to nine.</p>
    </sec>
    <sec id="sec-5">
      <title>5 Conclusion</title>
      <p>In this paper we presented an algorithm based on Threshold Accepting and Davis &amp;
Putnam, to solve the Graph k-Colorability Problem. Because this problem is an
NPhard problem there is not a known deterministic efficient (polinomial) method.
Nondeterministic methods are in general more efficient but an optimal solution is not
guarantee. This method is a new alternative that promises to be more efficient that the
previous ones. The main contributions of this paper are enumerated below. 1) We
proposed a way to transform the graph k-colorability problem into a satisfiability
problem. 2) In order to solve the former problem we proposed a new approach which
makes use of the threshold accepting and Davis &amp; Putnam algorithms. 3) The
resulting algorithm is complete and using it we can get better results that the
wellknown simulated annealing algorithm.</p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Garey</surname>
            ,
            <given-names>M. R.</given-names>
          </string-name>
          and Johnson, D. S.,
          <article-title>Computers and Interactability: A Guide to the Theory of NP-Completeness</article-title>
          , Freeman, San Francisco,
          <year>1979</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Stecke</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Design</surname>
            <given-names>Planning</given-names>
          </string-name>
          ,
          <article-title>Scheduling and Control Problems of Flexible Manufacturing</article-title>
          ,
          <source>Annals of Operations Research</source>
          , Vol.
          <volume>3</volume>
          ,
          <issue>1985</issue>
          , pp.
          <fpage>3</fpage>
          -
          <lpage>12</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Leighton</surname>
            ,
            <given-names>F. T.</given-names>
          </string-name>
          ,
          <article-title>A Graph Coloring Algorithm for Large Scheduling Problems</article-title>
          ,
          <source>J. Res. Nat. Bur. Standard</source>
          , Vol.
          <volume>84</volume>
          , No.
          <volume>6</volume>
          ,
          <issue>1979</issue>
          , pp.
          <fpage>489</fpage>
          -
          <lpage>506</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Wood</surname>
            ,
            <given-names>D. C.</given-names>
          </string-name>
          ,
          <article-title>A Technique for Coloring a Graph Applicable to Large Scale Timetable Problems</article-title>
          ,
          <source>Computer Journal</source>
          , Vol.
          <volume>12</volume>
          ,
          <year>1969</year>
          , pp.
          <fpage>317</fpage>
          -
          <lpage>322</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Brelez</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          , New Methods to Color Vertices of a Graph,
          <source>Comm. ACM</source>
          , Vol.
          <volume>22</volume>
          ,
          <year>1979</year>
          , pp.
          <fpage>251</fpage>
          -
          <lpage>256</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Kirkpatrick</surname>
            ,
            <given-names>S</given-names>
          </string-name>
          , Gelatt,
          <string-name>
            <given-names>C.D.</given-names>
            ,
            <surname>Vecchi</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.P.</surname>
          </string-name>
          , Optimization by Simulated Annealing, Science, No.
          <volume>220</volume>
          ,
          <year>1983</year>
          , pp.
          <fpage>671</fpage>
          -
          <lpage>680</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Chams</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Hertz</surname>
          </string-name>
          and
          <string-name>
            <surname>D. de Werra</surname>
          </string-name>
          ,
          <article-title>Some Experiments with Simulated Annealing for Coloring Graphs</article-title>
          ,
          <source>European Journal of Operational Research</source>
          , Vol.
          <volume>32</volume>
          ,
          <year>1987</year>
          , pp.
          <fpage>260</fpage>
          -
          <lpage>266</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Johnson</surname>
            ,
            <given-names>D.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Aragon</surname>
            ,
            <given-names>C.R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>McGeoch</surname>
            ,
            <given-names>L.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schevon</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          ,
          <article-title>Optimization by Simulated Annealing: An Experimental Evaluation; Part II: Graph Coloring</article-title>
          and
          <string-name>
            <given-names>Number</given-names>
            <surname>Partitioning</surname>
          </string-name>
          ,
          <string-name>
            <surname>Oper. Res.</surname>
          </string-name>
          ,
          <source>No. 39</source>
          ,
          <year>1991</year>
          , pp.
          <fpage>378</fpage>
          -
          <lpage>406</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <given-names>Dueck</given-names>
            <surname>Gunter</surname>
          </string-name>
          , Scheuer Tobias, Threshold Accepting:
          <string-name>
            <given-names>A General</given-names>
            <surname>Purpose Optimization Algorithm Appearing</surname>
          </string-name>
          <article-title>Superior to Simulated Annealing</article-title>
          .
          <source>Journal of Computational Physics, No. 90</source>
          ,
          <year>1990</year>
          , pp.
          <fpage>161</fpage>
          -
          <lpage>175</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <given-names>M.</given-names>
            <surname>Davis</surname>
          </string-name>
          and
          <string-name>
            <given-names>H.</given-names>
            <surname>Putnam</surname>
          </string-name>
          ,
          <article-title>A Computing Procedure for Quantification Theory</article-title>
          .
          <article-title>Journal of the Association for Computing Machinery</article-title>
          , Vol.
          <volume>7</volume>
          , No.
          <volume>1</volume>
          ,
          <issue>1960</issue>
          , pp.
          <fpage>201</fpage>
          -
          <lpage>215</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          12. Science and Technology Center in Discrete Mathematics and Theoretical Computer Science, “
          <article-title>Satisfiability Problem: Theory and Applications”</article-title>
          , Dimacs Series in Discrete Mathematics and Theoretical Computer Science, Editors: Jun Gu, Panos Pardalos, DingZhu.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>