print("path found:",path assert path is not none"no path is found in problem assert list(path nodes()in solutions"shortest path not found in problem print("passed unit test" if __name__ ="__main__"#test(searchertest(astarsearcher example queriessearcher searcher(searchproblem acyclic_delivery_problemdfs searcher search(find first path searcher search(find next path searcher astarsearcher(searchproblem acyclic_delivery_problemasearcher search(find first path searcher search(find next path searcher searcher(searchproblem cyclic_delivery_problemdfs searcher search(find first path with dfs what do you expect to happensearcher astarsearcher(searchproblem cyclic_delivery_problemasearcher search(find first path exercise change the code so that it implements (ibest-first search and (iilowest-cost-first search for each of these methods compare it to ain terms of the number of paths expandedand the path found exercise in the add method in frontierpq what does the "-in front of frontier index dowhen there are multiple paths with the same -valuewhich search method does this act likewhat happens if the "-is removedwhen there are multiple paths with the same valuewhich search method does this act likedoes it work better with or without the "-"what evidence did you base your conclusion onexercise the searcher acts like python iteratorin that it returns one value (here pathand then returns other values (pathson demandbut does not implement the iterator interface change the code so it implements the iterator interface what does this enable us to domultiple path pruning to run the multiple-path pruning demoin folder "aipython"load "searchmpp pyusing ipython - searchmpp pyand copy and paste the example queries at the bottom of that file the following implements awith multiple-path pruning it overrides search(in searcher searchmpp py -searcher with multiple-path pruning from searchgeneric import astarsearchervisualize from searchproblem import path version june