00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #include <gecode/driver.hh>
00043 #include <gecode/int.hh>
00044
00045 using namespace Gecode;
00046
00059
00060 class GraphColorSpec {
00061 public:
00062 const int n_v;
00063 const int* e;
00064 const int* c;
00065 GraphColorSpec(const int n_v0, const int* e0, const int* c0)
00066 : n_v(n_v0), e(e0), c(c0) {}
00067 };
00068
00070 const int g1_e[] = {
00071 160,184, 192,199, 0,129, 20,80, 8,29, 93,171,
00072 101,165, 124,193, 2,100, 66,173, 151,191, 164,187,
00073 3,130, 118,176, 121,184, 25,106, 159,193, 121,123,
00074 5,62, 97,101, 6,143, 123,163, 19,125, 17,108,
00075 122,168, 181,184, 25,41, 62,70, 29,103, 48,67,
00076 46,160, 79,170, 143,152, 38,184, 2,40, 191,195,
00077 7,196, 62,199, 76,141, 82,166, 36,80, 51,189,
00078 13,97, 3,192, 90,180, 47,176, 13,172, 92,121,
00079 50,64, 65,113, 108,123, 26,106, 34,153, 90,123,
00080 34,39, 116,178, 22,179, 50,61, 84,105, 84,93,
00081 19,108, 29,59, 63,185, 119,129, 50,177, 80,194,
00082 13,36, 46,56, 38,144, 82,193, 72,93, 49,95,
00083 42,155, 117,140, 109,189, 19,35, 31,125, 118,191,
00084 163,169, 40,167, 91,127, 3,121, 124,149, 40,174,
00085 30,175, 19,132, 18,165, 34,93, 37,63, 10,55,
00086 88,95, 76,122, 7,91, 25,141, 29,173, 139,173,
00087 8,130, 110,158, 81,174, 113,114, 95,182, 136,149,
00088 5,199, 56,106, 36,120, 133,187, 111,172, 19,34,
00089 96,197, 32,108, 27,63, 50,188, 20,116, 50,118,
00090 10,50, 24,172, 86,138, 35,50, 141,153, 98,132,
00091 70,143, 1,97, 8,160, 37,170, 4,73, 1,94,
00092 88,146, 59,61, 104,156, 62,172, 117,139, 66,189,
00093 33,134, 122,169, 95,163, 95,152, 83,140, 110,189,
00094 147,159, 22,147, 59,173, 30,41, 33,183, 181,187,
00095 88,105, 93,151, 6,130, 24,30, 84,130, 72,120,
00096 118,159, 147,189, 122,149, 24,175, 39,169, 164,186,
00097 93,187, 13,156, 119,176, 73,91, 174,178, 71,198,
00098 10,134, 30,101, 79,93, 180,187, 1,50, 51,59,
00099 18,169, 73,153, 1,198, 137,154, 61,106, 80,113,
00100 48,142, 100,111, 97,133, 82,97, 136,170, 53,134,
00101 65,177, 7,80, 73,137, 6,70, 115,166, 72,196,
00102 40,109, 91,101, 2,177, 120,185, 55,65, 72,166,
00103 104,165, 173,187, 54,71, 3,61, 52,56, 120,149,
00104 64,72, 42,43, 75,185, 62,68, 108,147, 30,111,
00105 25,58, 39,93, 75,117, 61,194, 140,153, 80,121,
00106 93,102, 9,177, 7,163, 17,70, 5,168, 63,178,
00107 74,160, 148,158, 9,84, 30,76, 63,80, 68,99,
00108 20,152, 7,182, 7,22, 71,134, 32,100, 107,164,
00109 23,62, 5,98, 130,192, 65,144, 139,161, 24,124,
00110 31,47, 29,140, 61,153, 53,109, 20,26, 143,160,
00111 47,195, 171,172, 185,193, 128,173, 38,96, 14,171,
00112 176,199, 111,139, 21,54, 80,171, 116,185, 184,199,
00113 37,88, 62,133, 3,150, 48,109, 46,176, 24,178,
00114 59,172, 180,198, 64,109, 110,111, 101,146, 66,164,
00115 5,117, 144,179, 71,126, 166,169, 107,151, 46,85,
00116 106,139, 27,153, 97,148, 68,185, 17,179, 10,142,
00117 168,169, 4,46, 113,152, 52,176, 6,38, 22,48,
00118 20,120, 2,84, 71,85, 91,116, 0,189, 116,197,
00119 142,147, 33,165, 86,198, 146,149, 152,187, 44,62,
00120 48,175, 56,150, 63,161, 71,164, 17,171, 19,66, -1,-1};
00122 const int g1_c[] = {
00123 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,
00124 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,
00125 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,
00126 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,
00127 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,
00128 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,
00129 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,
00130 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,
00131 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,
00132 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,
00133 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,
00134 20, 15,16,30,35,36,56,66,78,81,84,99,126,128,129,138,151,152,153,166,190,
00135 20, 5,21,23,29,39,40,49,69,88,114,122,127,128,142,148,155,161,171,188,190,
00136 20, 0,3,15,23,31,41,57,60,69,76,89,107,109,128,153,155,161,169,174,183,
00137 20, 9,33,43,61,64,69,85,98,100,101,114,120,138,144,172,182,184,187,188,198,
00138 20, 4,6,8,10,23,27,45,57,66,68,71,93,110,122,139,146,150,155,156,188,
00139 20, 4,14,18,22,63,77,78,83,94,98,104,114,150,166,172,177,183,186,196,199,
00140 20, 22,35,46,47,63,64,70,78,87,99,102,112,116,119,125,131,152,165,174,186,
00141 20, 1,3,13,15,19,26,46,51,65,73,76,110,114,149,152,163,166,170,178,186,
00142 20, 9,29,33,40,50,54,102,105,111,112,119,120,124,128,136,138,144,175,190,199,
00143 20, 39,75,79,102,106,112,123,125,138,145,154,155,159,162,165,168,175,181,189,196,
00144 20, 0,11,12,23,42,63,68,71,79,83,89,98,113,117,121,141,156,176,177,193,
00145 20, 10,17,31,56,77,89,102,115,116,117,118,120,136,157,163,168,172,182,193,196,
00146 20, 9,34,35,43,44,57,60,64,79,87,88,94,103,133,156,157,166,171,174,189,
00147 20, 13,21,22,31,41,45,66,67,79,86,112,116,119,146,160,171,175,181,192,195,
00148 20, 11,24,26,45,57,91,99,102,122,123,135,141,144,146,154,156,167,191,194,199,
00149 15, 17,44,53,61,82,90,95,103,107,122,124,145,169,186,190,
00150 15, 2,14,26,37,58,61,75,95,103,109,115,116,141,154,199,
00151 15, 5,13,21,28,61,64,65,73,105,115,119,132,148,154,185,
00152 15, 10,20,38,45,61,75,109,111,115,143,150,157,163,179,186,
00153 15, 9,45,48,49,51,52,57,64,70,128,158,163,182,183,192,
00154 15, 47,55,57,64,79,80,105,131,152,163,172,180,186,190,197,
00155 15, 16,36,69,84,99,113,118,121,126,137,160,162,165,177,196,
00156 15, 16,44,50,53,54,65,69,80,96,112,125,139,150,153,193,
00157 15, 6,54,72,76,86,95,96,144,145,148,151,164,168,180,183,
00158 15, 10,18,19,37,65,85,90,104,112,128,147,158,164,192,198,
00159 15, 20,21,36,50,53,74,90,96,99,124,129,140,163,171,183,
00160 15, 13,20,27,53,65,77,86,98,110,125,133,139,147,188,196,
00161 15, 23,41,43,49,58,74,77,86,111,126,150,168,173,185,189,
00162 15, 11,35,62,89,125,132,134,141,149,163,166,167,171,194,196,
00163 15, 14,28,30,52,114,115,122,125,132,135,172,177,179,181,195,
00164 15, 0,8,9,20,23,53,77,93,121,136,141,147,150,191,199,
00165 15, 3,21,47,49,91,102,106,113,124,136,140,143,177,178,194,
00166 15, 44,46,52,53,68,82,89,90,120,128,144,147,175,178,192,
00167 15, 8,16,19,21,67,72,79,82,86,90,115,116,149,152,199,
00168 15, 12,30,78,80,97,120,122,123,143,146,151,165,173,177,178,
00169 15, 9,19,39,46,91,109,128,130,131,146,148,150,178,185,198,
00170 10, 29,44,69,74,96,115,122,126,189,199,
00171 10, 22,42,52,53,97,113,146,151,160,195,
00172 10, 19,20,32,77,81,133,134,138,147,177,
00173 10, 0,4,56,59,107,109,144,149,158,167,
00174 10, 6,69,99,104,110,114,118,134,152,172,
00175 5, 25,76,126,140,143,
00176 5, 4,54,67,116,142,
00177 5, 47,52,124,151,192,
00178 5, 32,55,61,64,73,
00179 5, 11,65,128,134,190,
00180 5, 45,48,63,131,139,
00181 5, 34,55,82,108,151,
00182 5, 24,34,54,112,156,
00183 5, 12,47,72,148,163,
00184 5, 74,126,145,162,170,
00185 5, 73,78,104,175,192,
00186 5, 19,83,127,130,166,
00187 5, 20,90,98,137,165,
00188 5, 22,24,29,49,132,
00189 5, 82,92,116,134,184,
00190 -1};
00191
00193 const GraphColorSpec g1(200, g1_e, g1_c);
00194
00196 const int g2_e[] = {
00197 63,97, 67,85, 18,180, 2,143, 55,156, 28,105,
00198 37,196, 26,33, 88,199, 175,179, 45,46, 62,70,
00199 53,58, 49,177, 91,178, 52,129, 147,165, 83,95,
00200 68,172, 66,150, 7,112, 71,92, 97,150, 114,116,
00201 56,86, 154,188, 95,97, 159,199, 68,119, 11,81,
00202 79,116, 64,74, 88,89, 99,114, 70,73, 87,162,
00203 24,119, 9,25, 174,188, 11,80, 47,198, 86,145,
00204 7,70, 37,170, 138,180, 66,199, 98,153, 70,142,
00205 84,196, 78,185, 7,131, 54,76, 69,82, 53,166,
00206 25,178, 3,36, 128,197, 59,96, 122,137, 54,124,
00207 157,162, 3,146, 72,198, 2,94, 137,158, 64,131,
00208 2,79, 18,119, 22,38, 92,136, 7,108, 179,194,
00209 68,166, 10,84, 28,192, 103,104, 28,75, 8,43,
00210 153,164, 59,119, 88,177, 36,70, 59,154, 57,75,
00211 109,174, 155,184, 16,74, 99,148, 77,121, 54,177,
00212 38,172, 138,174, 7,16, 28,146, 18,192, 4,154,
00213 17,31, 56,57, 174,177, 81,122, 101,175, 21,155,
00214 48,96, 124,154, 129,130, 58,169, 19,57, 115,165,
00215 40,117, 34,181, 28,32, 32,176, 19,119, 20,93,
00216 137,172, 55,135, 92,95, 34,51, 5,81, 63,118,
00217 72,94, 157,181, 15,68, 41,90, 35,73, 159,183,
00218 115,128, 28,183, 34,45, 149,177, 74,137, 51,110,
00219 25,170, 43,123, 53,109, 4,26, 68,80, 53,171,
00220 48,159, 0,28, 67,176, 87,163, 75,165, 137,162,
00221 150,199, 57,153, 32,93, 25,92, 13,88, 115,167,
00222 16,192, 113,157, 90,125, 104,188, 148,171, 96,101,
00223 22,68, 25,62, 89,161, 24,158, 66,190, 31,34,
00224 106,133, 51,102, 146,163, 31,154, 56,129, 66,157,
00225 38,93, 73,166, 117,174, 93,161, 3,95, 86,181,
00226 131,139, 5,182, 30,66, 0,11, 88,107, 54,101,
00227 36,66, 25,176, 8,38, 31,177, 78,195, 122,179,
00228 42,60, 83,112, 149,161, 184,188, 65,126, 74,198,
00229 38,80, 135,172, 43,156, 148,151, 135,195, 111,184,
00230 10,14, 97,152, -1,-1};
00232 const int g2_c[] = {
00233 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,
00234 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,
00235 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,
00236 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,
00237 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,
00238 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,
00239 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,
00240 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,
00241 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,
00242 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,
00243 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,
00244 20, 8,14,20,21,32,39,50,55,88,91,102,120,126,142,159,165,171,175,184,186,
00245 20, 10,15,35,43,50,52,60,77,80,81,85,87,106,120,145,151,155,159,176,196,
00246 20, 10,17,20,33,46,55,60,68,95,96,103,112,117,118,120,123,127,141,147,179,
00247 20, 9,34,41,52,56,72,73,100,102,116,124,131,138,155,157,158,172,173,182,183,
00248 20, 0,14,16,27,29,44,70,95,101,104,115,127,140,158,161,168,170,173,181,189,
00249 20, 6,14,17,18,23,27,50,51,83,84,93,107,108,116,122,136,154,159,172,185,
00250 20, 11,16,17,21,32,38,45,49,55,56,84,88,102,123,126,133,173,189,195,198,
00251 20, 0,14,21,29,30,40,63,67,93,98,116,122,131,140,150,152,174,178,183,190,
00252 20, 8,14,28,36,44,65,72,79,84,111,114,124,130,134,140,158,182,185,193,197,
00253 20, 9,10,12,17,28,42,46,50,57,62,90,117,132,149,168,176,178,182,187,188,
00254 20, 2,4,22,27,31,32,65,74,108,117,132,142,153,159,160,178,180,187,192,195,
00255 20, 2,4,7,21,56,64,67,100,103,130,135,140,147,151,156,161,167,191,193,196,
00256 20, 6,18,24,30,50,51,67,82,84,88,93,95,106,113,138,146,168,187,190,198,
00257 20, 28,37,44,98,99,107,112,119,129,132,135,151,156,167,168,179,182,190,198,199,
00258 15, 4,37,61,64,67,77,93,103,105,118,136,159,169,177,193,
00259 15, 17,44,53,61,82,90,95,103,107,122,124,145,169,186,190,
00260 15, 21,54,80,100,110,120,126,127,132,142,149,150,162,181,186,
00261 15, 3,7,21,22,40,41,82,94,96,98,126,140,143,147,152,
00262 15, 4,14,58,66,80,100,107,111,126,133,140,141,148,155,167,
00263 15, 31,38,44,48,59,74,75,77,100,105,139,168,171,182,187,
00264 15, 0,5,55,62,66,67,74,84,92,128,160,163,188,189,195,
00265 15, 0,36,55,73,80,96,121,133,167,173,190,191,193,195,198,
00266 15, 21,33,41,43,52,62,69,77,88,110,114,118,139,142,187,
00267 15, 12,14,23,29,44,58,67,74,124,149,150,156,167,171,183,
00268 15, 22,33,36,48,60,63,90,92,107,108,137,140,144,165,193,
00269 15, 11,24,40,45,49,59,72,123,125,132,151,161,167,179,184,
00270 15, 4,19,20,48,61,76,98,106,136,147,155,177,183,191,192,
00271 15, 17,22,28,35,55,74,86,90,98,106,121,138,168,190,195,
00272 15, 24,30,35,44,55,63,80,120,128,130,148,160,163,166,192,
00273 15, 20,30,59,64,69,94,104,106,139,140,144,147,156,161,199,
00274 15, 13,30,38,49,54,61,86,95,103,105,131,148,156,162,180,
00275 15, 2,25,34,41,46,63,69,81,91,113,139,159,186,188,190,
00276 15, 1,6,14,35,47,50,66,81,90,136,137,152,156,168,195,
00277 15, 34,37,47,52,94,100,104,105,107,131,147,171,186,191,192,
00278 15, 9,14,29,37,109,125,137,142,145,147,151,159,167,178,192,
00279 15, 13,45,60,62,78,99,104,118,142,143,156,179,189,191,197,
00280 15, 3,15,23,33,66,71,82,89,99,110,113,135,143,158,171,
00281 15, 27,39,101,102,118,133,134,138,141,144,145,148,165,169,189,
00282 15, 12,18,20,36,50,51,53,76,86,120,141,176,178,186,198,
00283 10, 6,8,17,77,109,112,115,124,129,193,
00284 10, 21,31,51,58,86,112,117,126,127,143,
00285 10, 10,74,87,108,123,134,157,180,186,190,
00286 10, 13,14,15,44,67,118,133,142,146,193,
00287 10, 40,44,46,66,73,128,141,161,174,192,
00288 5, 25,117,163,165,192,
00289 5, 40,46,105,121,134,
00290 5, 3,12,56,90,126,
00291 5, 13,95,98,120,188,
00292 5, 3,98,111,128,194,
00293 5, 4,21,51,65,73,
00294 5, 36,106,124,132,197,
00295 5, 5,35,57,91,144,
00296 5, 0,19,122,177,190,
00297 5, 85,98,111,113,134,
00298 5, 49,85,107,139,149,
00299 5, 54,88,102,111,172,
00300 5, 41,74,115,170,184,
00301 5, 33,70,123,151,159,
00302 5, 50,82,117,123,163,
00303 -1};
00304
00306 const GraphColorSpec g2(200, g2_e, g2_c);
00308
00315 class GraphColor : public IntMinimizeScript {
00316 private:
00317 const GraphColorSpec& g;
00319 IntVarArray v;
00321 IntVar m;
00322 public:
00324 enum {
00325 MODEL_NONE,
00326 MODEL_CLIQUE
00327 };
00329 enum {
00330 BRANCH_DEGREE,
00331 BRANCH_SIZE,
00332 BRANCH_SIZE_DEGREE,
00333 BRANCH_SIZE_AFC,
00334 BRANCH_SIZE_ACTIVITY,
00335 };
00337 enum {
00338 SYMMETRY_NONE,
00339 SYMMETRY_LDSB
00340 };
00342 GraphColor(const SizeOptions& opt)
00343 : IntMinimizeScript(opt),
00344 g(opt.size() == 1 ? g2 : g1),
00345 v(*this,g.n_v,0,g.n_v-1),
00346 m(*this,0,g.n_v-1) {
00347 rel(*this, v, IRT_LQ, m);
00348 for (int i = 0; g.e[i] != -1; i += 2)
00349 rel(*this, v[g.e[i]], IRT_NQ, v[g.e[i+1]]);
00350
00351 const int* c = g.c;
00352 for (int i = *c++; i--; c++)
00353 rel(*this, v[*c], IRT_EQ, i);
00354 while (*c != -1) {
00355 int n = *c;
00356 IntVarArgs x(n); c++;
00357 for (int i = n; i--; c++)
00358 x[i] = v[*c];
00359 distinct(*this, x, opt.icl());
00360 if (opt.model() == MODEL_CLIQUE)
00361 rel(*this, m, IRT_GQ, n-1);
00362 }
00364 branch(*this, m, INT_VAL_MIN());
00365 if (opt.symmetry() == SYMMETRY_NONE) {
00367 switch (opt.branching()) {
00368 case BRANCH_SIZE:
00369 branch(*this, v, INT_VAR_SIZE_MIN(), INT_VAL_MIN());
00370 break;
00371 case BRANCH_DEGREE:
00372 branch(*this, v, tiebreak(INT_VAR_DEGREE_MAX(),INT_VAR_SIZE_MIN()),
00373 INT_VAL_MIN());
00374 break;
00375 case BRANCH_SIZE_DEGREE:
00376 branch(*this, v, INT_VAR_DEGREE_SIZE_MAX(), INT_VAL_MIN());
00377 break;
00378 case BRANCH_SIZE_AFC:
00379 branch(*this, v, INT_VAR_AFC_SIZE_MAX(opt.decay()), INT_VAL_MIN());
00380 break;
00381 case BRANCH_SIZE_ACTIVITY:
00382 branch(*this, v, INT_VAR_ACTIVITY_SIZE_MAX(opt.decay()), INT_VAL_MIN());
00383 break;
00384 default:
00385 break;
00386 }
00387 } else {
00390 Symmetries syms;
00391 syms << ValueSymmetry(IntArgs::create(g.n_v,0));
00392 switch (opt.branching()) {
00393 case BRANCH_SIZE:
00394 branch(*this, v, INT_VAR_SIZE_MIN(), INT_VAL_MIN(), syms);
00395 break;
00396 case BRANCH_DEGREE:
00397 branch(*this, v, tiebreak(INT_VAR_DEGREE_MAX(),INT_VAR_SIZE_MIN()),
00398 INT_VAL_MIN(), syms);
00399 break;
00400 case BRANCH_SIZE_DEGREE:
00401 branch(*this, v, INT_VAR_DEGREE_SIZE_MAX(), INT_VAL_MIN(), syms);
00402 break;
00403 case BRANCH_SIZE_AFC:
00404 branch(*this, v, INT_VAR_AFC_SIZE_MAX(opt.decay()), INT_VAL_MIN(), syms);
00405 break;
00406 case BRANCH_SIZE_ACTIVITY:
00407 branch(*this, v, INT_VAR_ACTIVITY_SIZE_MAX(opt.decay()), INT_VAL_MIN(), syms);
00408 break;
00409 default:
00410 break;
00411 }
00412 }
00413 }
00415 virtual IntVar cost(void) const {
00416 return m;
00417 }
00419 GraphColor(bool share, GraphColor& s) : IntMinimizeScript(share,s), g(s.g) {
00420 v.update(*this, share, s.v);
00421 m.update(*this, share, s.m);
00422 }
00424 virtual Space*
00425 copy(bool share) {
00426 return new GraphColor(share,*this);
00427 }
00429 virtual void
00430 print(std::ostream& os) const {
00431 os << "\tm = " << m << std::endl
00432 << "\tv[] = {";
00433 for (int i = 0; i < v.size(); i++) {
00434 os << v[i] << ", ";
00435 if ((i+1) % 15 == 0)
00436 os << std::endl << "\t ";
00437 }
00438 os << "};" << std::endl;
00439 }
00440 };
00441
00442
00446 int
00447 main(int argc, char* argv[]) {
00448 SizeOptions opt("GraphColor");
00449 opt.icl(ICL_DOM);
00450 opt.iterations(20);
00451 opt.solutions(0);
00452 opt.model(GraphColor::MODEL_NONE);
00453 opt.model(GraphColor::MODEL_NONE, "none",
00454 "no lower bound");
00455 opt.model(GraphColor::MODEL_CLIQUE, "clique",
00456 "use maximal clique size as lower bound");
00457 opt.branching(GraphColor::BRANCH_DEGREE);
00458 opt.branching(GraphColor::BRANCH_DEGREE, "degree");
00459 opt.branching(GraphColor::BRANCH_SIZE, "size");
00460 opt.branching(GraphColor::BRANCH_SIZE_DEGREE, "sizedegree");
00461 opt.branching(GraphColor::BRANCH_SIZE_AFC, "sizeafc");
00462 opt.branching(GraphColor::BRANCH_SIZE_ACTIVITY, "sizeact");
00463 opt.symmetry(GraphColor::SYMMETRY_NONE);
00464 opt.symmetry(GraphColor::SYMMETRY_NONE,"none");
00465 opt.symmetry(GraphColor::SYMMETRY_LDSB,"ldsb","use value symmetry breaking");
00466 opt.parse(argc,argv);
00467 Script::run<GraphColor,BAB,SizeOptions>(opt);
00468 return 0;
00469 }
00470
00471
00472