X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;ds=sidebyside;f=main.c;h=57a979654f705bd01912fe773cd01668a92ddb07;hb=7f7db5029057d9d6cfd74de0f464e1913cb80cff;hp=11bdf0fba64e7605e11e54511142be5d20bbf689;hpb=5d8f0782034b510b146a1b93d8f0c8f303eeb811;p=matchsticks-search.git diff --git a/main.c b/main.c index 11bdf0f..57a9796 100644 --- a/main.c +++ b/main.c @@ -58,7 +58,8 @@ * * We search all possible adjacency matrices, and for each one we run * GLPK's simplex solver. We represent the adjacency matrix as an - * array of bitmaps. + * array of bitmaps: one word per input stick, with one bit per output + * stick. * * However, there are a couple of wrinkles: * @@ -76,11 +77,15 @@ * nondecreasing in array order. * * Once we have a solution, we also avoid considering any candidate - * which involves dividing one of the output sticks into so many + * which involves dividing one of the input sticks into so many * fragment that the smallest fragment would necessarily be no bigger * than our best solution. That is, we reject candidates where any of * the hamming weights of the adjacency bitmap words are too large. * + * We further winnow the set of possible adjacency matrices, by + * ensuring the same bit is not set in too many entries of adjmatrix + * (ie, as above, only considering output sticks). + * * And, we want to do the search in order of increasing maximum * hamming weight. This is because in practice optimal solutions tend * to have low hamming weight, and having found a reasonable solution @@ -512,7 +517,7 @@ static void optimise(bool doprint) { glp_set_obj_coef(prob, X_minimum, 1); for (i=0; i