DEPTH-FIRST SEARCH
  -  Depth-first search explores a single path until its conclusion.
       If this path does not terminate on a goal state, we backtrack
       and arbitrarily continue with another path:
       
       
       
       
       
       Such a strategy is common for solving problems such as mazes
       where the first solution that reaches a goal state is acceptable
       (though this might not be the fastest solution).
       
   -  A general algorithm for searching such spaces can be defined
       as follows:
       
       
       
       
       
   -  Depth-first search, as we will see, is useful when dealing
       with beam search and fast-matching algorithms.