数据科学002Coursera课程Algorithmic Toolbox 第二周总结

为什么学习算法

简单编程问题

  1. 可以进行线性扫描
  2. 无法做到更好
  3. 程序是否工作很显而易见

算法问题

  1. 不清楚如何做
  2. 简单方法往往效率很低
  3. 有优化空间

人工智能问题很难描述清楚

而本课主要研究的是算法问题

明确且清晰描述的算法问题

很难高效执行的算法问题

从问题描述到提出算法,直观算法往往很低效。因此才需要研究算法。

斐波那契数列

0, 1, 1, 2, 3, 5, 8, 13, 21 ,34,…

最早是为了研究兔子繁殖提出的模型

定义很简单:

给出输入n,求序列为n的斐波那契数列元素作为输出,直观算法如下:

我们可以简单将执行代码的行数作为运行时间的单位,这样我们有:

由此我们可以知道

T(n)>=Fn

也就是说程序的运行时间也和斐波那契数列一样高速增长,显然这远远超出了我们硬件所能支持的水平。

而直观算法速度慢的原因就是在计算前两项的过程中存在大量重复计算。

高效算法:

最大公约数

直观算法:

此处循环终止条件应为min(A, B)

关键引理如下:

证明:

欧几里得算法

每次循环大概把输入降为原来的一半,所以时间复杂度大概为log(ab)

计算时间复杂度

我们想要了解具有普遍意义的运行时间,也就是时间复杂度。

同时这个结果应当适用于较大量的输入

Asymptotic Notation

我们要考虑的是程序运行时间和输入数据规模的关系。

Bio-O Notation

使用big-O notation 来描述运行时间有几个优点:

  1. 可以清晰描述运行时间随输入数据规模变化的增长率
  2. 表示符号更加简洁

使用Big-O

常见规则:

举例:斐波那契数列

设计的几种境界

时间: 2024-08-27 16:30:11

数据科学002Coursera课程Algorithmic Toolbox 第二周总结的相关文章

约翰霍普金斯大学数据科学系列课程——导论

这几个月我以斯坦福大学Andrew Ng(中文译作吴恩达,他也是Coursera网站的创始人)的机器学习讲义为参考,在CSDN博客上写了一些机器学习和数据挖掘相关的总结笔记(还有独立成分分析和强化学习两章没有完成),通过学习和总结,对以前学过的统计学和数据挖掘等有了一些新的认识(很多公式最好自己去推导,这样能够真正的加深认识.记忆深刻).但在学习时,也感觉自己主要有两大不足:1.理论不够扎实.如在前几天总结贝叶斯机器学习的相关概念,才发现自己根本没吃透贝叶斯学派的本质思想,而仅仅是知道个贝叶斯公

约翰霍普金斯大学数据科学系列课程——R语言:数据类型

1.原子对象 R语言有5类最基本的原子对象: 1)  字符型character 字符型对象用" "包括. 2)  数值型numeric(real numbers) 数字对象在R中默认为数值型(numeric),如果你需要指定一个数据为整数型,需要在改数字后加上L.如:数字123默认为numeric型,如果需要其为integer型,可表示为123L. 3)  整数型integer 4)  复数型complex 复数的实部用实数表示,虚部用实数+i表示.如:3+2i,2+1i等. 5) 

约翰霍普金斯大学数据科学系列课程——R语言:提取子集

在R语言中,有下面三种操作符可以提取对象的子集: ? "["通常返回的对象与原对象的类型相同:它也可以返回一个对象中的多个元素 ? "[["用来从列表(list)或数据框(data.frame)中提取对象:也可从列表或数据框中提取单个元素,且返回对象的类型可以不为列表和数据框. ? "$"可以通过名称从列表和数据框中提取元素:如果仅从抽取元素的角度来看,和"[["没有区别 (1) 向量 向量可以使用"[]"

RocEDU.课程设计2018 第二周进展 博客补交

本周计划完成的任务 (1).将开发板和平板电脑及其相关配件连通,并和电脑连接. (2).将代码的运行设备从安卓模拟器改为试验箱的平板电脑,平板电脑上实现软件. 本周实际完成情况 (1).计划完成的第一步全部完成,成果如下图所示: (2).已将平板电脑成功接入电脑,并在运行代码的同时,切换运行设备. 本周遇到的问题与解决过程 我们还遇到了平板电脑连接不上网的问题,于是我们找到秦老师询问,最终收到了无限网卡解决了这个问题.有了网卡就可以连接wifi了. 在运行代码的时候,出现Application

Python数据科学精华实战课程|Python数据科学视频教程

Python数据科学精华实战课程网盘地址:https://pan.baidu.com/s/1j6o8qNw2qhBkJYOKW-YrYw 提取码: 67in备用地址(腾讯微云):https://share.weiyun.com/56gifEp 密码:qbta8q 课程规划全面.涵盖基础知识.爬虫采集.数据处理.可视化.数据建模,难得一见的Python体系全面数据科学课程,起步之路有高度:精品质量.课程设计环节紧凑,循循善诱:课堂教学如行云流水,让人受益匪浅 第一章:Python与数据科学应用第二

20172312『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结

20172312『Java程序设计』课程 结对编程练习_四则运算第二周阶段总结 结对伙伴 学号 :20172315 20172318 姓名 :胡智韬 陆大岳 伙伴第一周博客地址: 对结对伙伴的评价:这俩人一开始各编各的还好,到后面就开始吵,从头吵到尾,陆大胖,胡志汪,还好到最后是把代码敲出来了,不容易不容易. 小组结对编程的照片(QQ群截图) 项目中自己负责的部分 代码的综合整理,错误查找,合并以及博客的撰写. 个人贡献度划分 彭霖:胡智韬:陆大岳=3:3:4 相关过程的截图 生成题目类驱动类的

2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周

2017-2018-2 20172310『Java程序设计』课程 结对编程练习_四则运算_第二周 博客要求 组内同学需各自发表博客 博客中需包含以下内容: 相关过程截图 关键代码解释 遇到的困难及解决方法 写出项目中自己负责的部分 个人贡献度划分(按百分比给小组各成员划分贡献度,各成员贡献之和为100%) 对结对的小伙伴做出评价给出小伙伴博客链接(重点指出需要改进的地方) 给出项目的码云链接 给出小组结对编程照片 博客内容中如需展示团队的共同成果,请进行说明 如有参考或引用的设计.实现,请进行说

正确地学习数据科学中的Python,小白学习Python

大多数有抱负的数据科学家是通过学习为开发人员开设的编程课程开始认识 python 的,他们也开始解决类似 leetcode 网站上的 python 编程难题.他们认为在开始使用 python 分析数据之前,必须熟悉编程概念. 资深数据分析师 Manu Jeevan 认为,这是一个巨大的错误,因为数据科学家使用 python 来对数据进行检索.清洗.可视化和构建模型,而不是开发软件应用程序.实际上,为了完成这些任务,你必须将大部分时间集中在学习 python 中的模块和库上. 请按照下面这个步骤来

《Machine Learning》系列学习笔记之第二周

第二周 第一部分 Multivariate Linear Regression Multiple Features Note: [7:25 - θT is a 1 by (n+1) matrix and not an (n+1) by 1 matrix] Linear regression with multiple variables is also known as "multivariate linear regression". We now introduce notatio