Combinatorial Data Analysis: Optimization by Dynamic Programming (Monographs on Discrete Mathematics and Applications)