Iterative deepening is a uninformed search algorithm that performs a series of depth-limited depth-first searches (DFS), incrementally increasing the depth limit with each iteration until the goal node is found. It effectively simulates a breadth-first search (BFS) by exploring all nodes at a given depth before proceeding deeper, ensuring a solution is found at the shallowest depth if one exists. This makes it complete and optimal for trees with uniform edge costs, while using memory linear in the depth of the solution, unlike BFS which has exponential memory requirements.
