Generated on Mon Aug 25 11:35:32 2008 for Gecode by doxygen 1.5.6

graph-color.cc

Go to the documentation of this file.
00001 /* -*- mode: C++; c-basic-offset: 2; indent-tabs-mode: nil -*- */
00002 /*
00003  *  Main authors:
00004  *     Christian Schulte <schulte@gecode.org>
00005  *
00006  *  Copyright:
00007  *     Christian Schulte, 2004
00008  *
00009  *  Last modified:
00010  *     $Date: 2007-11-30 13:58:34 +0100 (Fri, 30 Nov 2007) $ by $Author: tack $
00011  *     $Revision: 5524 $
00012  *
00013  *  This file is part of Gecode, the generic constraint
00014  *  development environment:
00015  *     http://www.gecode.org
00016  *
00017  *  Permission is hereby granted, free of charge, to any person obtaining
00018  *  a copy of this software and associated documentation files (the
00019  *  "Software"), to deal in the Software without restriction, including
00020  *  without limitation the rights to use, copy, modify, merge, publish,
00021  *  distribute, sublicense, and/or sell copies of the Software, and to
00022  *  permit persons to whom the Software is furnished to do so, subject to
00023  *  the following conditions:
00024  *
00025  *  The above copyright notice and this permission notice shall be
00026  *  included in all copies or substantial portions of the Software.
00027  *
00028  *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
00029  *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
00030  *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
00031  *  NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
00032  *  LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
00033  *  OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
00034  *  WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
00035  *
00036  */
00037 
00038 #include "examples/support.hh"
00039 
00052 
00053 class GraphColorSpec {
00054 public:
00055   const int  n_v; 
00056   const int* e;   
00057   const int* c;   
00058   GraphColorSpec(const int n_v0, const int* e0, const int* c0)
00059     : n_v(n_v0), e(e0), c(c0) {}
00060 };
00061 
00063 const int g1_e[] = {
00064   160,184,  192,199,  0,129,  20,80,  8,29,  93,171,
00065   101,165,  124,193,  2,100,  66,173,  151,191,  164,187,
00066   3,130,  118,176,  121,184,  25,106,  159,193,  121,123,
00067   5,62,  97,101,  6,143,  123,163,  19,125,  17,108,
00068   122,168,  181,184,  25,41,  62,70,  29,103,  48,67,
00069   46,160,  79,170,  143,152,  38,184,  2,40,  191,195,
00070   7,196,  62,199,  76,141,  82,166,  36,80,  51,189,
00071   13,97,  3,192,  90,180,  47,176,  13,172,  92,121,
00072   50,64,  65,113,  108,123,  26,106,  34,153,  90,123,
00073   34,39,  116,178,  22,179,  50,61,  84,105,  84,93,
00074   19,108,  29,59,  63,185,  119,129,  50,177,  80,194,
00075   13,36,  46,56,  38,144,  82,193,  72,93,  49,95,
00076   42,155,  117,140,  109,189,  19,35,  31,125,  118,191,
00077   163,169,  40,167,  91,127,  3,121,  124,149,  40,174,
00078   30,175,  19,132,  18,165,  34,93,  37,63,  10,55,
00079   88,95,  76,122,  7,91,  25,141,  29,173,  139,173,
00080   8,130,  110,158,  81,174,  113,114,  95,182,  136,149,
00081   5,199,  56,106,  36,120,  133,187,  111,172,  19,34,
00082   96,197,  32,108,  27,63,  50,188,  20,116,  50,118,
00083   10,50,  24,172,  86,138,  35,50,  141,153,  98,132,
00084   70,143,  1,97,  8,160,  37,170,  4,73,  1,94,
00085   88,146,  59,61,  104,156,  62,172,  117,139,  66,189,
00086   33,134,  122,169,  95,163,  95,152,  83,140,  110,189,
00087   147,159,  22,147,  59,173,  30,41,  33,183,  181,187,
00088   88,105,  93,151,  6,130,  24,30,  84,130,  72,120,
00089   118,159,  147,189,  122,149,  24,175,  39,169,  164,186,
00090   93,187,  13,156,  119,176,  73,91,  174,178,  71,198,
00091   10,134,  30,101,  79,93,  180,187,  1,50,  51,59,
00092   18,169,  73,153,  1,198,  137,154,  61,106,  80,113,
00093   48,142,  100,111,  97,133,  82,97,  136,170,  53,134,
00094   65,177,  7,80,  73,137,  6,70,  115,166,  72,196,
00095   40,109,  91,101,  2,177,  120,185,  55,65,  72,166,
00096   104,165,  173,187,  54,71,  3,61,  52,56,  120,149,
00097   64,72,  42,43,  75,185,  62,68,  108,147,  30,111,
00098   25,58,  39,93,  75,117,  61,194,  140,153,  80,121,
00099   93,102,  9,177,  7,163,  17,70,  5,168,  63,178,
00100   74,160,  148,158,  9,84,  30,76,  63,80,  68,99,
00101   20,152,  7,182,  7,22,  71,134,  32,100,  107,164,
00102   23,62,  5,98,  130,192,  65,144,  139,161,  24,124,
00103   31,47,  29,140,  61,153,  53,109,  20,26,  143,160,
00104   47,195,  171,172,  185,193,  128,173,  38,96,  14,171,
00105   176,199,  111,139,  21,54,  80,171,  116,185,  184,199,
00106   37,88,  62,133,  3,150,  48,109,  46,176,  24,178,
00107   59,172,  180,198,  64,109,  110,111,  101,146,  66,164,
00108   5,117,  144,179,  71,126,  166,169,  107,151,  46,85,
00109   106,139,  27,153,  97,148,  68,185,  17,179,  10,142,
00110   168,169,  4,46,  113,152,  52,176,  6,38,  22,48,
00111   20,120,  2,84,  71,85,  91,116,  0,189,  116,197,
00112   142,147,  33,165,  86,198,  146,149,  152,187,  44,62,
00113   48,175,  56,150,  63,161,  71,164,  17,171,  19,66,       -1,-1};
00115 const int g1_c[] = {
00116   30,  6,11,14,25,40,42,48,53,61,76,80,87,89,92,108,115,120,131,132,137,145,159,162,163,164,168,172,173,176,182,
00117   30,  3,15,16,31,34,35,37,38,49,58,67,78,86,91,100,110,114,123,129,132,133,140,143,154,167,168,174,175,193,197,
00118   25,  3,10,33,38,43,45,48,51,65,66,82,88,90,93,94,103,107,128,131,141,152,155,168,185,199,
00119   25,  0,4,7,26,28,33,36,58,61,72,79,81,90,99,105,114,115,124,135,152,159,161,173,181,192,
00120   25,  12,15,28,39,43,44,45,66,83,84,85,99,102,108,112,115,120,126,131,152,157,163,171,182,183,
00121   25,  13,14,15,38,55,66,76,78,87,91,95,99,109,110,125,130,134,137,148,153,159,169,181,185,195,
00122   25,  3,4,31,35,41,42,57,60,65,66,72,74,84,86,90,91,94,96,110,139,140,141,165,179,199,
00123   25,  0,4,5,9,28,31,42,49,54,63,65,72,74,75,76,82,91,99,107,109,140,147,154,169,182,
00124   25,  4,5,10,17,41,43,48,58,65,85,92,97,107,112,114,129,131,146,150,153,158,169,176,184,191,
00125   25,  4,8,15,16,20,21,37,55,68,84,87,104,109,112,117,119,122,123,126,133,142,164,167,180,195,
00126   25,  5,6,10,11,28,30,43,46,53,60,66,79,82,105,114,116,119,124,127,147,157,171,184,195,196,
00127   20,  15,16,30,35,36,56,66,78,81,84,99,126,128,129,138,151,152,153,166,190,
00128   20,  5,21,23,29,39,40,49,69,88,114,122,127,128,142,148,155,161,171,188,190,
00129   20,  0,3,15,23,31,41,57,60,69,76,89,107,109,128,153,155,161,169,174,183,
00130   20,  9,33,43,61,64,69,85,98,100,101,114,120,138,144,172,182,184,187,188,198,
00131   20,  4,6,8,10,23,27,45,57,66,68,71,93,110,122,139,146,150,155,156,188,
00132   20,  4,14,18,22,63,77,78,83,94,98,104,114,150,166,172,177,183,186,196,199,
00133   20,  22,35,46,47,63,64,70,78,87,99,102,112,116,119,125,131,152,165,174,186,
00134   20,  1,3,13,15,19,26,46,51,65,73,76,110,114,149,152,163,166,170,178,186,
00135   20,  9,29,33,40,50,54,102,105,111,112,119,120,124,128,136,138,144,175,190,199,
00136   20,  39,75,79,102,106,112,123,125,138,145,154,155,159,162,165,168,175,181,189,196,
00137   20,  0,11,12,23,42,63,68,71,79,83,89,98,113,117,121,141,156,176,177,193,
00138   20,  10,17,31,56,77,89,102,115,116,117,118,120,136,157,163,168,172,182,193,196,
00139   20,  9,34,35,43,44,57,60,64,79,87,88,94,103,133,156,157,166,171,174,189,
00140   20,  13,21,22,31,41,45,66,67,79,86,112,116,119,146,160,171,175,181,192,195,
00141   20,  11,24,26,45,57,91,99,102,122,123,135,141,144,146,154,156,167,191,194,199,
00142   15,  17,44,53,61,82,90,95,103,107,122,124,145,169,186,190,
00143   15,  2,14,26,37,58,61,75,95,103,109,115,116,141,154,199,
00144   15,  5,13,21,28,61,64,65,73,105,115,119,132,148,154,185,
00145   15,  10,20,38,45,61,75,109,111,115,143,150,157,163,179,186,
00146   15,  9,45,48,49,51,52,57,64,70,128,158,163,182,183,192,
00147   15,  47,55,57,64,79,80,105,131,152,163,172,180,186,190,197,
00148   15,  16,36,69,84,99,113,118,121,126,137,160,162,165,177,196,
00149   15,  16,44,50,53,54,65,69,80,96,112,125,139,150,153,193,
00150   15,  6,54,72,76,86,95,96,144,145,148,151,164,168,180,183,
00151   15,  10,18,19,37,65,85,90,104,112,128,147,158,164,192,198,
00152   15,  20,21,36,50,53,74,90,96,99,124,129,140,163,171,183,
00153   15,  13,20,27,53,65,77,86,98,110,125,133,139,147,188,196,
00154   15,  23,41,43,49,58,74,77,86,111,126,150,168,173,185,189,
00155   15,  11,35,62,89,125,132,134,141,149,163,166,167,171,194,196,
00156   15,  14,28,30,52,114,115,122,125,132,135,172,177,179,181,195,
00157   15,  0,8,9,20,23,53,77,93,121,136,141,147,150,191,199,
00158   15,  3,21,47,49,91,102,106,113,124,136,140,143,177,178,194,
00159   15,  44,46,52,53,68,82,89,90,120,128,144,147,175,178,192,
00160   15,  8,16,19,21,67,72,79,82,86,90,115,116,149,152,199,
00161   15,  12,30,78,80,97,120,122,123,143,146,151,165,173,177,178,
00162   15,  9,19,39,46,91,109,128,130,131,146,148,150,178,185,198,
00163   10,  29,44,69,74,96,115,122,126,189,199,
00164   10,  22,42,52,53,97,113,146,151,160,195,
00165   10,  19,20,32,77,81,133,134,138,147,177,
00166   10,  0,4,56,59,107,109,144,149,158,167,
00167   10,  6,69,99,104,110,114,118,134,152,172,
00168   5,  25,76,126,140,143,
00169   5,  4,54,67,116,142,
00170   5,  47,52,124,151,192,
00171   5,  32,55,61,64,73,
00172   5,  11,65,128,134,190,
00173   5,  45,48,63,131,139,
00174   5,  34,55,82,108,151,
00175   5,  24,34,54,112,156,
00176   5,  12,47,72,148,163,
00177   5,  74,126,145,162,170,
00178   5,  73,78,104,175,192,
00179   5,  19,83,127,130,166,
00180   5,  20,90,98,137,165,
00181   5,  22,24,29,49,132,
00182   5,  82,92,116,134,184,
00183   -1};
00184 
00186 const GraphColorSpec g1(200, g1_e, g1_c);
00187 
00189 const int g2_e[] = {
00190   63,97,  67,85,  18,180,  2,143,  55,156,  28,105,
00191   37,196,  26,33,  88,199,  175,179,  45,46,  62,70,
00192   53,58,  49,177,  91,178,  52,129,  147,165,  83,95,
00193   68,172,  66,150,  7,112,  71,92,  97,150,  114,116,
00194   56,86,  154,188,  95,97,  159,199,  68,119,  11,81,
00195   79,116,  64,74,  88,89,  99,114,  70,73,  87,162,
00196   24,119,  9,25,  174,188,  11,80,  47,198,  86,145,
00197   7,70,  37,170,  138,180,  66,199,  98,153,  70,142,
00198   84,196,  78,185,  7,131,  54,76,  69,82,  53,166,
00199   25,178,  3,36,  128,197,  59,96,  122,137,  54,124,
00200   157,162,  3,146,  72,198,  2,94,  137,158,  64,131,
00201   2,79,  18,119,  22,38,  92,136,  7,108,  179,194,
00202   68,166,  10,84,  28,192,  103,104,  28,75,  8,43,
00203   153,164,  59,119,  88,177,  36,70,  59,154,  57,75,
00204   109,174,  155,184,  16,74,  99,148,  77,121,  54,177,
00205   38,172,  138,174,  7,16,  28,146,  18,192,  4,154,
00206   17,31,  56,57,  174,177,  81,122,  101,175,  21,155,
00207   48,96,  124,154,  129,130,  58,169,  19,57,  115,165,
00208   40,117,  34,181,  28,32,  32,176,  19,119,  20,93,
00209   137,172,  55,135,  92,95,  34,51,  5,81,  63,118,
00210   72,94,  157,181,  15,68,  41,90,  35,73,  159,183,
00211   115,128,  28,183,  34,45,  149,177,  74,137,  51,110,
00212   25,170,  43,123,  53,109,  4,26,  68,80,  53,171,
00213   48,159,  0,28,  67,176,  87,163,  75,165,  137,162,
00214   150,199,  57,153,  32,93,  25,92,  13,88,  115,167,
00215   16,192,  113,157,  90,125,  104,188,  148,171,  96,101,
00216   22,68,  25,62,  89,161,  24,158,  66,190,  31,34,
00217   106,133,  51,102,  146,163,  31,154,  56,129,  66,157,
00218   38,93,  73,166,  117,174,  93,161,  3,95,  86,181,
00219   131,139,  5,182,  30,66,  0,11,  88,107,  54,101,
00220   36,66,  25,176,  8,38,  31,177,  78,195,  122,179,
00221   42,60,  83,112,  149,161,  184,188,  65,126,  74,198,
00222   38,80,  135,172,  43,156,  148,151,  135,195,  111,184,
00223   10,14,  97,152,       -1,-1};
00225 const int g2_c[] = {
00226   30,  10,11,17,20,24,29,33,40,45,50,51,76,77,85,88,101,114,120,122,127,129,136,144,147,148,157,169,180,184,193,
00227   30,  0,2,14,21,38,40,44,51,72,82,91,99,106,109,119,123,126,136,141,154,157,161,163,165,166,171,175,182,183,196,
00228   30,  2,17,20,30,35,36,37,39,46,56,61,72,75,77,80,84,85,96,97,100,107,112,123,156,160,163,175,181,182,195,
00229   25,  11,19,36,41,44,59,60,73,74,89,93,94,108,109,113,130,132,153,163,167,182,186,193,196,199,
00230   25,  2,11,25,30,31,41,49,51,52,53,85,86,93,101,105,108,111,130,135,144,150,183,185,191,194,
00231   25,  1,6,9,11,12,13,19,21,33,49,51,77,124,128,130,131,140,146,147,161,171,180,181,185,198,
00232   25,  3,5,31,39,42,57,59,61,90,93,98,102,106,121,129,132,140,160,165,166,168,185,187,193,194,
00233   25,  9,12,16,23,33,41,44,61,68,73,85,93,96,113,118,122,125,127,129,133,139,146,181,186,199,
00234   25,  6,23,35,42,45,57,65,67,70,77,80,96,100,105,114,119,129,145,146,152,157,160,166,190,195,
00235   25,  8,18,19,27,36,40,49,52,60,65,75,84,85,96,97,107,109,110,120,122,132,154,155,172,189,
00236   25,  1,25,27,37,39,45,56,61,69,70,80,87,89,102,111,115,120,126,134,146,156,169,173,175,192,
00237   20,  8,14,20,21,32,39,50,55,88,91,102,120,126,142,159,165,171,175,184,186,
00238   20,  10,15,35,43,50,52,60,77,80,81,85,87,106,120,145,151,155,159,176,196,
00239   20,  10,17,20,33,46,55,60,68,95,96,103,112,117,118,120,123,127,141,147,179,
00240   20,  9,34,41,52,56,72,73,100,102,116,124,131,138,155,157,158,172,173,182,183,
00241   20,  0,14,16,27,29,44,70,95,101,104,115,127,140,158,161,168,170,173,181,189,
00242   20,  6,14,17,18,23,27,50,51,83,84,93,107,108,116,122,136,154,159,172,185,
00243   20,  11,16,17,21,32,38,45,49,55,56,84,88,102,123,126,133,173,189,195,198,
00244   20,  0,14,21,29,30,40,63,67,93,98,116,122,131,140,150,152,174,178,183,190,
00245   20,  8,14,28,36,44,65,72,79,84,111,114,124,130,134,140,158,182,185,193,197,
00246   20,  9,10,12,17,28,42,46,50,57,62,90,117,132,149,168,176,178,182,187,188,
00247   20,  2,4,22,27,31,32,65,74,108,117,132,142,153,159,160,178,180,187,192,195,
00248   20,  2,4,7,21,56,64,67,100,103,130,135,140,147,151,156,161,167,191,193,196,
00249   20,  6,18,24,30,50,51,67,82,84,88,93,95,106,113,138,146,168,187,190,198,
00250   20,  28,37,44,98,99,107,112,119,129,132,135,151,156,167,168,179,182,190,198,199,
00251   15,  4,37,61,64,67,77,93,103,105,118,136,159,169,177,193,
00252   15,  17,44,53,61,82,90,95,103,107,122,124,145,169,186,190,
00253   15,  21,54,80,100,110,120,126,127,132,142,149,150,162,181,186,
00254   15,  3,7,21,22,40,41,82,94,96,98,126,140,143,147,152,
00255   15,  4,14,58,66,80,100,107,111,126,133,140,141,148,155,167,
00256   15,  31,38,44,48,59,74,75,77,100,105,139,168,171,182,187,
00257   15,  0,5,55,62,66,67,74,84,92,128,160,163,188,189,195,
00258   15,  0,36,55,73,80,96,121,133,167,173,190,191,193,195,198,
00259   15,  21,33,41,43,52,62,69,77,88,110,114,118,139,142,187,
00260   15,  12,14,23,29,44,58,67,74,124,149,150,156,167,171,183,
00261   15,  22,33,36,48,60,63,90,92,107,108,137,140,144,165,193,
00262   15,  11,24,40,45,49,59,72,123,125,132,151,161,167,179,184,
00263   15,  4,19,20,48,61,76,98,106,136,147,155,177,183,191,192,
00264   15,  17,22,28,35,55,74,86,90,98,106,121,138,168,190,195,
00265   15,  24,30,35,44,55,63,80,120,128,130,148,160,163,166,192,
00266   15,  20,30,59,64,69,94,104,106,139,140,144,147,156,161,199,
00267   15,  13,30,38,49,54,61,86,95,103,105,131,148,156,162,180,
00268   15,  2,25,34,41,46,63,69,81,91,113,139,159,186,188,190,
00269   15,  1,6,14,35,47,50,66,81,90,136,137,152,156,168,195,
00270   15,  34,37,47,52,94,100,104,105,107,131,147,171,186,191,192,
00271   15,  9,14,29,37,109,125,137,142,145,147,151,159,167,178,192,
00272   15,  13,45,60,62,78,99,104,118,142,143,156,179,189,191,197,
00273   15,  3,15,23,33,66,71,82,89,99,110,113,135,143,158,171,
00274   15,  27,39,101,102,118,133,134,138,141,144,145,148,165,169,189,
00275   15,  12,18,20,36,50,51,53,76,86,120,141,176,178,186,198,
00276   10,  6,8,17,77,109,112,115,124,129,193,
00277   10,  21,31,51,58,86,112,117,126,127,143,
00278   10,  10,74,87,108,123,134,157,180,186,190,
00279   10,  13,14,15,44,67,118,133,142,146,193,
00280   10,  40,44,46,66,73,128,141,161,174,192,
00281   5,  25,117,163,165,192,
00282   5,  40,46,105,121,134,
00283   5,  3,12,56,90,126,
00284   5,  13,95,98,120,188,
00285   5,  3,98,111,128,194,
00286   5,  4,21,51,65,73,
00287   5,  36,106,124,132,197,
00288   5,  5,35,57,91,144,
00289   5,  0,19,122,177,190,
00290   5,  85,98,111,113,134,
00291   5,  49,85,107,139,149,
00292   5,  54,88,102,111,172,
00293   5,  41,74,115,170,184,
00294   5,  33,70,123,151,159,
00295   5,  50,82,117,123,163,
00296   -1};
00297 
00299 const GraphColorSpec g2(200, g2_e, g2_c);
00301 
00308 class GraphColor : public Example {
00309 private:
00310   const GraphColorSpec& g;
00312   IntVarArray v;
00314   IntVar m;
00315 public:
00317   enum {
00318     MODEL_NONE,  
00319     MODEL_CLIQUE 
00320   };
00322   enum {
00323     BRANCH_DEGREE,      
00324     BRANCH_SIZE,        
00325     BRANCH_SIZE_DEGREE  
00326   };
00328   GraphColor(const SizeOptions& opt)
00329     : g(opt.size() == 1 ? g2 : g1),
00330       v(this,g.n_v,0,g.n_v),
00331       m(this,0,g.n_v) {
00332     rel(this, v, IRT_LQ, m);
00333     for (int i = 0; g.e[i] != -1; i += 2)
00334       rel(this, v[g.e[i]], IRT_NQ, v[g.e[i+1]]);
00335 
00336     const int* c = g.c;
00337     for (int i = *c++; i--; c++)
00338       rel(this, v[*c], IRT_EQ, i);
00339     while (*c != -1) {
00340       int n = *c;
00341       IntVarArgs x(n); c++;
00342       for (int i = n; i--; c++)
00343         x[i] = v[*c];
00344       distinct(this, x, opt.icl());
00345       if (opt.model() == MODEL_CLIQUE)
00346         rel(this, m, IRT_GQ, n-1);
00347     }
00348     IntVarArgs ma(1);
00349     ma[0] = m;
00350     branch(this, ma, INT_VAR_NONE, INT_VAL_MIN);
00351     if (opt.branching() == BRANCH_SIZE) {
00352       branch(this, v, INT_VAR_SIZE_MIN, INT_VAL_MIN);
00353     } else if (opt.branching() == BRANCH_DEGREE) {
00354       branch(this, v, INT_VAR_DEGREE_MAX, INT_VAL_MIN);
00355     } else {
00356       branch(this, v, INT_VAR_SIZE_DEGREE_MIN, INT_VAL_MIN);
00357     }
00358   }
00360   GraphColor(bool share, GraphColor& s) : Example(share,s), g(s.g) {
00361     v.update(this, share, s.v);
00362     m.update(this, share, s.m);
00363   }
00365   virtual Space*
00366   copy(bool share) {
00367     return new GraphColor(share,*this);
00368   }
00370   virtual void
00371   print(std::ostream& os) {
00372     os << "\tm = " << m << std::endl
00373        << "\tv[] = {";
00374     for (int i = 0; i < v.size(); i++) {
00375       os << v[i] << ", ";
00376       if ((i+1) % 15 == 0)
00377         os << std::endl << "\t       ";
00378     }
00379     os << "};" << std::endl;
00380   }
00381 };
00382 
00383 
00387 int
00388 main(int argc, char* argv[]) {
00389   SizeOptions opt("GraphColor");
00390   opt.icl(ICL_DOM);
00391   opt.iterations(20);
00392   opt.model(GraphColor::MODEL_NONE);
00393   opt.model(GraphColor::MODEL_NONE, "none",
00394             "no lower bound");
00395   opt.model(GraphColor::MODEL_CLIQUE, "clique",
00396             "use maximal clique size as lower bound");
00397   opt.branching(GraphColor::BRANCH_DEGREE);
00398   opt.branching(GraphColor::BRANCH_DEGREE, "degree");
00399   opt.branching(GraphColor::BRANCH_SIZE, "size");
00400   opt.branching(GraphColor::BRANCH_SIZE_DEGREE, "sizedegree");
00401   opt.parse(argc,argv);
00402   Example::run<GraphColor,DFS,SizeOptions>(opt);
00403   return 0;
00404 }
00405 
00406 // STATISTICS: example-any
00407