ABSTRACT

Dynamic programming is a powerful algorithmic technique to find the solution of a larger problem using solutions of smaller problems. It is mainly used in optimization problems, however, it is also applicable for counting problems. This chapter introduces a framework called algebraic dynamic programming which provides a unified framework of counting, sampling and optimizing.