资源预览内容
第1页 / 共36页
第2页 / 共36页
第3页 / 共36页
第4页 / 共36页
第5页 / 共36页
第6页 / 共36页
第7页 / 共36页
第8页 / 共36页
第9页 / 共36页
第10页 / 共36页
亲,该文档总共36页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
优质文档1.1 算法 考点1 算法的根本概念 计算机解题的过程事实上是在实施某种算法,这种算法称为计算机算法。 算法(algorithm)是一组严谨地定义运算依次的规那么,并且每一个规那么都是有效的,同时是明确的;此依次将在有限的次数后终止。算法是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作。 1算法的根本特征 (1)可行性(effectiveness):针对实际问题而设计的算法,执行后能够得到满足的结果。 (2)确定性(definiteness):算法中的每一个步骤都必需有明确的定义,不允许有模棱两可的说明和多义性。 (3)有穷性(finiteness):算法必需在有限时间内做完,即算法必需能在执行有限个步骤之后终止。 (4)拥有足够的情报:要使算法有效必需为算法供给足够的情报当算法拥有足够的情报时,此算法才最有效的;而当供给的情报不够时,算法可能无效。 2算法的根本要素 (1)算法中对数据的运算和操作:每个算法事实上是按解题要求从环境能进展的全部操作中选择适宜的操作所组成的一组指令序列。 计算机可以执行的根本操作是以指令的形式描述的。一个计算机系统能执行的全部指令的集合,称为该计算机系统的指令系统。计算机程序就是按解题要求从计算机指令系统中选择适宜的指令所组成的指令序列在一般的计算机系统中,根本的运算和操作有以下4类: 算术运算:主要包括加、减、乘、除等运算; 逻辑运算:主要包括“和”、“或”、“非”等运算; 关系运算:主要包括“大于”、“小于”、“等于”、“不等于”等运算; 数据传输:主要包括赋值、输入、输出等操作。 (2)算法的限制构造:一个算法的功能不仅仅取决于所选用的操作,而且还和各操作之间的执行依次有关。算法中各操作之间的执行依次称为算法的限制构造。 算法的限制构造给出了算法的根本框架,它不仅确定了算法中各操作的执行依次,而且也干脆反映了算法的设计是否符合构造化原那么。描述算法的工具通常有传统流程图、N-S构造化流程图、算法描述语言等。一个算法一般都可以用依次、选择、循环3种根本限制构造组合而成。 (3)算法设计的根本方法 计算机算法不同于人工处理的方法,下面是工程上常用的几种算法设计,在实际应用时,各种方法之间往往存在着必须的联系。 (1)列举法 列举法是计算机算法中的一个根底算法。列举法的根本思想是,依据提出的问题,列举全部可能的状况,并用问题中给定的条件检验哪些是须要的,哪些是不须要的。 列举法的特点是算法比拟简洁。但当列举的可能状况较多时,执行列举算法的工作量将会很大。因此,在用列举法设计算法时,使方案优化,尽量削减运算工作量,是应当重点留意的。 (2)归纳法 归纳法的根本思想是,通过列举少量的特殊状况,经过分析,最终找出一般的关系。从本质上讲,归纳就是通过视察一些简洁而特殊的状况,最终总结出一般性的结论。 (3)递推 递推是指从确定的初始条件启程,逐次推出所要求的各中间结果和最终结果。其中初始条件或是问题本身已经给定,或是通过对问题的分析和化简而确定。递推本质上也属于归纳法,工程上很多递推关系式事实上是通过对实际问题的分析和归纳而得到的,因此,递推关系式往往是归纳的结果。对于数值型的递推算法必须要留意数值计算的稳定性问题。 (4)递归 人们在解决一些困难问题时,为了降低问题的困难程度(如问题的规模等),一般总是将问题逐层分解,最终归结为一些最简洁的问题。这种将问题逐层分解的过程,事实上并没有对问题进展求解,而只是当解决了最终那些最简洁的问题后,再沿着原来分解的逆过程逐步进展综合,这就是递归的根本思想。 递归分为干脆递归和间接递归两种。 (5)减半递推技术 实际问题的困难程度往往和问题的规模有着亲密的联系。因此,利用分治法解决这类实际问题是有效的。工程上常用的分治法是减半递推技术。 所谓“减半”,是指将问题的规模减半,而问题的性质不变;所谓“递推”,是指重复“减半”的过程。 (6)回溯法 在工程上,有些实际问题很难归纳出一组简洁的递推公式或直观的求解步骤,并且也不能进展无限的列举。对于这类问题,一种有效的方法是“试”。通过对问题的分析,找出一个解决问题的线索,然后沿着这个线索逐步摸索,假设摸索胜利,就得到问题的解,假设摸索失败,就逐步回退,换别的路途再逐步摸索。 4算法设计的要求 通常一个好的算法应到达如下目标:(l)正确性(correctness) 正确性大体可以分为以下4个层次: 程序不含语法错误; 程序对于几组输入数据能够得出满足规格说明要求的结果; 程序对于细心选择的典型、苛刻而带有刁难性的几组输入数据能够得出满足规格说明要求的结果; 程序对于一切合法的输入数据都能产生满足规格说明要求的结果。 (2)可读性(readability) 算法主要是为了便利入的阅读和沟通,其次才是其执行。可读性好有助于用户对算法的理解;晦涩难懂的程序易于隐藏较多错误,难以调试和修改。 (3)强健性(robustness) 当输入数据非法时,算法也能适当地做出反响或进展处理,而不会产生稀里糊涂的输出结果。 (4)效率和低存储量需求 效率指的是程序执行时,对于同一个问题假如有多个算法可以解决,执行时间短的算法效率高;存储量需求指算法执行过程中所须要的最大存储空间考点2 算法的困难度 1算法的时间困难度 算法的时间困难度,是指执行算法所须要的计算工作量。同一个算法用不同的语言实现,或者用不同的编译程序进展编译,或者在不同的计算机上运行,效率均不同。这说明运用确定的时间单位衡量算法的效率是不适宜的。撇开这些和计算机硬件、软件有关的因素,可以认为一个特定算法“运行工作量”的大小,只依靠于问题的规模(通常用整数n表示),它是问题的规模函数。即 算法的工作量=f(n) 例如,在NN矩阵相乘的算法中,整个算法的执行时间和该根本操作(乘法)重复执行的次数n3成正比,也就是时间困难度为n3,即 f(n)=O(n3) 在有的状况下,算法中的根本操作重复执行的次数还随问题的输入数据集不同而不同。例如在起泡排序的算法中,当要排序的数组a初始序列为自小至大有序时,根本操作的执行次数为氏当时始序列为自大至小有序时,根本操作的执行次数为n(n-1)/2。对这类算法的分析,可以承受以下两种方法来分析。 (1)平均性态(Average Behavior) 所谓平均性态是指各种特定输入下的根本运算次数的加权平均值来度量算法的工作量。 设x是全部可能输入中的某个特定输入,p(x)是x出现的概率(即输入为x的概率),t(x)是算法在输入为x时所执行的根本运算次数,那么算法的平均性态定义为 其中Dn表示当规模为n时,算法执行的全部可能输入的集合。 (2)最坏状况困难性(Worst-case Complexity) 所谓最坏状况分析,是指在规模为n时,算法所执行的根本运算的最大次数。 2算法的空间困难度 算法的空间困难度是指执行这个算法所须要的内存空间。 一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所须要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据构造所须要的附加存储空间。假如额外空间量相对于问题规模来说是常数,那么称该算法是原地(in place)工作的。在很多实际问题中,为了削减算法所占的存储空间,通常承受压缩存储技术,以便尽量削减不必要的额外空间。考点3 数据构造的定义 数据构造(data structure)是指相互之间存在一种或多种特定关系的数据元素的集合,即数据的组织形式。 数据构造作为计算机的一门学科,主要探究和探讨以下三个方面: (l)数据集合中个数据元素之间所固有的逻辑关系,即数据的逻辑构造; (2)在对数据元素进展处理时,各数据元素在计算机中的存储关系,即数据的存储构造; (3)对各种数据构造进展的运算。 探讨以上问题的日的是为了提高数据处理的效率,所谓提高数据处理的效率有两个方面: (l)提高数据处理的速度; (2)尽量节约在数据处理过程中所占用的计算机存储空间。 数据(data):是对客观事物的符号表示,在计算机科学中是指全部能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(data element):是数据的根本单位,在计算机程序中通常作为一个整体进展考虑和处理。 数据对象(data object):是性质一样的数据元素的集合,是数据的一个子集。 在一般状况下,在具有一样特征的数据元素集合中,各个数据元素之间存在有某种关系(即连续),这种关系反映了该集合中的数据元素所固有的一种构造。在数据处理领域中,通常把数据元素之间这种固有的关系简洁地用前后件关系(或干脆前驱和干脆后继关系)来描述。 前后件关系是数据元素之间的一个根本关系,但前后件关系所表示的实际意义随具体对象的不同而不同。一般来说,数据元素之间的任何关系都可以用前后件关系来描述。 1数据的逻辑构造 数据构造是指反映数据元素之间的关系的数据元素集合的表示。更通俗地说,数据构造是指带有构造的数据元素的集合。所谓构造事实上就是指数据元素之间的前后件关系。 一个数据构造应包含以下两方面信息: (1)表示数据元素的信息; (2)表示各数据元素之间的前后件关系。 数据的逻辑结果是对数据元素之间的逻辑关系的描述。它可以用一嘎数据元素的集合和定义在此集合中的假设干关系来表示。 数据的逻辑构造包括集合、线性构造、树型构造和图形构造四种。 线性构造:数据元素之间构成一种依次的线性关系。 树型构造:数据元素之间形成一种树型的关系 数据的逻辑构造有两个要素:一是数据元素的集合,通常记为D; 二是D上的关系,它反映了数据元素之间的前后件关系,通常记为R。一个数据构造可以表示成B=C,R 其中B表示数据构造。为了反映D中各元素之间的前后件关系,一般用二元组来表示。 例如,复数是一种数据构造,在计算机科学中,复数可取如下定义: B=C,R 其中,C是含有两个实数的集合c1,c2;R是定义在集合C上的一种关系,其中有序偶表示c1是复数的实部,c2是复数的虚部。 2数据的存储构造 数据的逻辑构造在计算机存储空间中的存放形式,称为数据的存储构造也称为数据的物理构造。 由于数据元素在计算机存储空间中的位置关系可能和逻辑关系不同,因此,为了表示存放在计算机存储空间中的各数据元素之间的逻辑关系即前后件关系,在数据的存储构造中,不仅要存放各数据元素的信息,还须要存放各数
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号