Automating branch-and-bound for dynamic programs

Dynamic programming is a powerful technique for solving optimization problems efficiently. We consider a dynamic program as simply a recursive program that is evaluated with memoization and lookup of answers. In this paper we examine how, given a function calculating a bound on the value of the dynamic program, we can optimize the compilation of the dynamic program function. We show how to automatically transform a dynamic program to a number of more efficientversions making use of the bounds function. We compare the different transformed versions on a number of example dynamic programs, and show the benefits in search space and time that can result.

[1]  Robert Giegerich,et al.  Algebraic Dynamic Programming , 2002, AMAST.

[2]  Deeparnab Chakrabarty,et al.  Knapsack Problems , 2008 .

[3]  G. Dantzig Discrete-Variable Extremum Problems , 1957 .

[4]  Robert L. Schmidt,et al.  An improved discrete dynamic programming algorithm for allocating resources among interdependent projects , 1991 .

[5]  Richard E. Korf,et al.  Comparing Best-First Search and Dynamic Programming for Optimal Multiple Sequence Alignment , 2003, IJCAI.

[6]  Noah A. Smith,et al.  Compiling Comp Ling: Weighted Dynamic Programming and the Dyna Language , 2005, HLT.

[7]  J. Spouge Speeding up dynamic programming algorithms for finding optimal lattice paths , 1989 .

[8]  Mesut Yavuz,et al.  A bounded dynamic programming solution to the batching problem in mixed-model just-in-time manufacturing systems , 2006 .

[9]  Yanhong A. Liu,et al.  Dynamic Programming via Static Incrementalization , 1999, High. Order Symb. Comput..

[10]  Peter J. Stuckey,et al.  Dynamic Programming to Minimize the Maximum Number of Open Stacks , 2007, INFORMS J. Comput..

[11]  DONALD MICHIE,et al.  “Memo” Functions and Machine Learning , 1968, Nature.

[12]  S. Martello,et al.  Dynamic Programming and Strong Bounds for the 0-1 Knapsack Problem , 1999 .

[13]  H. Martin Weingartner,et al.  Methods for the Solution of the Multidimensional 0/1 Knapsack Problem , 1967, Operational Research.

[14]  Thomas L. Morin,et al.  Branch-and-Bound Strategies for Dynamic Programming , 2015, Oper. Res..

[15]  Konstantinos Sagonas,et al.  Tabling in Mercury: Design and Implementation , 2006, PADL.

[16]  Noah A. Smith,et al.  Compiling Comp Ling: Weighted Dynamic Programming and the Dyna Language , 2005, HLT.

[17]  Sean R Eddy,et al.  What is dynamic programming? , 2004, Nature Biotechnology.