Select a start and end point, then draw walls to create obstacles. Run pathfinding algorithms to
visualize how they find the shortest path between start and end points.
Breadth-First Search (BFS): Explores all of the neighbor nodes at the present
depth prior to moving on to the nodes at the next depth level. Gurantees the shortest path. In
this visualization, we do not count diagonal neighbors as neighbors.
Depth-First Search (DFS): Explores as far as possible along each branch before
backtracking. Does not gurantee the shortest path. In this visualization, we do not count diagonal
neighbors as neighbors.
A* Search: Uses a heuristic to estimate the cost of the cheapest path. Gurantees
the shortest path