算法导论 观后感一

此文章只作为自己看算法导论的一些理解和想法,希望自己能坚持下去。

算法的在计算中的应用

什么是算法?算法的作用?为什么要研究算法?对于算法我常有的想法是必然和数学相关,而且必定是高等数学之上的。甚至很多目前存在的问题可能找不到合适的算法。那么算法是什么呢?
在书中说的是:任何良定义计算过程,该过程取某个值或值的集合作为输入产生****某个值或值的集合作为输出。算法就是把输入转换成输出的计算步骤的一个序列。
对比《计算机程序设计艺术》对算法的特征归纳,良定义可以认为是算法的描述必须无歧义、明确,必然在有限个步骤内完成,并且可以实现。这就是良定义的含义。这里无歧义、明确表示的是算法的执行结果是精确的符合要求和期望。
这里算法就成了求解良说明的计算问题的工具,问题的陈述说明了期望的输入和输出的关系,而算法则描述了一个特定的计算过程来实现这种关系。
例如,简单的排序,期望的输入输出关系是给一个乱序的数组,期望输出一个从小到大或者从大到小的序列。各种排序算法就实现了这种关系。类似一个黑箱,外面只有输入口和输出口,而我们就要创建这种黑箱。
算法可以解决很多问题,应用在各个领域基因工程,电子商务,制造业,互联网等,有些领域的细节已经超出了《算法导论》可以涵盖的范围;还有一些实际问题,最短路径,最长重叠子串,部件依赖,等。这些问题都有两个特征:
1、存在很多候选介,但绝大多数没有解决问题,需要寻找一个真正的解或者最好的解。
2、存在实际应用。
当然算法解决的每个问题并不都存在一个容易识别的候选解集。例如,给定一组表示信号样本的数值,这里需要用到离散傅里叶变换(FFT)。

当然数据结构也是在设计算法时所必须的,我们要知道几种数据结构的优势和局限。

当然也有算法目前还解决不了的问题,我们还不知道有效的解法。例如NP完全问题(是世界七大数学难题之一。 NP的英文全称是Non-deterministic Polynomial的问题,即多项式复杂程度的非确定性问题。简单的写法是 NP=P?,问题就在这个问号上,到底是NP等于P,还是NP不等于P。摘自百度百科)。目前还没有一个对NP完全问题的有效算法。NP完全问题为何那么重要,因为在实际生活中它会时不时的出现,目前只能找到一个好的解,但不一定是最好的解。

目前处理器时钟速度能以某个持续比率增加很多年,但物理上的限制对不断增加的时钟速度给出了一个基本路障,因为功率密度,一旦时钟速度足够快,芯片有可能会融化,即使存在冷却。因此现在计算机多是多核的,我们设计算法必须要考虑并行性。

练习:
1.1 现实生活中需要排序的一个例子或者需要计算凸壳的例子。
1.2 除了速度外还有哪些关于效率的度量
1.3 对已知的数据结构讨论他们的优势和局限性。
1.4 最短路径和商旅问题有哪些相似和不同之处
1.5 提供现实中的一个问题,其中只有最佳解才行;然后在提供一个问题,其近似最佳解也足够好。

可见算法一定不可脱离实际,是与实际应用紧密联系的技术。

回答:
1.1 对于排序生活中有很多的应用,属于基础中的基础。凸壳就是给定平面上的n个点,包含这些点的最小的凸多边形。生活中会用到类似凸壳的例子有
1.2 这里我们可以理解为,处理相同事务所使用的资源量,资源可以看成是时间,空间,电量等一切资源,目前多考虑的是时间和空间资源,即运行速度,和内存使用。而对于其他资源如电量,材料等资源我们不在算法中考虑。而效率的度量方法可以运行后度量,运行前度量,显然运行前度量更重要,因为如果一个程序运行很久,我们不可能等它完成。第二种就是以复杂度来度量,主要是时间复杂度和空间复杂度。我们这里主要考虑算法复杂度,即时间复杂度和空间复杂度,时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。
1.3 常用的有以下数据结构:
算法导论 观后感一_第1张图片

名称 优点 缺点
队列
数组
链表
散列表

1.4 最短路径和商旅问题有哪些相似和不同之处
1.5 提供现实中的一个问题,其中只有最佳解才行;然后在提供一个问题,其近似最佳解也足够好

你可能感兴趣的:(算法)