普林斯顿公开课 算法1-5:算法理论
本节主要解说的是算法的复杂度。
算法性能
算法的性能分为三种:
最佳情况:计算时间最短的情况
最差情况:计算时间最长的情况
平均情况:随机输入的期望开销
以二分查找为例
最佳情况是1,由于第一次就有可能找到须要找的整数。
最差情况是logN
平均情况是logN
算法复杂度
算法复杂度用于定义问题的难度,另外也有助于开发最优化的算法,算法复杂度能够通过分析最坏情况来降低输入数据对算法性能的影响。
为了简化问题难度的表示方法,算法复杂度降低了算法分析的细节,忽略常数系数。
最优算法
所谓的最佳算法就是在不论什么情况下都能保证执行时间在理论范围内,并且没有更好的算法可以超越。
算法复杂度表示方法
常见的表示方法有比方O(N^2)表示算法最大可能的复杂度,Ω(N^2)表示最小可能的复杂度,Θ(N^2)表示算法复杂度的增长情况。
举例
问题描写叙述:推断一个数组中有多少个0。
以暴力方法为例。
这个问题中性能上限就是指某个特定的算法能实现的复杂度。
算法下限就是经过数学方法的证明,最优算法的复杂度是Ω(N)。由于数组中每一个元素都有可能是0,必需要循环整个数组才干得出结果。
最优算法:这个问题中暴力算法就是最优算法,所以最优算法的复杂度为Θ(N^2)。
算法的开发步骤
开发一个算法
证明最低下限
假设开发出的算法复杂度和证明得出的最低复杂度不相符的话,能够去寻找新的算法。也有可能是证明出错,当然证明出错的情况是比較少见的。
1970年代是算法设计的黄金年代。
误区
关于算法复杂度有下面误区:
太在乎最坏情况。事实上实际应用中最坏情况基本上不会出现。
试图通过提高复杂度的常数系数来提高性能。
将大O当成近似复杂度,事实上真正的近似复杂度称之为波浪记法。
转载于:https://www.cnblogs.com/yxwkf/p/3826909.html
普林斯顿公开课 算法1-5:算法理论相关推荐
- python数据结构算法 北京大学_北京大学公开课《数据结构与算法Python版》
之前我分享过一个数据结构与算法的课程,很多小伙伴私信我问有没有Python版. 看了一些公开课后,今天特向大家推荐北京大学的这门课程:<数据结构与算法Python版>. 课程概述 很多同学 ...
- PDF课件下载!北京大学公开课《数据结构与算法Python版》
北京大学公开课<数据结构与算法Python版>,面向具有Python语言程序设计基础的大学生和社会公众,介绍常见的基本数据结构以及相关经典算法,强调问题-数据-算法的抽象过程,关注数据结构 ...
- 运筹学与最优化方法_[公开课]运筹学之线性规划算法十二讲
运筹学之线性规划算法十二讲 这是最美好的时代,同样带来最无助的希望:这是最丰富多彩的时代,思想同样的匮乏:这是最互联互通的时代,一样找不到自己和同路的人:这是最光明的时代,我们依然要经过黑暗的摸索和摸 ...
- 普林斯顿公开课 算法2-2:选择排序
选择排序就是对数组进行扫描,每次扫描找出最小的元素,并将其提到元素的前面. 动图 http://www.sorting-algorithms.com/animation/20/random-initi ...
- 算法工程师的落地应用公开课
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 开课吧教育 老师:陈旸 清华大学计算机博士 "我们已经从移动为先的时代进入AI为先的时 ...
- 【福利】计算机公开课合集(视频教程)
计算机公开课合集 [公开课]23种设计模式 · 未名大学 梁立新 23种设计模式:http://www.chinesemooc.org/live/763912 [公开课]数据结构与算法 北京大学 赵海 ...
- 让每一首心动歌曲穿越人海遇见你,背后竟藏着这么多“黑科技”|回响·TME音乐公开课...
睡前打开音乐播放器,为什么总能收到自己喜欢的推荐歌曲? 喜欢相对小众的迷幻摇滚乐,怎样才能发现更多这一类的独特好歌? 别担心!我们有很多让海量好音乐穿越人海与你相遇的"隐藏黑科技" ...
- 史上最全公开课纪录片下载地址汇总
网易公开课<斯坦福:抽象编程>视频下载 网易公开课<普林斯顿大学:人性>视频下载 网易公开课<麻省理工:电影哲学>视频下载视频下载 网易公开课麻省理工公开课< ...
- 数据挖掘-理论与算法 公开课笔记
数据挖掘-理论与算法 公开课笔记 制作:纪元 本提纲遵循CC-BY-NC-SA协议 (署名-非商业性-相同方式共享) 最近更新时间:2020年3月4日01:48:00 文章目录 10.2.1.1 Da ...
最新文章
- 学业水平测试计算机模拟,高二计算机学业水平测试 模拟试题(附答案)
- 大数据WEB阶段(十六)JavaEE三大 核心技术之监听器Listener
- 前端学习(2949):创建webpack搭建项目
- 2020.2idea怎么创建html项目_陈肆横项目日记:百度百科怎么创建自己的名字
- python __slots__ [转]
- MySQL介绍及安装(一)
- OpenShift Security (3) - 准备客户端环境和演示应用
- 随想录(什么是软件架构师)
- 给WPF文字加多条修饰线
- Uva 10817 校长的烦恼
- 如果一个人不喜欢争,不喜欢计较,只知道退让,是不是真的傻?
- 亚马逊云基础架构:一场从未停歇的技术创新革命
- Delphi2010 RTTI + Attribute 简单实现ORM实例
- latex句首缩进空格
- qt for python对比pyqt_PyQt4和electron的第二轮对比
- 必读的Python入门书籍,你都看
- 金蝶k3数据库服务器信息,金蝶k3如何查询连接的服务器配置
- LED点阵显示,有关特殊国别(阿拉伯,希伯来,泰文)字符排版和乱码问题解决
- 【xla】五.1、XlaCache命中规则
- php删除二维数组元素_php怎样删除二维数组中的元素
热门文章
- snort 使用mysql的安装
- 如何安全地迁移到Exchange 2003?
- li 字多出了省略号_css 超出用省略号当标题字符溢出用省略号表示
- 中国科学院计算机博士张弛,中科院纳米能源所张弛团队:基于摩擦纳米发电机的自供电无线传感微系统与智能浮标...
- 教育启蒙赛道、亿级异构数据不停服平滑迁移方案和实践
- cron每月1号_微信服务号按粉丝标签分组群发消息怎样实现?
- CentOS7.5搭建k8s集群
- mysql 查询 in memory_In-Memory整体汇总
- 开始位置 环状图_上海这个地方新建两所中小学!建筑效果图、出入口、学校位置等信息公布...
- 华为能更新到鸿蒙的手机有哪些,荣耀哪些手机可以升级鸿蒙系统 荣耀鸿蒙系统支持的手机型号盘点...