分治算法
来源:互联网 发布:图形矢量化软件 编辑:程序博客网 时间:2024/06/07 13:29
一、基本概念
在计算机科学中,分治算法是一种很重要的算法。就是把一个复杂的问题分成两个或更多的相同或相似的问题,再把子问题分钟更小的子问题····直到最后自问题可以简单的直接求解,元问题的解即自问题的合并。这个技巧是很多高效算法的基础,比如排序算法(快速排序归并排序),傅里叶变换(快速傅里叶变换)···
二、基本思想及策略
分治算法的设计思想是:将一个难以直接解决的大问题,分割成一些规模小的相同的问题,一边各个击破,分而治之。
分治算法的策略是:对于一个规模为n的问题,若该问题可以容易地解决(比如规模n比较小)则直接解决,否则将其分解成k个规模较小的自问题,这些子问题相互独立且与元问题形式相同,递归地解这些子问题,然后将各子问题的解合并得到原问题的解。
三、分治算法的适用情况
分治法能解决的问题一般具有以下几个特征:
1.该问题的规模缩小到一定的程度就可以容易的解决。
2.该问题可以分解为若干个规模较小的相同问题,即该问题具有最优子结构性质。
3.利用该问题分解出的子问题的解可以合并为该问题的解。
4.该问题所分解出的自问题是相互独立的,即子问题之间不包含子子问题。
第三条特征是关键,能否利用分治法完全取决于问题是否具有第三条特征,如果具备了第一条和第二条特征,而不具备第三条特征,则可以考虑用贪心法或动态规划法。
0 0
- 分治算法
- 分治算法
- 分治算法?
- 【算法】分治
- 【算法】分治
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- 分治算法
- *Hbase命令
- sql 随机取一条数据
- Sublime Text Snippets(代码片段)功能
- 自定义View 拓展view 没有全部实现夫view中的构造方法 ApplicationContext is null in ApplicationStatus
- AngularJS学习笔记(二)
- 分治算法
- ios实现长时间后台运行
- Redis学习记录之配置文件(四)
- Rapid Json 可视化 rapidjson.natvis In VS2013
- Android上传文件到服务器
- Swift字典
- php开发中简单的引入编辑器的方法
- 离散--关系--4.3
- cell的背景渐变色和修改样式