Depth-first iterative-deepening: an optimal admissible tree search
Artificial Intelligence
Fundamentals of Computer Alori
Fundamentals of Computer Alori
Introduction to Functional Programming
Introduction to Functional Programming
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Escape from Zurg: an exercise in logic programming
Journal of Functional Programming
IJCAI'95 Proceedings of the 14th international joint conference on Artificial intelligence - Volume 1
Depth-first vs best-first search
AAAI'91 Proceedings of the ninth National conference on Artificial intelligence - Volume 1
Nondeterministic control for hybrid search
CPAIOR'05 Proceedings of the Second international conference on Integration of AI and OR Techniques in Constraint Programming for Combinatorial Optimization Problems
Pruning with improving sequences in lazy functional programs
Higher-Order and Symbolic Computation
Hi-index | 0.00 |
A technique is described that enables purely functional programmers to write efficient search programs in the same form as simple and naive but exhaustive search programs. It performs pruning while retaining a simple program form by exploiting a lazy data structure, an improving sequence, which is a monotonical sequence of approximation values that approach the final value. If some approximation value in an improving sequence has sufficient information to yield the result of some part of the program, the computations that produce the values remaining after the approximation can be pruned. On the basis of an exhaustive search program, which can be regarded as the specification of a problem, three important search algorithms, namely best-first, depth-first branch-and-bound, and iterative-deepening, can be obtained by using suitable functions defined on improving sequences. Two specific examples, the eight puzzle problem and the knapsack problem in Haskell, demonstrate that the technique is practical.