chiark / gitweb /
Fix a bug causing premature defeatism in the Bridges solver. Deducing
authorSimon Tatham <anakin@pobox.com>
Tue, 17 Jan 2012 18:53:02 +0000 (18:53 +0000)
committerSimon Tatham <anakin@pobox.com>
Tue, 17 Jan 2012 18:53:02 +0000 (18:53 +0000)
a better upper bound on the number of bridges leaving a given island
in a given direction was not counted as having 'done something'; so a
solver run could make several such deductions, but then terminate in
the belief that it hadn't achieved anything, when just going back
round the main solver loop would have enabled it to make further
deductions based on those new bounds.

[originally from svn r9377]

bridges.c

index 5860e0cb89498c5be4713661fd227557c67a8b0e..6a677e3f2f8556dd5c65cc52afc5677e0d00c517 100644 (file)
--- a/bridges.c
+++ b/bridges.c
@@ -1505,11 +1505,11 @@ static int solve_island_stage3(struct island *is, int *didsth_r)
             if (maxb == 0) {
                 debug(("...adding NOLINE.\n"));
                 solve_join(is, i, -1, 0); /* we can't have any bridges here. */
-                didsth = 1;
             } else {
                 debug(("...setting maximum\n"));
                 solve_join(is, i, maxb, 1);
             }
+            didsth = 1;
         }
         map_update_possibles(is->state);
     }