Devide-and-conquer, graph, greedy 와 같은 알고리즘들은 특정한 문제에 대한 좋은 해결법을 제시하지만 구체적인 형태의 문제들에만 적용된다는 점에서 일반적인 해법을 제공하지는 못한다. Dynamic programming과 linear programming은 위의 특수한 알고리즘이 풀지 못하는 문제들에 대한 일반적인 답을 낼 수 있게 한다. 당연하게도 이러한 해법의 일반성은 그것의 효율성과 상충관계(trade-off)에 있다.