| Adaptive Pruning Optimization Strategy | |
| Input: T, C_best Output: T_pruned | |
| 1 | T_pruned ← |
| 2 | T_pruned ← Qstart; |
| 3 | for Q = 1 to N do |
| 4 | if Cost(Q) > C_best, then |
| 5 | Continue; |
| 6 | T_pruned.add(Q); |
| 7 | for Q in T_pruned: |
| 8 | for Q_child in Q.children; |
| 9 | if Q_child.cost > C_best: |
| 10 | T_pruned.remove(Q_child) |
| 11 | end if |
| 12 | end for |
| 13 | end for |
| 14 | return T_pruned |