基于计算机算法设计及其评价标准
2018-12-21张晓蓉
文/张晓蓉
计算机工作有其本质特征,主要表现为将人们预先对其设计的计算机算法执行出来。而对于计算机程序来说,计算机算法是其先导和基础,其与数据结构形成了计算机的程序。计算机算法是一种具体的运算序列,主要用来解决实际问题,可以将解决问题有着样的具体过程,详细运算描述出来。计算机算法包括了非数值运算算法和数值运算算法。实际解决问题中,会依据具体情况选择出一种最适合的算法,进而将实际问题得到准确的答案。
1 计算机算法特点与分类
计算机算法特点表现为确定性、有穷性、有一个或多个输出、有零个或者多个输入、有效性。计算机算法在大的分类上有两种,一种是数值运算算法,另一种是非数值运算算法,其中数值运算下面包括了递归法、迭代法、递推法;非数值算法下面包括了穷举法、回溯法、分治法、贪心法。
2 计算机算法的设计与分析
2.1 复杂性的问题
该种问题通常包含了两个方面,其中之一就是算法空间上的复杂性,其中之二就是算法时间上的复杂性。空间复杂具体来说执行计算机的算法所使用空间的大小。时间复杂就是说执行算法时会花费时间作为代价,执行算法的过程中,需要一定工作量。从这点去看,计算机算法有着怎样的工作效率,主要的影响因素包括了算法需要使用的空间以及工作量多少,因此,在设计具体的计算机算法时,应该尽最大的努力降低算法的空间复杂性和时间复杂性。
2.2 稳定可靠性的问题
计算机能不能控制一些错误的传播或积累,这是计算机算法的稳定可靠性问题。计算机在实际计算工作中,处理的那些数值有一个特征,就是比较近似,因为估算或者观测存在误差,初始值并不一定非常精确;另外,当计算机执行计算时,数字的有效数位对其产生一些限制作用。因此,选择何种计算机算法,对该算法实际计算中,存在哪些具体行为,是不是能够将运算的每一个步骤出现的误差,做出有效控制,这样的计算机计算结果才是具有实际的。
2.3 最优化的问题
针对一个具体的问题,假设可以将在规定下计算机算法有着怎样的运算类型确定出来,就能够运用计算机算法构成此问题下面的计算机算法类。在有效的分析了计算机算法后,就能够将针对该问题的算法是不是存在最优算法进行辨别和判断,主要的依据就是分析计算机算法的平均性,或者分析该计算机最坏的情况,假设这样一个情形,对一个问题下的算法类没能设计出一个比当前算法更加简单和快速的算法,这就对于一些大型和中型的问题来说,想要找出一个运算准确的计算机算法,还是存在一定难度的。
2.4 算法其他的问题
计算机算法在设计与分析的过程中,还需要思考计算机算法的自适应问题、简明性问题、精巧性问题、是否能实现约束的问题,对于这些内容应该要做到充分地分析和思考,进而在设计计算机算法时才能有更强的针对性,设计出更加优化合理的计算机算法。
3 优化计算机算法评价标准
在一些研究中,通过实际例子的分析,得出了相应的计算机算法类。其中一个实际设计实例就是n项线性表顺序搜索计算算法,另一个是具有n项线性表对分查找计算机算,后面的算法也被称之为二分法。分析两个实际的例子,顺序搜索用在无序表查找中更加合适,在查找类的算法上,更加简便,有一个平均的查找长度,表示为(n+1)/2,但是如果换成了第二中方法,查找的长度被大大缩短,表示为[log2n]+1。从这点去看,实际应用的情况中,想要各类使用具体状态提升效率,需要利用一些方法,将无序线性表转变成为有序的线性表。并且,对于那种表面看非常简单的事例,还是需要对其的空间复杂性和时间复杂性进行估算,通常估算内容有最坏情况、平均性状,这也不是一个简单的工作。而对于一些各类的常用算法,还好现存的手册和书刊资料都已经成型,也就可以将其作为参考的资料。用户具体应用所需常用算法的时候,就能比较简便地运用当前已有的一些复杂的估算公式,这样可以对此算法能不能使用,或者能不能满足使用需求,进行相应的估算。
实践工作中,对复杂性进行估算,可以线做出一些粗略程度较高的数量估计,像对于排序n项数据中使用的冒泡排序算法,其复杂性的表现是正比例n2的数量级,表示为o(n2)。除了上述方法,还有一种相互比较的方法,能够将算法复杂性大致定量描述出来,例如,一种算法的具体复杂性描述为,n数目增加,其就会增加,假设该算法增长速度低于一个n次多项式算法的增长,就可以将其归类为多项式类的复杂性范围内;假设说该算法的复杂性,表现为指数级别的方式增长时,就可以说此算法复杂性指数类复杂性,其他复杂性的区别以此类推。但是说求解问题时,没有多项式类的算法,在层次方面体现为NP问题。但是实际中还应该考虑计算机算法在空间上的复杂性,两个方向都要有一定的评价标准。
4 结束语
综上所述,计算机算法存在复杂性问题、可靠性问题等等,在设计计算机算法时应该充分考虑到各个问题,进而选择出一个最有的计算机算法,在解决问题时,才能更加快速和准确,提升计算机工作效率,为用户提供更大的便利。