基本概念

  用减治法解题的过程是把原问题分解为小问题,再把小问题分解成更小的问题,直到得到解。规模为n的原问题与分解后较小规模的子问题,它们的解有以下关系:
  (1)原问题的解只存在于其中一个子问题中;
  (2)原问题的解和其中一个子问题的解之间存在某种对应关系。
  按每次迭代中减去规模的大小把减治法分成以下3种情况:
  (1)减少一个常数。在算法的每次迭代中,把原问题减少相同的常数个,这个常数一般等于1.相关的算法有插入排序、图搜索法(DFS、BFS)、拓扑排序、生成排序、生成子集等。在这些问题中,每次把问题的规模减少1.
  (2)按比例减少。在算法的每次迭代中,问题的规模按常数成倍减少,减少的效率极高。在大多数应用中,此常数因子等于2。折半查找(Binary Search)是最典型的例子,在一个有序的数列中查找某个数k,可以把数列分成相同长度的两半,然后在包含k的那部分继续折半,直到最后匹配到k,总共需要 $ log_{2} n $ 次折半。hexo g

  (3)每次减少的规模都不同。减少的规模在算法的每次迭代中都不同,例如查找中位数(用快速排序的思路)、插值查找、欧几里得算法等。


本站总访问量

免责声明

本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。

不得将上述内容用于商业或非法用途,否则一切后果自负。

本站信息来自网络收集整理,版权争议与本站无关。

如果有侵权之处请第一时间联系站长删除。敬请谅解!