]> git.sesse.net Git - nms/blobdiff - tsp/tsp.cpp
Correct the estimates from last commit; unfortunately, they were overly pessimistic.
[nms] / tsp / tsp.cpp
index 469cede3001068c0721dab10b3c79da626031faf..97682576cf3db1a5a44016fe23e8f1eb924f4b85 100644 (file)
@@ -132,10 +132,10 @@ int distance(int row_from, int switch_from, int side_from, int row_to, int switc
        
        /* can we just switch sides? */
        if (row_from + 1 == row_to && side_from == 1 && side_to == 0) {
-               return pessimistic_distance(switch_from, row_from, switch_to, row_to) - 31;
+               return distance_switch(switch_from, switch_to) + distance_row(row_from, row_to) - 31;
        }
        if (row_from == row_to + 1 && side_from == 0 && side_to == 1) {
-               return pessimistic_distance(switch_from, row_from, switch_to, row_to) - 31;
+               return distance_switch(switch_from, switch_to) + distance_row(row_from, row_to) - 31;
        }
 
        return pessimistic_distance(row_from, switch_from, row_to, switch_to);
@@ -146,7 +146,7 @@ int optimistic_distance(int row_from, int switch_from, int row_to, int switch_to
        if (row_from == row_to)
                return distance_switch(switch_from, switch_to);
        else if (abs(row_from - row_to) == 1)
-               return pessimistic_distance(row_from, switch_from, row_to, switch_to) - 31;
+               return distance_switch(switch_from, switch_to) + distance_row(row_from, row_to) - 31;
        else
                return pessimistic_distance(row_from, switch_from, row_to, switch_to);
 }