- def self.iterative_deepening_search(root, problem)
- fringe = [root]
- visited = []
- past_fringe = []
- until fringe.empty?
- vertex = fringe.pop
- visited << vertex
- past_fringe << vertex
- solution = problem[vertex]
- return solution if solution
- if fringe.empty?
- fringe = past_fringe.collect(&:neighbours).flatten - visited
- past_fringe = []
- end
- end
- false
- end
- end