A graph search algorithm that will find the shortest path with some given property, even when the graph contains cycles. When searching for a path through a graph, starting at a given initial node, where the path (or its end node) has some desired property, a depth-first search may never find a solution if it enters a cycle in the graph. Rather than avoiding cycles (i.e. never extend a path with a node it already contains), iterative deepening explores all paths up to length (or "depth") N, starting from N=0 and increasing N until a solution is found.