the heuristic is an (under)estimate of the cost of going from the initial state to subgoal ""return self heur(self initial_statesubgoal assignmentstripsregressionplanner py -(continued from searchbranchandbound import df_branch_and_bound from searchmpp import searchermpp from stripsproblem import problem problem problem blocks blocks blocks searchermpp(regression_strips(problem )search(#awith mpp df_branch_and_bound(regression_strips(problem ), search(# & exercise multiple path pruning could be used to prune more than the current code in particularif the current node contains more conditions than previously visited nodeit can be pruned for exampleif { trueb falsehas been visitedthen any node that is supersete { trueb falsed true}need not be expanded if the simpler subgoal does not lead to solutionthe more complicated one wont either implement this more severe pruning (hintthis may require modifications to the searcher exercise it is possible thatas knowledge of the domainthat some assignment of values to variables can never be achieved for examplethe robot cannot be holding mail when there is mail waiting (assuming it isn' holding mail initiallyan assignment of values to (some of thevariables is incompatible if no possible (reachablestate can include that assignment for example{mw true,rhmtrueis an incompatible assignment this information may be useful information for plannerthere is no point in trying to achieve these together define subclass of strips domain that can accept list of incompatible assignments modify the regression planner code to use such list of incompatible assignments give an example where the search space is smaller exercise after completing the previous exercisedesign incompatible assignments for the blocks world (this should result in dramatic search improvements defining heuristics for regression planner the regression planner can use the same heuristic function as the forward planner howeverjust because heuristic is useful for forward planner does not mean it is useful for regression plannerand vice versa you should experiment with whether the same heuristic works well for both regression planner and forward planner the following runs the same example as the forward planner with and without the heuristic defined for the forward plannerstripsheuristic py -(continued ####regression planner from stripsregressionplanner import regression_strips version june