现在的位置: 首页 > 算法 > 正文

分治算法的应用策略是什么

2020年01月01日 算法 ⁄ 共 841字 ⁄ 字号 评论关闭

  分治算法,根据字面意思解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。

分治算法使用策略

  分治策略:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。

  在平时日常生活中,分治思想也是随处可见的。例如:当我们打牌时,在进行洗牌时,若牌的数目较多,一个人洗不过来,则会将牌进行分堆,单独洗一小堆牌是相对容易的,每一堆牌都洗完之后再放到一起,则完成洗牌过程。

分治算法使用场景

  (1)该问题的规模缩小到一定的程度就可以容易地解决。

  (2)该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。

  (3)利用该问题分解出的子问题的解可以合并为该问题的解。

  (4)该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

分治算法基本步骤

  分治法在每一层递归上都有三个步骤:

  (1)分解:将原问题分解为若干个规模较小,相互独立,与原问题形式相同的子问题。

  (2)求解:若子问题规模较小而容易被解决则直接解,否则递归地解各个子问题。

  (3)合并:将各个子问题的解合并为原问题的解。

分治算法伪代码

  其中,|P|表示问题P的规模,n0为一阈值,表示当问题P的规模不超过n0时,问题已容易直接解出,不必再继续分解。ADHOC(P)是该分治法中的基本子算法,用于直接解小规模的问题P。因此,当P的规模不超过n0时直接用算法ADHOC(P)求解。算法MERGE(y1,y2,…,yk)是该分治法中的合并子算法,用于将P的子问题P1,P2,…,Pk的相应的解y1,y2,…,yk合并为P的解。

  结束语:以上就是关于分治算法的应用策略是什么的全部内容,更多内容请关注学步园。

抱歉!评论已关闭.