add a summary on dsa chp1.

This commit is contained in:
Shine wOng
2019-10-15 19:08:32 +08:00
parent 0ea635e8f5
commit 22de3cb18c
2 changed files with 9 additions and 3 deletions

View File

@@ -1,6 +1,12 @@
数据结构与算法第一章知识总结
=========================
## 知识脉络
本章主要讨论算法的基本概念与基本知识。一开始指出了算法的概念,并且通过算法的三个历史发展来进一步阐述什么是算法。在客观世界中,解决同一个问题往往具有许多不同的方法,即存在不同的算法,因此需要就这些不同的算法的性能进行评价,为了消除外界因素的影响,需要引入理想模型,即图灵机和随机存取机`RAM`,并且在此基础上提出了`渐进分析`的概念。`渐进分析`具有三种(四种)不同的记号,它们具有不同的含义,通过这些记号就可以实现对算法的评估了。
接下来的内容主要是对上面知识的应用,即在两种特定情形——迭代与递归——下,如何对算法的效率进行评价。对于迭代算法而言,核心的方法就是级数求和,借助图形来进行分析却更有直观性;对于递归算法而言,核心的方法是递归跟踪和递推公式,并且结合两个具体的实例`sum``max2`来分别阐述迭代和递归算法的效率分析。
正如客观世界的发展一样,算法的设计过程往往也是曲折的,具有一个从`work``right`再到`fast`的发展过程,也就是动态规划的概念。动态规划是指,分析一开始设计出来的效率较低的算法,找到它低效的原因,随后自底向上对它进行改进。接下来通过两个具体的例子,即`fib``lcs`,详细说明了对它们进行动态规划的步骤。
## 为什么需要数据结构和算法
讨论这个问题之前,先想想究竟什么是计算机,又什么是算法。

View File

@@ -160,9 +160,9 @@ string lcsIt(string one, string two, int len1, int len2){
> 考查序列`A = "immaculate`和`B = "computer`。1它们的`LCS`是什么2这里的解是否唯一是否有歧义性3按照本节所给的算法找出的是哪一个解
1`"mute"``"cute"`
2所以显然不唯一有歧义性。
3按照上面给的算法优先从上方进行更新即优先选择序列`A`更靠前的字符,即找出的是`"mute"`
+ 1`"mute"``"cute"`
+ 2所以显然不唯一有歧义性。
+ 3按照上面给的算法优先从上方进行更新即优先选择序列`A`更靠前的字符,即找出的是`"mute"`
> 实现`LCS`算法的递归版和迭代版,并通过实测比较运行时间。