Consider the algorithm sketched in the counterexample of the box on page 105: When can the algorithm stop? (Hint: it does not have to wait until the for- ward search finds a path to a goal). What data structures should be kept? Specify the algorithm in full. Show that it finds the optimal path. Give an example where it expands (many) fewer nodes than A ∗ .