Graph Search, Shortest Paths, and Data Structures