算法导论第一章,第二章笔记
来源:互联网 发布:淘宝店设计装修多少钱 编辑:程序博客网 时间:2024/05/21 09:06
第一章,第二章
算法导论读书笔记
1、算法是什么
2、要知道几种数据结构的优势和局限
比如排序算法
NP问题是什么
循环不变性,算法正确性的证明
布尔运算符 会短路的
传值,传参的不同
复杂度分析
输入规模
最坏情况和 平均情况
数据结构听课笔记
1、
makefile来编译c++程序
make是如何高效编译程序的:通过检测文件是否变化
具体如下:
1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2)如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
那么如何检测文件是否变化的呢?
存疑。
2、
c++程序的调试器、debugger
ddd,gdb等等
讨论课上会讲
3、
证明程序正确
right output
will halt
如何证明算法的准确性
test case? 但test case不是无穷的
4、
为什么要学习算法
比如中文,英文
都有语法,动词等
尽管表面上看起来不同,但是其中的语义逻辑是相同的,而算法就是程序中的逻辑
尽管c++和python程序不一样,但是他们的伪代码描述、程序实现的逻辑是一样的,所以 要学习算法,学习算法的时候多用伪代码描述
5、
程序的本质: Input-->output
对于 sort(排序算法), input为一组数,output为 sorted permutation
6、
数据结构要学什么
store and organize datafor efficient access
7、
computability
什么是可计算问题,哪些问题计算机可以处理
turing machine:
enigma破译德军密码
证明了 哪些问题 是可计算的
比如 halting problem
8、
pseudocode 伪代码 示范
分析插入排序的 复杂度 并证明 该算法的正确性
即对loop invariant的证明
a[0,j-1] is sorted
借鉴了数归方法(第一数学归纳法):
1、Initialization
2、Maintenance
3、Termination
具体证明http://www.cnblogs.com/bamboo-talking/archive/2011/02/05/1950197.html
9、
时间复杂度与什么有关
1、n 问题的规模
2、step,程序的步数
插入排序的 最坏复杂度为 n^2,整体为 a*n^2+b*n+c
为什么不考虑那些常数 和 低阶项, 而只考虑growth rate
因为当n 小 时,该算法运行时间很小,有效率
当n很大时候,运行时间只取决n^2,该项为 高阶项
关注最坏时间复杂度,因为
1有最坏预期,not exceed limited time 比如飞控系统
2dont know the average input
关于平均时间,因为
对于 搜索引擎,常用的 是快排,尽管他的最坏复杂度比归并排序高,但是我们应该考虑的是 平均时间
算法导论读书笔记
1、算法是什么
2、要知道几种数据结构的优势和局限
比如排序算法
NP问题是什么
循环不变性,算法正确性的证明
布尔运算符 会短路的
传值,传参的不同
复杂度分析
输入规模
最坏情况和 平均情况
数据结构听课笔记
1、
makefile来编译c++程序
make是如何高效编译程序的:通过检测文件是否变化
具体如下:
1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。
2)如果这个工程的某几个C文件被修改,那么我们只编译被修改的C文件,并链接目标程序。
3)如果这个工程的头文件被改变了,那么我们需要编译引用了这几个头文件的C文件,并链接目标程序。
那么如何检测文件是否变化的呢?
存疑。
2、
c++程序的调试器、debugger
ddd,gdb等等
讨论课上会讲
3、
证明程序正确
right output
will halt
如何证明算法的准确性
test case? 但test case不是无穷的
4、
为什么要学习算法
比如中文,英文
都有语法,动词等
尽管表面上看起来不同,但是其中的语义逻辑是相同的,而算法就是程序中的逻辑
尽管c++和python程序不一样,但是他们的伪代码描述、程序实现的逻辑是一样的,所以 要学习算法,学习算法的时候多用伪代码描述
5、
程序的本质: Input-->output
对于 sort(排序算法), input为一组数,output为 sorted permutation
6、
数据结构要学什么
store and organize datafor efficient access
7、
computability
什么是可计算问题,哪些问题计算机可以处理
turing machine:
enigma破译德军密码
证明了 哪些问题 是可计算的
比如 halting problem
8、
pseudocode 伪代码 示范
分析插入排序的 复杂度 并证明 该算法的正确性
即对loop invariant的证明
a[0,j-1] is sorted
借鉴了数归方法(第一数学归纳法):
1、Initialization
2、Maintenance
3、Termination
具体证明http://www.cnblogs.com/bamboo-talking/archive/2011/02/05/1950197.html
9、
时间复杂度与什么有关
1、n 问题的规模
2、step,程序的步数
插入排序的 最坏复杂度为 n^2,整体为 a*n^2+b*n+c
为什么不考虑那些常数 和 低阶项, 而只考虑growth rate
因为当n 小 时,该算法运行时间很小,有效率
当n很大时候,运行时间只取决n^2,该项为 高阶项
关注最坏时间复杂度,因为
1有最坏预期,not exceed limited time 比如飞控系统
2dont know the average input
关于平均时间,因为
对于 搜索引擎,常用的 是快排,尽管他的最坏复杂度比归并排序高,但是我们应该考虑的是 平均时间
另外对于不同cpu,不同指令的执行速度时不同的,这里认为对于同一台cpu那些指令都是常数级执行时间的
0 0
- 算法导论第一章,第二章笔记
- 《算法导论》学习笔记 第一章&&第二章&&第三章
- 算法导论笔记第一章
- 算法导论第二章笔记
- <笔记><算法导论><第二章>
- 《算法导论》第一章~第五章 要点笔记
- 算法导论笔记(第一章)
- 《算法导论》学习笔记第一章
- 算法导论 学习笔记 第一章
- 算法导论第二章学习笔记
- 算法导论第二章
- 算法导论第二章
- 算法导论 第二章
- 算法导论 第二章
- 算法导论-第二章
- 算法导论第二章
- 算法导论学习笔记-第二章-算法入门
- 【算法导论】学习笔记第二章:算法入门
- 第三周项目3-求集合并集
- 第四周-项目2 - 建设“单链表”算法库
- xml文件的处理
- MongoDB 基础操作
- jQuery写的一棵动态加载的树
- 算法导论第一章,第二章笔记
- RBAC用户角色权限设计方案
- 是否已安装目标应用
- mysql常用引擎
- am335x-uboot-2014.10移植
- .net异常处理
- 使用git命令上传新的项目到git私有仓库
- 零基础学python-18.9 序列映射函数:map
- 体验复杂度