KAUST CEMSE CS AMCS TREES Extensions Of Dynamic Programming For Combinatorial Optimization And Data Mining