Combinatorial data analysis : optimization by dynamic programming | Synapse