简单区分 五大算法分析策略(分治、动态规划、贪心、回溯、分支限界)

一、分治法

1、设计思想

将一个难以直接解决的大问题,分割成k个规模较小的子问题,这些子问题相互独立,且与原问题相同,然后各个击破,分而治之。

2、递归算法

分治法常常与递归结合使用:通过反复应用分治,可以使子问题与原问题类型一致而规模不断缩小,最终使子问题缩小到很容易求出其解,由此自然导致递归算法。

3、子问题规模

根据分治法的分割原则,应把原问题分割成多少个子问题才比较适宜?每个子问题是否规模相同或怎样才为适当?这些问题很难给与肯定的回答。但人们从大量实践中发现,在使用分治法时,最好均匀划分,且在很多问题中可以取k=2。这种使子问题规模大致相等的做法源自一种平衡子问题的思想,它几乎总是比使子问题规模不等的做法好。

二、动态规划法

1、设计思想

动态规划法与分治法类似,其基本思想也是将原问题分解成若干个子问题。与分治法不同的是,其分解出的子问题往往不是相互独立的。这种情况下若用分治法会对一些子问题进行多次求解,这显然是不必要的。动态规划法在求解过程中 把所有已解决的子问题的答案保存起来,从而避免对子问题重复求解。

2、解决最优化问题

动态规划常用于解决最优化问题;全局最优

对一个最优化问题可否应用动态规划法ÿ

你可能感兴趣的:(数据结构与算法,数据结构与算法)