Implement A* algorithm for the following problems: * 8 puzzle * Missionaries and Cannibals * Robot block problem Try different heuristics and compare with baseline case, i.e., the breadth first search. Violate the condition h ≤ h*. See if the optimal path is still found. Observe the speedup. These are some of the things that we'll be looking for 1) A* framework and demo for base-case(h=0) 2) Basic heuristics (a) Misplaced tiles (b) Manhatten distance 3) Novel heuristics 4) Admissibility and monotone-restriction proofs for your heuristics 5) ExpandedNodes(bad heuristic) subsume ExpandedNodes(good heuristic) 6) Reachability 7) Good code 8) Graphs and analysis 9) Non-monotonous/non-admissible heuristics and implications (closed list updates) 10) UI and insights