算法基础理论介绍

算法基础理论介绍

最近一段时间阅读了清华大学出版社的“算法设计与分析基础(第二版)”,读完之后,感觉自己对算法有了一个新的认识,在这与大家分享。
该书以分组的方式对部分算法进行了介绍,让读者可以对算法有一个十分清晰的逻辑认识。

第一章主要是对算法概念、日常生活中常见的问题类型、以及基本的数据结构这三方面的介绍。

算法概念

算法是一系列解决问题的清晰指令,也就是说,对于符合一定规范的输入,能够在有限时间内获得所要求的输出。

问题分类

日常生活中,我们可以将常见的问题分为以下几类:排序、查找、字符串处理、图问题、组合问题、几何问题、数值问题等。
排序问题就是按照一定的要求对给定列表中的键(为进行排序选定的关键信息)进行排序。
查找问题就是在给定的集合(包括多重集,即允许多个元素具有相同的值)中寻找一个给定的值,该值也叫查找键。
字符串是字母表中的符号所构成的序列,字符串处理问题主要是指字符串的匹配问题。
图问题是最为古老也最有趣的领域。我们可以将图看作是由一些称为顶点的点构成的集合,其中某些顶点由一些称为边的线段相连。
组合问题是计算领域中组难的问题。主要是出于以下几个原因:
1、随着问题规模的增大,组合对象的数量增长极快,即使是中等规模的实例,其组合规模也会达到不可思议的数量级;
2、还没有一种已知的算法能够在规定时间内,精确地解决绝大多数的此类问题。
几何问题主要是处理类似于点、线、多面体这样的几何对象。比较经典的两个计算几何问题是最近对问题和凸包问题。
数值问题是另一个广阔的具体应用领域,涉及具有连续性的数学问题:像解方程和方程组、计算定积分以及求函数的值等。

数据结构

基本的数据结构主要包括:线性数据结构(数组和链表)、树、集合与字典(可以实现在集合中可以实现查找一个给定元素、增加新元素和删除一个元素这三个操作的数据结构称为字典)

第二章主要是是对算法分析框架的介绍。

分析框架

为了对算法进行度量,该书介绍了一个分析算法效率的一般性框架。在此之前,我们必须了解这两种算法效率:时间效率和空间效率(时间效率指出正在运行的算法运行得有多快;空间效率关心算法所需的额外空间)。
关于输入规模的度量,要根据不同算法所讨论的不同对象来进行考虑。如果算法对于输入的每一个独立字符都要做检查,我们应该使用字符的数量来度量输入规模,如果它的操作是以词为单位的,我们应该统计词的数量。
关于算法运行时间的度量,我们通常不会选择算法程序的运行时间来进行度量(该时间依赖于特定计算机的执行速度、算法程序的实现质量以及编译器的使用种类),而是选择对算法基本操作(算法中最重要的操作)的执行次数进行统计,来进行效率度量。
注意,对于大规模的输入,我们的算法分析框架通常会忽略乘法常量,而仅关注执行次数的增长次数及其常数倍数。

渐进符号

为了对增长次数进行进行比较与归类,计算机科学家使用了三种符号:Ο、Ω、Θ,具体应用如下:
在这里插入图片描述
算法的渐进效率类型如下:
在这里插入图片描述

之后的章节主要就是对各种算法的介绍了,包括:蛮力法、分治法、减治法、变治法、是空权衡、动态规划、贪婪技术、迭代改进、算法能力的极限、超越算法能力的极限。大家有兴趣可以去读一读。

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值