phisticated data structures, and by taking advantage of further structure from ... vex case, but simple modifications of our algorithms solve the concave case as ...
Speeding up Dynamic Programming David Eppstein
1,2
Zvi Galil 1,2,3 Raffaele Giancarlo 1 2 3 4
1,2,4
Computer Science Department, Columbia University, New York, USA Work supported in part by NSF grants DCR-85-11713 and CCR-86-05353 Computer Science Department, Tel-Aviv University, Tel-Aviv, Israel Dipartmento di Informatica, Universit´a di Salerno, I84100 Italy; Supported by Italian Ministry of Education, Project “Teoria degli Algoritmi”
Summary: A number of important computational problems in molecular biology, geology, speech recognition, and other areas, can be expressed as recurrences which have typically been solved with dynamic programming. By using more sophisticated data structures, and by taking advantage of further structure from the applications, we speed up the computation of several of these recurrences by one or two orders of magnitude. Our algorithms are simple and practical. Introduction Dynamic programming is one of several widely used problemsolving techniques. In applying the technique, one always seeks to take advantage of special properties of the problem at hand
to speed up the algorithm. There are very few general techniques for speeding up dynamic programming routines and ad hoc approaches seem to be characteristic. The only general technique known to us is due to F. Yao [22]. She considered the following recurrence relations: c(i, i) = 0; c(i, j) = w(i, j) + min {c(i, k − 1) + c(k, j)}, for i < j.
(1)
i