终于放暑假啦。

在家窝了两天,尝试着看了看《编程之美》,发现里面的东西虽然有趣,但作为系统学习算法的资料却不太合适。所以还是从最基本的学起,计划这个暑假粗学一遍算法导论,主要是考虑到还要准备GRE,想要仔细研究恐怕没时间。

写这个系列主要是给自己做一个备忘录和心得。考虑到接下来接触到的东西可能会越来越多,很容易遗忘,这样一个东西也许能帮助我回想起来。当然,也可以作为读者的一个checklist,你们可以在看的时候check一下这块知识我有没有掌握。我个人认为所谓掌握就是能像老师一样讲给别人听,让别人也听懂。由于时间的原因,我将不会在这里记录完整的笔记,而且这也没有必要,因为东西书上都有。

值得一提的是我在学习的过程中看了MIT的6046号课程视频,在网易上有公开课。我个人认为听课是帮助人们快速学习的最好方式,尽管也许不大深入理解,但是效率很高,鉴于我时间有限,故我采用的是听课加看书结合的方式,以课为主。课程一共有19讲,昨天和今天看了1,2讲,以后会以每天一讲的速度学习下去,所以写这个东西也算是给自己一个任务,以免自己荒废了。

进入主题

渐进分析:直白的说就是忽略低次项和常数参数的来进行算法复杂度分析,比如2n^2+n+2我们只分析n^2。这种分析方式的great之处在于,我们不在乎某个有限输入的复杂度,而在乎它的增长,即当输入规模为无穷大的时候算法的复杂度。诚然 ,肯定存在当输入规模比较小的时候,100n^2比n^3复杂度大,但最终前者会远小于后者,而我们关注最终情况

渐进符号:O, o, big Omega, small Omega, big Theta,需要弄清楚谁是upper/lower/tight upper/tight lower bound,另外要明白任何输入规模的函数f(n),只对应唯一的big Theta.

递归式:给出初始条件和递归方程的式子,例如给出:

T(n) = Theta(1)  ( n = 1 )

T(n) = 4*T(n/2) + n ( n > 1)

递归式的解:有三种方法可以计算复杂度

1. 代换法:这个方法很简单,但是说起来有点逗比,就是猜一个T(n)的答案,然后验证。。。

比如上面的那个递归式,高中数学学得还行的同学肯定都能猜到解应该是a*n^2+b*n这样的形式,所以直接带入求得结果求出是n^2-n。

2. 递归树法:这个方法的特点是图示,易于理解,我这里不好表示,大家自行看书或者视频吧。

3. 主方法:这个方法好处是直接给出答案,缺点是对递归式的形式有要求,另外前两种方法能求出T(n)的确切值,但是这种方法只能求出big Theta的值。这种方法需要用代换法验证。

好啦,今天就到这儿了,明天见

asymptotic notation and recursion相关推荐

  1. Asymptotic Notation and Recurrences

    Asymptotic notation Θ-notation Θ(g(n)) = {f(n) : there exist positive constants c1, c2, and n0 such ...

  2. Lecture 2 Asymptotic Notation

  3. 河内之塔算法_如何解决河内问题之塔-图解算法指南

    河内之塔算法 Before getting started, let's talk about what the Tower of Hanoi problem is. Well, this is a ...

  4. 芝加哥大学计算机科学,芝加哥大学计算机科学解析

    3.4.1 院系简介 芝加哥大学位于美国国际金融中心芝加哥,1890年由石油大王约翰·洛克菲勒创办,是世界著名私立研究型大学.该校素以盛产诺贝尔奖得主而闻名,常年位列各个大学排行榜世界前十.截至201 ...

  5. 芝加哥大学计算机科学,芝加哥大学计算机科学

    3.4.1 院系简介 芝加哥大学位于美国国际金融中心芝加哥,1890年由石油大王约翰·洛克菲勒创办,是世界著名私立研究型大学.该校素以盛产诺贝尔奖得主而闻名,常年位列各个大学排行榜世界前十.截至201 ...

  6. 芝加哥大学计算机专业硕士,芝加哥大学-计算机科学硕士

    院系简介 芝加哥大学位于美国国际金融中心芝加哥,1890年由石油大王约翰·洛克菲勒创办,是世界著名私立研究型大学.该校素以盛产诺贝尔奖得主而闻名,常年位列各个大学排行榜世界前十.截至2017年,共有9 ...

  7. 算法小论——第三章 又把新桃换旧符

    2019独角兽企业重金招聘Python工程师标准>>> 笔记 这一章主要是渐进记号和高中数学的回忆. 几个标记: Θ -- 上界和下界,绑定值,相当于f(n) ∈ [c1 * g(n ...

  8. 空间复杂度 用什么符号表示_什么是大O符号解释:时空复杂性

    空间复杂度 用什么符号表示 Do you really understand Big O? If so, then this will refresh your understanding befor ...

  9. 对开发者有用的英文网站合集,建议收藏!

    ​​问答社区 Stack Overflow : subscribe to their weekly newsletter and any other topic which you find inte ...

  10. Khan_Computer Science_Algorithms

    1. Intro to algorithms 1.1  What is an algorithm and why should you care? What is an algorithm? One ...

最新文章

  1. 几十万实例线上系统的抖动问题定位
  2. java7 异常继承_Java基础7-异常;jar包
  3. linux mesg 命令详解
  4. python django图书管理系统_Python框架:Django写图书管理系统(LMS)
  5. C++中字符数组和字符串string
  6. 218.94.78.76:20001/index.php,详解spring中使用Elasticsearch的实例教程
  7. 2016年 企业IT管理员需要做好这些准备
  8. 【个人笔记】Vue+ElementUI后台模板配置动态路由
  9. WebService 教程
  10. 面试 之 git工作流
  11. Java面向对象详解
  12. matlab中nnt,Matlab语言的Neural Network Toolbox 及其在同步中
  13. Android学习---zygote(上)
  14. functional.partial
  15. 【游戏开发实战】Unity使用ShaderGraph配合粒子系统,制作子弹拖尾特效(Fate/stay night金闪闪的大招效果)
  16. Docker 入门笔记 8 - Namespace 简介(中)
  17. Arduino STM32用NTC热敏电阻 OLED显示屏制作温度计
  18. 基于javaweb的高校教职工差旅报销管理系统(java+ssm+jsp+html+mysql)
  19. XOR World(异或运算)
  20. 蓝宝石rx580怎么超频_RX580的价格终于正常了!_蓝宝石 RX 580 8G D5 超白金 OC_游戏硬件攒机推荐-中关村在线...

热门文章

  1. 单片机的c语言程序设计与应用考题,单片机的C语言程序设计与应用—基于Proteus仿真(第4版)...
  2. python项目简历内容包括哪些_python简历内容
  3. Window ffmpeg 推摄像头音视频流到服务器
  4. Android开源项目第一篇——个性化控件(View)篇
  5. 软件工程——软件计划
  6. win7 IE11浏览器怎么改成中文
  7. 系统编程IO操作 之 电子词典
  8. 计算机课签到本,大学课堂点名技术日新月异:电脑摇号扫码上课
  9. flash在线拍照并上传
  10. 手机游戏之Jad文件及MANIFEST.MF文件