首页 > 其他分享 >分治策略

分治策略

时间:2023-03-22 15:02:57浏览次数:26  
标签:策略 递归 特征 分治 问题 地解 分解


分治 策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如说规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。这种算法设计策略叫做 分治法。     如果原问题可分割成k个子问题,1<k≤n ,且这些子问题都可解,并可利用这些子问题的解求出原问题的解,那么这种分治法就是可行的。由分治法产生的子问题往往是原问题的较小模式,这就为使用递归技术提供了方便。在这种情况下,反复应用分治手段,可以使子问题与原问题类型一致而其规模却不断缩小,最终使子问题缩小到很容易直接求出其解。这自然导致递归过程的产生。分治与递归像一对孪生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。 分治法所能解决的问题一般具有以下几个特征:



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



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



利用该问题分解出的子问题的解可以合并为该问题的解;



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



上述的第一条特征是绝大多数问题都可以满足的,因为问题的计算复杂性一般是随着问题规模的增加而增加;第二条特征是应用分治法的前提,它也是大多数问题可以满足的,此特征反映了递归思想的应用;第三条特征是关键,能否利用分治法完全取决于问题是否具有第三条特征,如果具备了第一条和第二条特征,而不具备第三条特征,则可以考虑用贪心法或动态规划法。第四条特征涉及到分治法的效率,如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然可用分治法,但一般用动态规划法较好。



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



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



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



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

标签:策略,递归,特征,分治,问题,地解,分解
From: https://blog.51cto.com/u_2650279/6142637

相关文章

  • Git 入门教程之分支策略
    默认情况下合并分支常常直接使用​​gitmerge​​​命令,是最方便快速的合并方法.其实这种情况下​​git​​​采用的是​​fastforward​​​模式,特点是删除分支......
  • CDQ分治
    这是一个比较人类智慧的算法,尽管它大多数时候都不是出题人想要考察的算法,但是绝大部分时候出题人都没办法卡掉你然后愤然强制在线。在怎样的情况下才能使用cdq分治?一般......
  • 关于同源策略的解释
    什么是同源策略目前所有浏览器都在实行这个策略,它的含义是A网站设置的cookie,B网页不能够去访问,除非两个网页同源,所谓同源指的是三个相同,即协议相同,域名相同,端口相同,三......
  • [学习笔记] CDQ分治
    引入-分治分治,就是将讲原问题不断细分直到规模小到能够解决,然后一层层向上合并得到答案的过程。归并排序大致思想:把序列拆成左右两部分,分别归并排序,然后使用两个指针......
  • 策略模式1
    packagecom.cmit.budget.strategy;importorg.apache.commons.lang3.StringUtils;importorg.springframework.stereotype.Component;importjava.util.Map;/**......
  • 异常事件升级策略
    一、背景目前告警是针对实时数值计算的结果,判定当前的值是否需要告警,存在以下问题:不能知道什么时候该告警结束当没有收到告警时,不能确定是因为收敛规则导致的暂时告警......
  • 性能测试知识科普(二):测试策略
    转载:https://www.cnblogs.com/imyalost/p/16711597.html上一篇文章聊到了性能测试最基本的三个术语:并发、TPS、响应时间,并且以高速收费站的故事为例,详细的分析了这三个术......
  • Tree Master (根号分治,离散化)
    题目大意:给出一个树,每次给出2个相同高度的点,然后依次向父亲走,问val[a]*val[b]这些值加起来是多少 思路:直接map映射关联容器,时间复杂度过大根号分治?于是......
  • 前端gis开发以及2D地图和3D地图开发策略
     场景前端很少涉及到地图展示开发(展示地图,对地图进行操作,数据可视化等),但特定公司专门做gis开发和地图开发(比如:建设公司,中铁集团等)。 地图开发策略场景一:直接调用成......
  • 数据库运维---数据库备份策略
    数据库安装方式:通用二进制安装策略1:直接拷贝数据库文件步骤1:主服务器上停用数据库[root@node01~]#systemctlstopmysqld.service步骤2:进入数据目录,打包并压缩数据......