解决问题的方法:分而治之

分而治之”( Divide and conquer,D&C)方法(又称“分治术”) ,是有效算法设计中普遍采用的一种技术。

所谓“分而治之” 就是把一个复杂的算法问题按一定的“分解”方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的解,把各部分的解组成整个问题的解。

下面是我引用的《算法图解》一书对分而治之的解释:

假设你是一个农场主,你有一块土地
在这里插入图片描述

你要将这块地均匀地分成方块,且分出的方块要尽可能大。 如何将一块地均匀地分成方块,并确保分出的方块是最大的呢?使用D&C(分而治之)策略!
D&C算法 是递归的。使用D&C解决问题的过程包括两个步骤: (1) 找出基线条件,这种条件必须尽可能简单。 (2)
不断将问题分解(或者说缩小规模),直到符合基线条件。 下面就来使用D&C找出前述问题的解决方案。可你能使用的最大方块有多大呢?
首先,找出基线条件。最容易处理的情况是,一条边的长度是另一条边的整数倍。
在这里插入图片描述

如果一边长25 m,另一边长50 m,那么可使用的最大方块为 25 m×25 m。换言之,可以将 这块地分成两个这样的方块。
现在需要找出递归条件,这正是D&C的用武之地。根据D&C的定义,每次递归调用都必须
缩小问题的规模。如何缩小前述问题的规模呢?我们首先找出这块地可容纳的最大方块。
在这里插入图片描述

你可以从这块地中划出两个640 m×640 m的方块,同时余下一小块地。现在是顿悟时刻:何 不对余下的那一小块地使用相同的算法呢?
在这里插入图片描述

最初要划分的土地尺寸为1680 m×640 m,而现在要划分的土地更小,为640 m×400 m。适
用于这小块地的最大方块,也是适用于整块地的最大方块。换言之,你将均匀划分1680 m×640 m 土地的问题,简化成了均匀划分640
m×400 m土地的问题!

分而治之算法常见使用有:归并排序法、快速排序法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南桃shine

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值