排序算法-10-算法-分治法(Divide and Conquer)
2016-06-17 00:00
633 查看
##Divide and Conquer - 分治法
在计算机科学中,分治法是一种很重要的算法。分治法即**『分而治之』**,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个思想是很多高效算法的基础,如排序算法(快速排序,归并排序)等。
###分治法思想
分治法所能解决的问题一般具有以下几个特征:
问题的规模缩小到一定的程度就可以容易地解决。
问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
利用该问题分解出的子问题的解可以合并为该问题的解。
该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
分治法的三个步骤是:
分解(Divide):将原问题分解为若干子问题,这些子问题都是原问题规模较小的实例。
解决(Conquer):递归地求解各子问题。如果子问题规模足够小,则直接求解。
合并(Combine):将所有子问题的解合并为原问题的解。
分治法的经典题目:
Divide and Conquer - 分治法
在计算机科学中,分治法是一种很重要的算法。分治法即『分而治之』,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个思想是很多高效算法的基础,如排序算法(快速排序,归并排序)等。
分治法思想
分治法所能解决的问题一般具有以下几个特征:
问题的规模缩小到一定的程度就可以容易地解决。
问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
利用该问题分解出的子问题的解可以合并为该问题的解。
该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
分治法的三个步骤是:
分解(Divide):将原问题分解为若干子问题,这些子问题都是原问题规模较小的实例。
解决(Conquer):递归地求解各子问题。如果子问题规模足够小,则直接求解。
合并(Combine):将所有子问题的解合并为原问题的解。
分治法的经典题目:
二分搜索
大整数乘法
Strassen矩阵乘法
棋盘覆盖
归并排序
快速排序
循环赛日程表
汉诺塔
在计算机科学中,分治法是一种很重要的算法。分治法即**『分而治之』**,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个思想是很多高效算法的基础,如排序算法(快速排序,归并排序)等。
###分治法思想
分治法所能解决的问题一般具有以下几个特征:
问题的规模缩小到一定的程度就可以容易地解决。
问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
利用该问题分解出的子问题的解可以合并为该问题的解。
该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
分治法的三个步骤是:
分解(Divide):将原问题分解为若干子问题,这些子问题都是原问题规模较小的实例。
解决(Conquer):递归地求解各子问题。如果子问题规模足够小,则直接求解。
合并(Combine):将所有子问题的解合并为原问题的解。
分治法的经典题目:
Divide and Conquer - 分治法
在计算机科学中,分治法是一种很重要的算法。分治法即『分而治之』,把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。这个思想是很多高效算法的基础,如排序算法(快速排序,归并排序)等。
分治法思想
分治法所能解决的问题一般具有以下几个特征:
问题的规模缩小到一定的程度就可以容易地解决。
问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
利用该问题分解出的子问题的解可以合并为该问题的解。
该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。
分治法的三个步骤是:
分解(Divide):将原问题分解为若干子问题,这些子问题都是原问题规模较小的实例。
解决(Conquer):递归地求解各子问题。如果子问题规模足够小,则直接求解。
合并(Combine):将所有子问题的解合并为原问题的解。
分治法的经典题目:
二分搜索
大整数乘法
Strassen矩阵乘法
棋盘覆盖
归并排序
快速排序
循环赛日程表
汉诺塔
相关文章推荐
- Python动态类型的学习---引用的理解
- Python3写爬虫(四)多线程实现数据爬取
- 垃圾邮件过滤器 python简单实现
- 下载并遍历 names.txt 文件,输出长度最长的回文人名。
- install and upgrade scrapy
- Scrapy的架构介绍
- Centos6 编译安装Python
- 使用Python生成Excel格式的图片
- 让Python文件也可以当bat文件运行
- [Python]推算数独
- Python中zip()函数用法举例
- Python中map()函数浅析
- Python将excel导入到mysql中
- Python在CAM软件Genesis2000中的应用
- 使用Shiboken为C++和Qt库创建Python绑定
- FREEBASIC 编译可被python调用的dll函数示例
- Python 七步捉虫法