漫画:5分钟弄懂分治算法!它和递归算法的关系!
分治顾名思义“分而治之”,英文的意思翻译为“分割并征服”。
分治思想,简而言之就是将原问题分解成与“原问题相同但是规模更小”的子问题,并可以反复执行这个过程,使得问题规模减小到可以求解为止。
1、快速排序算法
2、快速傅里叶变换算法
3、Karatsuba大数乘法算法
问题:给定1000个数,从小到大进行排序。
先选择一个“标准”A,按照“比A小”和“比A大”将原来的数列分为两类,这样,只需要将两个子序列分别排好序,然后再合并到一块就ok了。
直接做该运算,需要做平方级别的复数乘法,这样的复杂度超级高!如何进行分解呢?
首先,不可能像上边排序算法一样,找一个“标准数”,取前一半和后一半采样点来做!
问题:两个很大的数相乘,如何更快的解决?
两个很大的数相乘,普通算法的时间复杂度为O(n^2)。
首先,将n位大数x和y进行分解。
然后,x·y就变成了下面这样
并且满足
所以,原来的大数乘法就变成了小数乘法!其实这位博士研究的算法不仅这里巧妙,而且还有一个小技巧!
这样的话,乘法又能变成加法了!计算复杂度又大大的降低了!
第一:数学归纳是使用分治思想
只要出现可以用数学归纳公式来表示的大规模问题,第一反应就应该想到分治算法,通过特定的函数参数安排,一定可以用同一个函数来表述不同规模的问题,套用递归结构,可迅速解决问题!
第二:分治思想不一定使用递归结构
递归结构是循环结构的一种,也是分治思想应用最多的一种程序结构,但是不一定要使用它!关键在于能够写出递归公式以及是否有必要使用递归算法。比如上边提到的快速傅里叶变换算法,就没有用到递归!
三:分治思想的核心是“如何分”
能够把问题很棒的进行分解,也是一种能力和本事!也就是说把问题用分治法来进行解决,是算法的难点,也是重点!一方面需要经验,另一方面也需要想象力!所以说呢?人生也是如此!不管遇到多大的苦难,我们需要在一次一次的锻炼中进行学会分解苦难,才能够大事化小,小事化了!
漫画:5分钟弄懂分治算法!它和递归算法的关系!相关推荐
- 量子计算机 漫画,漫画 | 10分钟看懂量子比特、量子计算和量子算法
原标题:漫画 | 10分钟看懂量子比特.量子计算和量子算法 请做好准备,即将进入烧脑模式! 宏观世界的生活经验很多都是表象.比如,你可能认为世界的运行是确定的.可预测的:一个物体不可能同时处于两个相互 ...
- 5分钟弄懂语音识别技术原理
5分钟弄懂语音识别技术原理 首先,我们知道声音实际上是一种波.常见的mp3.wmv等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如Windows PCM文件,也就是俗称的wav文件.wav文 ...
- 职称计算机证是继续教育的内容吗,豆腐网教你一分钟弄懂继续教育学时认定表及上传注意事项~...
原标题:豆腐网教你一分钟弄懂继续教育学时认定表及上传注意事项~ 大家好,我是豆腐网王老师,专注于南京工程师职称评审政策解读,关注我,让您轻松面对职称评审,少走弯路!!! 南京中高级职称申报已有段时间, ...
- 终于弄懂KMP算法了
1.简例弄懂KMP-点此链接查看 看了上面的文章,你肯定大概明白了KMP的运作原理,但是你可能对于文章提到的"部分匹配值"的又来还存在疑惑,那么请继续往下看: 我们先抛出两个问题, ...
- 10分钟弄懂当前各主流区块链架构
最近区块链的概念可谓十分火热,从风投的投资到企业招聘区块链人才,似乎处处暗示着该技术将会给人类带来巨大改变.废话不多说,咱们就从技术角度来了解一下当前最主流的区块链诸如比特币.以太坊.HyperLed ...
- 5分钟弄懂:语音识别技术原理
简要给大家介绍一下语音怎么变文字的吧.希望这个介绍能让所有同学看懂. 首先,我们知道声音实际上是一种波.常见的mp3.wmv等格式都是压缩格式,必须转成非压缩的纯波形文件来处理,比如Windows P ...
- 深度学习目标检测系列:一文弄懂YOLO算法|附Python源码
在之前的文章中,介绍了计算机视觉领域中目标检测的相关方法--RCNN系列算法原理,以及Faster RCNN的实现.这些算法面临的一个问题,不是端到端的模型,几个构件拼凑在一起组成整个检测系统,操作起 ...
- 5分钟弄懂Docker
尽管之前久闻Docker的大名了,但是天资愚钝,对其到底是个啥东西一直摸不清,最近花了一段时间整理了一下,算是整理出一点头绪来. 官网的介绍是这样的: Docker is an open platfo ...
- 十分钟弄懂最快的APP自动化工具uiautomator2
相信很多使用appium做过APP自动化的人都深有感触: appium运行慢.时间长 uiautomatorviewer定位元素时得关掉appium server 在低版本的appium上获取toas ...
最新文章
- http方法_像本地方法一样调用http服务,feign框架springboot项目实践
- java开发微信公众平台(一)-- 服务器配置
- OS X 键盘快捷键
- python issubclass 和 isinstance函数
- Leetcode 255. Verify Preorder Sequence in Binary Search Tree
- 小猿圈Java学习心得之Java程序员能力提升在哪
- GetLastError()返回值及含义
- Vue「五」—— 动态组件、插槽、自定义指令
- mysql lost connection to server during query
- Codeforces Round #250 (Div. 1) D. The Child and Sequence 线段树 区间取摸
- utilities —— 常见宏定义
- noip 2010 引水入城(dfs + 贪心)
- static在实例Extends、Overload中理解
- python微控制器编程从零开始 pdf_Python微控制器编程从零开始
- 嵌入式算法8---空间向量夹角公式及其应用
- RMAN-20003错误
- Android 网络获取图片处理
- Python Loess (Lowess) smooth 曲线平滑
- 名帖136 刘春霖 楷书《楷书帖选》
- 老款Tplink路由器如何桥接
热门文章
- 特斯拉Model 3国内起售价下调至23.59万元
- 成为计算机视觉工程师的第一个月,我都学会了什么?
- 网络运行时间提高100倍,Google使用的AI视频理解架构有多强?
- “不设边界”的云知声:从多场景AI芯片到视觉AI,誓要2019营收近3倍
- AI做不了“真”3D图像?试试Google的新生成模型
- 最新Python学习项目Top10!
- 深度学习必备数学知识之线性代数篇(附代码实现)
- 打一场AI竞赛,让你知道我的厉害
- 如何用Python实现iPhone X的人脸解锁功能?
- Springboot中优雅进行字段校验