算法笔记(XI) 算法分析与勒贝格积分
2017-05-10 09:51
141 查看
[align=center][/align] 放在前面的后记: 这篇小文简单记录了自己的一个小小发现,也就是勒贝格积分和算法分析方法上的一个等同点:其实现在我已经比以前更清楚的看到计算机科学与数学中的相贯通的地方,这也是我看了《算法导论》《具体数学》的部分内容后才清晰的。如果非要说破的话,我觉得分析算法和积分是一个道理,都是一个求和的过程,只不过算法分析可以只求一个上界就可以了,而积分的本质便是求和,勒贝格积分将离散以及连续的两种情况作了统一,这个和算法分析一样,也是对计算量做一个加和。如果我们以时间轴去“积分”,显然算法的执行的跳跃或者不确定性往往不容许这样做。于是,换个角度分析问题,从本质上发现我们的算法到底作了什么,往往使我们的思路更加的清晰。这个就是勒贝格积分。在算法分析上,这种方法可以称为:平摊分析(个人意见)[s说法有误,见补充] 2010-09-23 最近听了陈老师的算法分析课,很有收获,加上以前学习《计算理论》的体会,决定趁着兴趣把自己的思想记录下来,权当一个纪念。 首先,我要介绍一本关于算法设计的书:《算法艺术与信息学竞赛》,作者为刘汝佳,黄亮;其中讲解队列与栈一节中以小球钟为例引入,首句为:时间是运动的一种方式,所以常常以运动度量时间;好了,说实话,我一时也不明白运动的方式代表什么,但可见一斑,“时间”并不如我们想象的那么神秘! 我试着这样理解“时间”,它是体现的变化的形式;诺特利用群的观点阐释能量守恒定率,即简单的说: 观察时空四维坐标系,以时间轴为标准,将时空截成一个个断面,那么某个时间线的两端断面的能量都将关于时间对称。 有一句话:其实日心说与地心说都是对的,只是坐标系选取的不同,今天我们采用日心坐标系,不是因为它对,而地心说错误,而是采用了日心说能更好的解释更多的事情。 究其根本还是形式与内容的关系。那么狭义相对论要解释的是不是形式与内容的关系呢? 答案是现在我也不知道,只是存于脑中的一些不清晰的认识。 好的,我们继续.. 算法分析与两种积分的内涵 现在我们考虑一下关于算法分析的问题,陈老师对Dijkstra问题的算法时间复杂度的分析与传统的方法不同,简单的说:就如我们数钱一样,我们数钱往往把一沓票子拿来,逐张的数:一毛,两毛,这个嘛...五毛.....数完之后,计算和数即得。 但我们换一下思路,我们先把钱理一理,一毛的放一边,两毛的,五毛也一样,最终我们统计一下不同面额票子的数量乘以面额值加起来得到总钱数。 这个例子很简单,相信大家以前理poker的时候也干过类似的事,但我们今天得深究一下其蕴含的思想。 学过数学的人都觉得这个例子很熟悉,不错,这正是分析学中黎曼积分与勒贝格积分的思想,事实上当年勒贝格就是拿这个例子解释勒贝格积分的(见百度百科),这么看来数学这门学问也并不像大家想的那么抽象。 放置算法分析中理解其含义: 我们将算法的执行可以看做与时间相关的函数,计算函数的积分即为算法的时间复杂度,那么,我们利用勒贝格积分的思想,换一种思路: 我们不以时间轴分析,而是考察其每一函数值(每一条指令)运行的耗时,加起来即为总时间花费。 |
相关文章推荐
- 5.[数据结构和算法分析笔记]树 Tree
- 算法导论学习笔记之摊还分析
- 算法导论 学习笔记 第五章 概率分析和随机化算法
- 数据结构学习笔记0——算法分析
- python算法分析 笔记 ——打印全排列
- 算法设计技巧和分析学习笔记1 (归纳法、分治和动态规划)
- 机器学习第四篇(stanford大学公开课学习笔记) —生成型学习算法之高斯判别分析模型和朴素贝叶斯方法
- 数据分析算法的笔记
- 数据结构于算法分析整理笔记1
- 算法导论17:摊还分析学习笔记(KMP复杂度证明)
- OpenCV学习笔记(27)KAZE 算法原理与源码分析(一)非线性扩散滤波
- OpenCV学习笔记(29)KAZE 算法原理与源码分析(三)特征检测与描述
- C++ Primer 学习笔记_45_STL实践与分析(19)--泛型算法的结构
- 研究生课程 算法分析笔记
- windows程序设计 之 「KeyView1」范例算法分析 笔记
- 链表(算法分析与设计笔记)
- 数据结构与算法学习笔记之 复杂度分析
- 算法学习笔记一---如何进行算法分析&渐近符号介绍
- Java之学习笔记(11)------------算法性能分析
- 算法分析与设计学习笔记