Still looking for something better but remember that one of the users here did a tutorial on searching.
See: Graph traversal for problem solving tutorial