Thinking of Bi-directional and Iterative deepening searches and Speed up BFS: O( bd+1 ). It’s optimal. Bi-directional BFS: b d/2 + b d/2 = O( b d/2 ). Fast enough like A* until certain depth. It’ optimal. A*: O( (b* )d ) Depends on Heuristic, branch factor can be small and can find the optimal solution. Bi-directional A*: Very fast. But, it becomes more complicated to find the optimal solution. IDA* (Iterative deepening A*) is fast enough and finds the optimal solution. There are many ways to speed up your 15 puzzle lab. At the result above, Bi-directional BFS seems fast enough. Thinking of Bi-directional and Iterative deepening searches and Speed up When the depth is higher, Bi-directional BFS shows exponential growth of time complexity. A* is also exponential, but branch factor is smaller so that time is still not too bad. Thinking of Bi-directional and Iterative deepening searches and Speed up Bi-directional BFS cannot be used to search 39 or higher depth (depth of the optimal solution). It also shows that simple bi-directional A* is very fast, but it does not guaranteed to return the optimal solution. Speed Up! Sample 1 and Sample 2 approach differently and found the way to solve 15 puzzle faster than A*. Sample 1: Uses a dictionary for key = cost, value = tuple of path Sample 2: Uses limits (similar to IDA*) and bucketing (keep all levels – how far from start?)