# 3.10 References and Further Reading

There is a vast literature on search techniques in operations research, computer science, and AI. Search was seen early on as one of the foundations of AI. The AI literature emphasizes the use of heuristics in search.

Basic search algorithms are discussed in Nilsson [1971]. For a detailed analysis of heuristic search see Pearl [1984]. The $A^{*}$ algorithm was developed by Hart et al. [1968]. The optimality of $A^{*}$ is investigated by Dechter and Pearl [1985]. Breadth-first search was invented by Moore [1959]. Lowest-cost-first search with multiple path pruning is known as Dijkstra’s algorithm [Dijkstra, 1959]. Depth-first iterative deepening is described in Korf [1985]. Branch-and-bound search was developed in the operations research community and is described in Lawler and Wood [1966].

Dynamic programming is a general algorithm that will be used as a dual to search algorithms in other parts of this book. See Cormen et al. [2001] for more details on the general class of dynamic programming algorithms.

The idea of using pattern databases as a source of heuristics for $A^{*}$ search was proposed by Culberson and Schaeffer [1998] and further developed by Felner et al. [2004]. Minsky [1961] discussed islands and problem reduction.