问题求解与算法
一、问题求解
问题求解的目的是要根据问题的特征发现并优化问题的解决方案。可概括为5步:
1)理解问题特征
2)设计解决方案
3)优化解决方案
4)描述解决方案
5)执行并分析解决方案
二、算法及其特点
在计算领域,把问题求解的解决方案成为算法(Algorithm)。它是计算机科学和计算机应用的核心。算法是一组有穷的规则,他们规定了为解决某一特定问题而采取的一系列运算步骤。
具有5个特点:
1、确定性:算法的每一步运算都必须有确切的含义,即每一种运算应该执行何种操作,产生何种结果必须相当的明确、无二义性。
2、可行性:算法重要执行的运算都是可操作的,至少在原理上能有人在有限的时间内完成。
3、输入:一个算法可以有0个或者多个输入,输入实在算法开始执行之前需要从算法外部取得的必要数据,是可赋予算法的最初的数据值。
4、输出:算法的最终目的是为了求解,“解”就是输出。一个算法能够产生一个或多个输出,他们是与输入有某种特定关系的数据。没有输出的算法是没有意义的。
5、有穷性:一个计算机总是在执行了有穷步运算后终止。
三、算法优劣的标准
1、正确性(Correctness):算法能够正确的执行规定的功能,对于一切合法的输入数据,该算法经过有限时间的执行都能产生正确的结果。
2、时间代价:算法执行时所耗费的时间,当一个算法转化成程序并在计算机上执行时,其运行的时间取决于问题的规模、计算机的硬件的速度和程序设计语言等众多因素。在计算机科学领域中,通常时间复杂度(Time Complexity)来衡量算法的时间代价,它是一个算法运行时间的相对度量。
3、空间代价:算法执行过程中所需的最大存储空间。类似于算法的时间复杂度,通常以算法的渐进空间复杂度(Space Complexity)作为算法所需存储空间的度量。
4、健壮性(Robustness):算法对异常情况进行检查和处理的程度,主要包括对数据异常、环境异常、操作异常和资源异常等情况的检查和处理,保证程序在执行过程中不会出现异常中断或死机现象。
5、可读性(Readability):算法容易阅读和理解的程度。
四、算法描述
程序设计完成之后,必须采用清晰、直观和准确的方式加以表示。这对于将算法转换为程序起着重要作用,能有效提高编程的效率和质量。常用的算法图形表示法主要包括程序流程图(Flowchart)、N-S图和PAD(Problem Analysis Diagram,问题分析图)等
五、计算机问题求解过程
利用计算机求解一个问题一般包括算法开发、算法实现、程序测试和程序维护4个阶段。算法开发产生良好定义的算法;算法实现是编写出能在计算机上运行的程序,该程序实现了求解问题的算法;测试通过程序尽可能多的发现并纠正程序错误;维护是修改算法和程序以纠正测试阶段未发现的错误或满足问题求解新的要求。
算法开发一般包括设计、描述、证明和分析四个阶段。算法实现以算法描述结果作为输入,选择一种计算机语言,编写出正确反映算法计算步骤的程序。算法实现包括源程序编辑、源程序编译、链接、运行和调试等阶段。
六、程序设计知识
要给出解决特定问题的程序,程序设计人员必须根据所求解问题的特征,通过数据抽象提取反映问题本质特征的数据及其结构,并最终确定表示数据及其结构的数据类型,通过过程抽象,确定对数据进行操作的步骤,借助合理的算法描述工具对操作步骤进行准确和清晰的描述,最终将算法转化成用某种高级语言编写的程序。
计算机科学家Nikiklaus Wirth提出了著名的Wirth定律,:程序=数据结构+算法。
在设计一个程序时,要综合运用算法设计与分析、数据结构、科学的程序设计方法、计算机语言及其集成开发环境(Integrated Development Enveironment IDE)4个方面的知识。
算法是灵魂,是程序设计的核心;数据及其结构是程序加工处理的对象,良好的数据结构能有效提高算法的质量。

浙公网安备 33010602011771号