update the interface to use optional flags to distinguish between brute force vs. dynamic programming implementations, and to distinguish between likelihood calculations vs. feasibility calculations