算 法 设 计 与 分 析 论 文
题 目 0-1 背包问题的算法设计策略对比与分析
专 业
班 级
学 号
姓 名
引言
对于计算机科学来说,算法(Algorithm)的概念是至关重要的。算
法是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,
在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于
某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不
同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空
间复杂度与来衡量。
算法可以理解为有基本运算及规定的运算顺序所构成的完整的
解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且
这样的步骤和序列可以解决一类问题。算法可以使用自然语言、伪代
码、流程图等多种不同的方法来描述。
一个算法应该具有以下五个重要的特征:
有穷性:一个算法必须保证执行有限步之后结束;
确切性:算法的每一步骤必须有确切的定义;
输入:一个算法有 0 个或多个输入,以刻画运算对象的初始情况,
所谓 0 个输入是指算法本身定除了初始条件;
输出:一个算法有一个或多个输出,以反映对输入数据加工后的
结果。没有输出的算法是毫无意义的;
可行性:算法原则上能够精确地运行,而且人们用笔和纸做有限
次运算后即可完成。
家尼克劳斯-沃思曾著过一本著名的书《数据结构十算法= 程序》,
可见算法在计算机科学界与计算机 用界的地位。
1 算法复杂性分析的方法介绍
算法的复杂性是算法效率的度量,是评价算法优劣的重要依据。
一个算法的复杂性的高低体现在运行该算法所需要的计算机资源的
多少上面,所需的资源越多,我们就说该算法的复杂性越高;反之,所
需的资源越低,则该算法的复杂性越低。
计算机的资源,最重要的是时间和空间(即存储器)资源。因而,算
法的复杂性有时间复杂性和空间复杂性之分。
不言而喻,对于任意给定的问题,设计出复杂性尽可能地的算法
是我们在设计算法是追求的一个重要目标;另一方面,当给定的问题
已有多种算法时,选择其中复杂性最低者,是我们在选用算法适 遵
循的一个重要准则。因此,算法的复杂性分析对算法的设计或选用有
着重要的指导意义和实用价值。
关于算法的复杂性,有两个 问题要弄清楚:用怎样的一个量来表
达一个算法的复杂性;对于给定的一个算法,怎样具体计算它的复杂
性。
让我们从比较两对具体算法的效率开始。
1.1 比较两对算法的效率
考虑问题 1 :已知不重复且已经按从小到大排好的 m 个整数的数
组 A[1..m] (为简单起见。还设 m=2 k ,k 是一个确定的非负整数)。对
于给定的整数 c,要求寻找一个下标 i,使得 A[i]=c ;若找不到,则返回
一个 0。
问题 1 的一个简单的算法是:从头到尾扫描数组 A 。照此,或者扫
到 A 的第 i 个分量,经检测满足 A[i]=c ;或者扫到 A 的最后一个分量,
经检测仍不满足 A[i]=c 。我们用一个函数 Search 来表达这个算法:
Function Search (c:integer):integer;
Var J:integer;
Begin
J:=1; {初始化}
{在还没有到达 A 的最后一个分量且等于 c 的分量还没有找到时,
查找下一个分量并且进行检测}
While (A[i]c)and(jm) do
j:=j+1;
If A[j]=c then search:=j {在数组A 中找到等于c 的分量,且此分
量的下标为j}
else Search:=0; {在数组中找不到等于 c 的分量}
End;
容易看出,在最坏的情况下,这个算法要检测 A 的所有 m 个分量
才能判断在 A 中找不到等于 c 的分量。
解决 问题 1
您可能关注的文档
最近下载
- 2026浙江嘉兴市申嘉有轨电车运营管理有限公司招聘工作人员7人笔试备考试题附答案解析.docx VIP
- 2026浙江嘉兴市申嘉有轨电车运营管理有限公司招聘工作人员7人笔试备考题库附答案解析.docx VIP
- 2026浙江嘉兴市申嘉有轨电车运营管理有限公司招聘工作人员7人考试参考题库附答案解析.docx VIP
- 2026浙江嘉兴市申嘉有轨电车运营管理有限公司招聘工作人员7人笔试参考题库附答案解析.docx VIP
- 北京地铁10号线二期01标起点~潘家园站的区间侧穿既有十号线施工方案汇报.ppt VIP
- 北京地铁十号线二期角门西站暗挖施工方案.docx VIP
- 2005年国家法律职业资格考试《客观题卷一》真题.doc VIP
- 2021上海春考语文卷解析(《刘铎传》和《见苏仁仲提举书》的全文翻译).pptx VIP
- 浙江省2025届九年级下学期中考模拟(六)数学试卷(含答案).pdf VIP
- 骨髓增生异常综合症护理查房.pptx VIP
原创力文档

文档评论(0)