分治法算法思想

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

分治算法思想

分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。

求出子问题的解,就可得到原问题的解。即一种分目标完成程序算法,简单问题可用二分法完成。当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。

具体介绍:

规模为n的原问题的解无法直接求出,进行问题规模缩减,划分子问题。如果子问题的规模仍然不够小,再进行子问题划分,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止,最后求出的小规模的问题的解合并为一个更大规模的问题的解,自底向上逐步求出原问题的解。

适用条件有:

原问题的规模缩小到一定的程度就可以很容易地解决。

原问题可以分解为若干个规模较小的相同问题,即原问题具有最优子结构性质。

利用原问题分解出的子问题的解可以合并为原问题的解。

原问题分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题(这条特征涉及到分治法的效率,如果各个子问题不独立,也就是子问题划分有重合部分,则分治法要重复的求解1公共子问题的解,此时虽然也可用分治法,但采用动态规划更好)。

特点介绍:

原问题可以分解为多个子问题。这些子问题与原问题相比,只是问题的规模有所降低,其结构和求解方法与原问题相同或相似。

原问题在分解过程中,递归地求解子问题。由于递归都必须有一个终止条件,因此,当分解后的子问题规模足够小时,应能够直接求解。

在求解并得到各个子问题的解后。应能够采用某种方式、方法合并或构造出原问题的解。不难发现,在分治策略中,由于子问题与原问题在结构和解法上的相似性,用分治方法解决的问题,大都采用了递归的形式。在各种排序方法中,如归并排序、堆排序、快速排序等,都存在有分治的思想。

算法介绍:

在数学和计算机科学中,算法是如何解决一类问题的明确规范。算法可以执行计算、数据处理、自动推理和其他任务。作为一种有效的方

法,算法可以在有限的空间和时间内用定义明确的形式语言来表示,以计算函数。从初始状态和初始输入(可能为空)开始,指令描述了一种计算,当执行该计算时,该计算通过有限的数量的明确定义的连续状态,最终产生的“输出”并终止于最终结束状态。从一种状态到下一种状态的转变不一定是明确的;一些被称为随机算法的算法包含随机输入。

相关文档
最新文档