| Heuristic search is one of the most important graph search techniques, allowing people to find paths through graphs that can have more nodes than there are atoms in the universe. There has been much research in developing heuristic search algorithms, but much less work on when and why those new heuristic search algorithms work well.;Every heuristic search algorithm makes assumptions about the nature of the graph to be searched and the heuristic, and these assumptions allow the algorithm to perform well in certain circumstances, but perform poorly when those assumptions turn out to be false. The thesis of this dissertation is that understanding the assumptions behind heuristic search algorithms can be used to better select heuristic search algorithms, and to improve heuristic search algorithms.;We begin by discussing how assumptions made during optimal heuristic search impact performance, and how directly addressing these assumptions can lead to improved performance. We next turn our attention to implementation techniques, and how it is possible to squeeze additional performance out of a heuristic search algorithm by leveraging assumptions built into the data structures within the search algorithm. Last, we discuss how a better understanding of the assumptions built in to greedy best-first search allows us to tailor the heuristic so as to better meet the requirements of greedy best-first search, resulting in improved performance. |