问题求解的过程

来自计算思维百科
跳转至: 导航搜索

问题求解是计算科学的根本目的之一。

基本概念

问题求解是计算科学的根本目的之一,计算科学也是在问题求解的实践中逐渐发展壮大的。既可用计算机来求解如数据处理、数值分析等问题,也可用计算机来求解如物理学、化学和心理学所提出的问题。计算理论与许多其他学科相互影响,特别是计算科学的发展所产生的影响大大超出计算科学的范围。

问题的抽象

随着科学技术对研究对象的日益精确化、定量化和数学化,数学模型已成为处理各种实际问题的重要工具,并在自然科学、社会科学和工程技术等领域中得到广泛应用。数学模型是连接数学与实际问题的桥梁,数学是工具,解决问题是目的。在建模过程中,从要解决的问题出发,引出数学方法,最后再回到问题的解决中去。

建立数学模型的一般步骤是:

① 对问题进行观察,研究其运动变化情况,用自然语言进行描述,初步确定总的变量及相互关系。

② 确定问题的所属系统、模型类型以及描述系统所用的数学工具,提出假说。假说表明了数学模型的抽象性。

③ 将假说进行扩充和形式化。选择具有关键性作用的变量及其相互关系,进行简化和抽象,将问题的内在规律用数字、图表、公式、符号表示出来,经过数学上的推导和分析,得到定量或定性关系,初步形成数学模型。

④ 根据现场试验和对试验数据的统计和分析,估计模型参数。

⑤ 检验修改模型。模型只有在被检验、评价、确认基本符合要求后,才能被接受;否则需要修改模型。

建立数学模型,可能会涉及许多数学知识,一个问题往往可以利用不同方法建立不同的模型。建模中的思维方法就是通过对现实问题的观察、归纳、假设,然后进行抽象,并将其转化为一个数学问题。

问题的映射

客观世界的问题都是由实体及实体间的相互关系构成的,把客观世界的实体称为问题空间或问题域的对象,世界上的各种事物都可以看成对象。运用计算机解题是借助某种语言规定对计算机世界中的实体施加某种动作,以此动作的结果去映射解,将计算机中的实体称为解空间的对象。

如果按照人们通常的思维方式来建立问题域的模型,则可以提高公共问题域中的软件模块化和重用化。软件开发的过程就是人们使用各种计算机语言将现实世界映射到计算机世界的过程,即现实世界问题域→建立模型→编程实现→计算机世界执行求解。

问题求解的算法

解题过程的精确描述可以由有限条机械执行的、有确定结果的指令或命令构成。算法是解题过程的精确描述,它是利用计算机能够理解的语言描述的解题过程,包括有限多个规则,并具有如下性质:

① 将算法作用于特定的输入集或问题描述,可导致由有限多个动作构成的动作序列;

② 该动作序列具有惟一初始动作;

③ 序列中的每一动作具有一个或多个后继动作;

④ 序列或者终止于问题的解,或者终止于某一陈述。

算法代表了对问题的解,而程序则是算法在计算机上的实现。

问题求解的实现

利用某种计算机语言写出该算法的程序,并输入计算机。计算机将按照程序指令的要求自动处理,并输出计算结果。

查出程序执行过程中出现的错误并改正,使程序能够顺利通过并得出正确结果。程序测试则是使程序在各种可能情况下均能正确执行。程序调试所花时间要比程序编写时间多。写出程序的设计、维护和使用说明书,存档和备查。维护过程贯穿整个解题过程,其维护方式有三种:改正性维护、适应性维护及完善性维护。