算法导论笔记(1):七种类型的问题

1排序

排序问题,就是把一个列表中的数据按照不减的顺序重新组合。排序算法有若干重要的应用:1)搜索。在搜索算法中,常常需要输入的数据是排好序的。2)排序在几何问题和数据压缩中也有很重要的应用。3)贪心法——一个重要的算法设计技术——中,也要求输入的数据是排好序的。

有若干好的排序算法,可以在nlog2n的时间之内对大小为n的数组进行排序。另外,可以证明,没有任何基于关键值比较的算法(不是只比较关键值的一部分)具有更低的复杂性。但是仍然有很多人在研究排序算法,其原因如下:有的算法实现比较简单,但是效率较低;有的算法高效但是复杂;有的算法比较适应于处理随机数组;有的算法则比较适合处理几乎已经排好序的列表;有的算法适合处理快速存储中的数组,有的算法则比较适合处理存储在硬盘上的大文件。

排序算法有两个重要的属性:稳定性(stable)和对额外内存的需求。很多时候,我们要对一组记录进行排序,而排序的依据是记录中的关键值(key)。如果对于具有相同关键值的记录,排序算法并不改变其在输入中的相对位置,则称这个算法是稳定的。例如,假若要对一组关于学生的记录按照其成绩排队,而其输入是按照学生姓名的字母表顺序的。那么,通常要求,在排序结束之后,具有相同分数的学生,依然按照其姓名的字母表顺序出现,而满足这样要求的排序算法就是稳定的。一般情况下,不稳定的算法会快一些。

如果一个算法不要求额外的内存(或者之要求少许的内存单元),则称这个算法是in-place的。

2搜索

在给定的集合中寻找一个给定的值。有很多搜索算法,从直接的顺序搜索到高效但有局限性的二分法搜索。算法也基于集合的不同表示,以便有助于搜索。

对于搜索而言,同样没有一个普适的算法。某些快速的算法需要更多的内存;某些快速算法只能应用于已经排好序的队列。搜索可能常常伴随着另外两中操作:向集合中添加和从集合中删除。在这种情况下,数据结构和算法的选择就非常重要。为快速搜索来组织非常大的数据集合也是一件重大的挑战。

3字符串处理

字符串处理中的一项非常重要的算法就是字符串匹配(stringmaching),也就是从给定的文本中搜索给定的字符串。

4图问题

图问题是算法领域中最古老和最有趣的问题之一。图就是点和线的集合,线用于连接两个点。图可以为很多应用建模,包括:交通,通信,社会和经济网,项目调度和游戏。

基本的图算法包括:图遍历,最短路径和有向图的拓扑排列。有些图问题是非常计算的,例如著名的旅行商问题以及图着色问题。旅行商问题就是找到访问每个城市一次的最短路径,对应的应用包括路线规划、电路板和VLSI芯片构造、X射线结晶和基因工程等。图着色问题是为图中的点涂上颜色,在保证图中有边相连的点具有不同颜色的前提下,寻找最少的颜色数。典型的应用是事件调度,点代表事件,有边相连的点不能同时调度。问题的解就是一个优化的调度方案。

5组合问题

从一个更为抽象的角度来看,旅行商问题和图着色问题都是组合问题的具体例子。组合问题就是找出一个满足特定约束的组合对象,可以是排列、组合或者子集。这写对象也可能被要求具有某些属性,例如具有最大值或者最小代价。

一般而言,无论从理论还是现实角度来看,组合问题都是计算领域中最难的问题,原因如下:首先,组合对象的数目往往随着问题的规模而急剧增长,即便对于中等规模的问题,其数目也可能达到不可思议的程度;其次,对于很多问题,没有已知的算法能在可以接受的时间内给出解。甚至很多计算科学家认为这些算法不存在。

某些组合问题具有高效的算法,但它们常被认为是幸运的特例。

6几何问题

几何问题处理点、线和多面体的几何对象。古希腊人对设计算法(他们并不称之为算法)来解决几何问题很感兴趣,例如尺规作图。现代计算机中的几何问题包括计算机图形学、机器人和断层摄影学等。

7数值问题

数值问题包括解方程和方程组、计算积分、获得函数值等等。大部分的数学问题都只能获得近似解。另外,这类问题往往要求操作实数,而实数在计算机上只能近似表示。并且,近似表示可能导致舍入误差的积累,从而可能产生戏剧化的结果。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值