算法初论

1 ,算法的基本概念

算法的概念在计算机科学领域几乎无处不在, 在各种计算机软件系 统的实现中,算法设计往往处于核心地位。例如, 操作系统是现代计算 机系统中不可缺少的系统软件, 操作系统的各个任务都是一个单独的问 题, 每个问题由操作系统中的一个子程序根据特定的算法来实现。用什 么方法来设计算法,如何判定一个算法的优劣, 所设计的算法需要占用 多少时间资源和空间资源 , 在实现一个软件系统时 , 都是必须予以解决 的重要问题。

2, 为什么要学习算法
用计算机求解任何问题都离不开程序设计 , 而程 序设计 的核心 是算法 设计。一般来说 , 对程序设计的研究 可以 分为 4 个 层次 : 算法、方 法学、语 言和工具 , 其中算法研究位于最高层次。算 法对程 序设计的 指导可 以延续 几年甚至几十年 , 它不依赖于方法学、语言 和工具的 发展与变 化。例如 , 用 于数据存储和检索的 Hash 算法产生于 20 世纪 50 年代, 用于排序的快速 排序算法发明于 20 世纪 60 年代, 但它们至今仍被人们广为使用, 可是程 序设计方法已经从结构化发展到面向对象, 程序设计语言也变化了几代, 至于编程工具很难维持 3 年不变。所以, 对于从事计算机专业的人士来说 , 学习算法是非常必要的。学习算法还能够提高人们分析问题的能力。算法可以看作是解决问题的
一类特殊方法——它不是问题的答案 , 而是经过 精确定 义的用来获得 答案 的求解 过程。

  因此,无论是否涉及计算机,特定的算法设计技术都可以看作是问题求解的有效策略。著名的计算机科学家科努(Donald Knuth)是这样论述这个问题的:“受过良好训练的计算机科学家知道如何处理算法,如何构造算法、操作算法、理解算法以及分析算法 , 这些知识远不只是为了编写良好的计算机程序而准备的。算法是一种一般性的智能工具,一定有助于我们对其他学科的理解,不管是化学、语言学、音乐还是另外的学科。为什么算法会有这种作用呢?我们可以这样理解:人们常说,一个人只有把知识教给别人,才能真正掌握它。实际上,一个人只有把知识教给计算机,才能真正掌握它,也就是说,将知识表述为一种算法⋯⋯比起简单地按照常规去理解事物,用算法将其形式化会使我们获得更加深刻的理解。”

 算法研究的核心问题是时间(速度)问题。人们可能有这样的疑问: 既然计算机硬件 技术的发展使得计算机的性能不断提高 , 算法的研究还有必要吗?计算机的功能越强大,人们就越想去尝试更复杂的问题,而更复杂的问题需要更大的计算量。现代计算技术在计算能力和存储容量上的革命仅仅提供了计算更复杂问题的有效工具,无论硬件性能如何提高,算法研究始终是推动计算机技术发展的关键。下面看几个例子。

 检索技术

  20 世纪 50 年代 ~ 60 年代, 检索的对象是规模比较小的数据集合。例如, 编译系统中的标识符表,表中的记录个数一般在几十至数百这样的数量级。
  20 世纪 70 年代 ~ 80 年代, 数据管理采用数据库技术, 数据库的规模在 K 级或 M 级 , 检索算法的研究在这个时期取得了巨大的进展。
  20 世纪 90 年代以来, Internet 引起计算机应用的急速发展, 海量数据的处理技术成 为研究的热点 , 而且数据驻留的存储介质、数据的存储方法以及数据的传输技术也发生了 许多变化 , 这些变化使得检索算法的研究更为复杂 , 也更为重要。

  压缩与解压缩
  随着多媒体技术的发展,计算机的处理对象由原来的字符发展到图像、图形、音频、视 频等多媒体数字化信息,这些信息数字化后 , 其特点就是数据量非常庞大,同时,处理多媒算法固有的精确性限制了它所能够解决的问题种类, 比如说 ,我们无法找到一个使人生活快乐的算法, 也不 能找到一个使人富有和出名的算法。体所需的高速传输速度也是计算机总线所 不能 承受的。 因此 , 对 多媒体 数据 的存 储和传 输都要求对数据进行压缩。声音文件的 MP3 压缩技术说明了压缩与解压缩算法研究的 巨大成功 , 一个播放 3~4 分钟歌曲的 MP3 文件通常只需 3MB 左右的磁盘空间。

  信息安全与数据加密
 在计算机应用迅猛发展的同时 , 也面临着 各种 各样 的威胁。 一位酒 店经 理曾 经描述 了这样一种可能性 :“如果我能破坏网络的安全性 , 想想你在网络上预订 酒店房 间所提供 的信息吧 ! 我可以得到你的名字、地址、电话号码和信用卡号码,我知道你现在的位置,将 要去哪儿, 何时去,我也知道你支付了多少钱, 我已经得到足够的信息来盗用你的信用 卡 !”这的确是一个可怕的情景。所以 , 在电子商 务中 , 信 息安 全是最 关键 的问题 , 保证信 息安全的一个方法就是对需要保密的数据 进行 加密。在 这个 领域 , 数据 加密 算法 的研究 是绝对必需的 , 其必要性与计算机性能的提高无关。

3,算法及其重要特性
算法(algorithm)被公认为是计算机科学的基石。通俗地讲, 算法是解决问题的方 法。严格地说 , 算法是对特定问题求解步骤的一种描述 , 是指令的有限序列 , 此外 , 算法还 必须满足下列 5 个重要特性 (如图 1 .1 所示) :

(1) 输入: 一个算法有零个或多个输入。算法的输入来源于两种方式: 一种是从外 界获得数据 , 另一种是由算法自己产生被处理的数据。
(2) 输出: 一个算法有一个或多个输出。既然算法是为解决问题而设计的, 那么算 法实现的最终目的就是要获得问题的解。没有输出的算法是无意义的。
(3) 有穷性: 一个算法必须总是(对任何合法的输入)在执行有穷步之后结束,且每 一步都在有穷时间内完成。
(4) 确定性: 算法中的每一条指令必须有确切的含义,不存在二义性。并且,在任何 条件下 , 对于相同的输入只能得到相同的输出。
(5) 可行性: 算法描述的操作可以通过已经实现的基本操作执行有限次来实现。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值