📜  DAA-分而治之

📅  最后修改于: 2021-01-12 03:31:20             🧑  作者: Mango


本质上,许多算法都是递归的,可以递归地处理子问题来解决给定的问题。

分治法中,将一个问题分为较小的问题,然后独立解决较小的问题,最后将较小的问题的解决方案组合为较大的问题的解决方案。

通常,分治算法分为三个部分-

  • 将问题分为多个子问题,这些子问题是同一问题的较小实例。

  • 通过递归解决子问题来解决它们。如果它们足够小,则将子问题作为基本案例解决。

  • 结合解决方案的子问题转化为原始问题的解决方案。

分而治之方法的利弊

分治法支持并行性,因为子问题是独立的。因此,使用此技术设计的算法可以同时在多处理器系统或不同机器上运行。

在这种方法中,大多数算法都是使用递归设计的,因此内存管理非常高。对于递归函数堆栈,需要在其中存储函数状态。

分而治之方法的应用

以下是使用分而治之方法解决的一些问题。

  • 找出一个数字序列的最大值和最小值
  • Strassen矩阵乘法
  • 合并排序
  • 二进制搜索