分治法的特征和步骤

分治法

采用递归的思想,把大问题分解成n个子问题,通过子问题的解求出大问题的解。

特征

1,该问题的规模缩小到一定的程度就可以解决

2,该问题可以分解为若干个规模较小的相似问题

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

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

求解步骤

1,分解成若干个子问题

2,求解子问题

3,合并子问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
分治和动态规划是两种常见的算设计策略,它们在解决复杂问题时有着相似之处,但也存在一些关键区别。 **分治(Divide and Conquer):** 1. **基本思想**:将一个大问题分解成若干个小的相同或相似子问题。 2. **步骤**:递归地解决子问题,然后合并子问题的结果得到原问题的解。 3. **典型例子**:排序算(如快速排序、归并排序)、求解最大公约数等。 **动态规划(Dynamic Programming, DP):** 1. **核心理念**:把原问题分解为相互重叠的子问题,并存储子问题的解,避免重复计算。 2. **状态转移**:通常通过定义一个表格或数组来记录子问题的解,随着问题规模的增加逐步填入。 3. **典型应用**:背包问题、斐波那契数列、最长公共子序列等。 **异同点:** - **相似之处**:两者都关注将问题分解和优化求解过程,都是优化问题的方。 - **区别**: - **分解方式**:分治通常是将问题拆分成两部分或更小的部分,而动态规划则是在一个维度上分解,形成一个递增的子问题系列。 - **重叠子问题**:动态规划依赖于子问题的重叠性质,利用已计算结果;分治不一定会涉及重叠子问题,但可能有递归的重复。 - **存储策略**:动态规划常使用表格(如数组或矩阵)来存储中间结果;分治则不需要额外存储。 - **终止条件**:动态规划通常有一个明确的结束条件,而分治可能在每个子问题独立结束。 **相关问题--:** 1. 分治在处理问题时如何避免重复计算? 2. 动态规划如何通过状态转移矩阵减少问题复杂度? 3. 何时会选择使用分治而不是动态规划?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值