8 Matching Annotations
  1. Apr 2022
    1. 该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。这条特征涉及到分治法的效率,如果各子问题是不独立的,则分治法要做许多不必要的工作,重复地解公共的子问题,此时虽然也可用分治法,但一般用动态规划较好(例如记忆化搜索是分治转化为动归的一个经典, 要注意)。

      重要!重要!重要!

    2. 分治法所能解决的问题一般具有以下几个特征:   该问题的规模缩小到一定的程度就可以容易地解决;因为问题的计算复杂性一般是随着问题规模的增加而增加,因此大部分问题满足这个特征。 该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质这条特征是应用分治法的前提,它也是大多数问题可以满足的,此特征反映了递归思想的应用 利用该问题分解出的子问题的解可以合并为该问题的解;能否利用分治法完全取决于问题是否具有这条特征,如果具备了前两条特征,而不具备第三条特征,则可以考虑贪心算法或动态规划。

      分治法解题的特征

    3. 分治法的基本思想:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题互相独立且与原问题相同。递归地解这些问题,然后将各个子问题的解合并成原问题的解。

      分治法的基本思想

    1. 而且容易用数学归纳法来证明算法的正确性

      递归算法容易用数学归纳法来证明算法的正确性。

    2. 分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之

      分治法的设计思想

    3. 递归是算法的实现方式,分治是算法的设计思想。     迭代是不断地循环过程,递归式不断地调用自身

      一点区别和理解

    4.     分治与递归像一对孪生兄弟,经常同时应用在算法设计之中,并由此产生许多高效算法。

      分治和递归的关系

    1. 1)明确递归的终止条件在递归的过程中,我们需要一个临界点来终止递归,这样当我们到达这个临界点时,就不用继续往下递去了,而是实实在在的归来。2) 给出递归终止时的处理办法当到达递归临界点时,我们需要给出问题的解决方案,也就是给定一个具体的值而不是一个递归函数。一般地,在这种情景下,问题的解决方案是最直观的,最容易的。3) 提取重复的逻辑,缩小问题规模我们在阐述递归思想内涵时谈到,递归问题必须可以分解为若干个规模较小、与原问题形式相同的子问题,这些子问题可以用相同的解题思路来解决。从程序实现的角度而言,我们需要抽象出一个干净利落的重复的逻辑,以便使用相同的方式解决子问题。

      递归的三要素