We implement three search algorithms to find a solution from a random start position:
- Greedy: empirically the fastest one, but solutions can be long.
- Dijkstra algorithm: guarantees the shortest path, but requires lots of resources.
- A* search: faster than Dijkstra, better than greedy.