专注Java教育14年 全国咨询/投诉热线:444-1124-454
星辉LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 浅谈算法设计要求

浅谈算法设计要求

更新时间:2020-12-29 17:48:27 来源:星辉 浏览901次

算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。算法概念的诞生到如今算法体系的成熟,经历了许多的波折,也孕育出了许多的优质算法。算法本身还是人为设计出来的,因此,算法设计要求也是客观存在的。

 

算法中的指令描述的是一个计算,当其运行时能从一个初始状态和(可能为空的)初始输入开始,经过一系列有限而清晰定义的状态,最终产生输出并停止于一个终态。一个状态到另一个状态的转移不一定是确定的。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。下面我们从这些对算法的描述出发来看算法的设计要求。

 

1.正确性

算法至少应该具有输入,输出和加工处理无歧义性,能正确反映问题的需求,能够得到问题的正确答案 算法程序没有语法错误 算法程序对于合法输入能够产生满足要求的输出。

 

2.可读性(算法设计另一目的是为了便于阅读,理解和交流)

算法主要是为了人的阅读与交流,其次才是机器执行。可读性好有助于人对算法牟理解;晦涩难懂的程序易于隐藏较多错误,难以调试和修改。

 

3.健壮性

当输入数据非法时,算法也能适当地做出反应或进行处理,而不会产生黄晓明其妙的输出结果。例如,一个求凸多边形面积的算法,是采用求各三角形面积之和的策略来解决问题的。当输入的坐标集合表示的是一个凹多边形时,不应继续计算,而应报告输入出错。并且处理出错的方法应是返回一个表示错误或错误性质的值,而不是打印错误信息或异常,并中止程序的执行,以便在更高的抽象层次上进行处理。

 

4.时间效率高和存储量低

通俗地说,效率指的是算法执行的时间。对于同一个问题如果有多个算法可以解决,执行时间短的算法效率高。存储量需求算法执行过程中所需要的最大存储空间。效率与低存储量需求这两者都与问题的规模有关。求 100 个人的平均分与求 1000 个人的平均分所花的执行时间或运行空间显然有一空差别。

 

显然,同一个算法用不同的语言实现,或者用不同的编译器进行编译,或者在不同的计算机运行时,效率均不相同。这表明使用绝对的时间单位衡量算法的效率是不合适的。撇开这些与计算机硬件、软件有关的因素,可以认为一个特定算法“运行工作量”的大小,只依赖于问题的规模(通常用整数量 n 表示),或者说,它是问题规模的函数。

 

以上就是算法设计要求的全部内容,只有满足这些要求,设计出来的算法才能算是合理的。从某种程度上来说,算法设计要求和算法的一些特征是不谋而合的。想要设计出一个优秀的算法,还是有很大难度的,我们只能量力而行,在本站的数据结构和算法教程中先学习一些广为人知的优秀算法,得出自己的心得,以便我们设计出合格的算法。


提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>