数学建模算法与程序(6篇)

时间:2024-03-05

数学建模算法与程序篇1

关键词:混合式学习计算思维学习模式

一、引言

随着物联网、云计算、大数据等新概念和新技术的出现,各个学科领域发生了一系列变革,改变了人们对计算与计算机的认知。新时期的计算机应用能力培养,仅仅掌握几项具体的应用技能是远远不够的,必须对计算及计算机科学的思维形式有较为深刻的理解。加强对计算思维的严格培养,才能使学生走向社会后,具有良好的应用计算机解决问题的思维习惯。

如何在计算机教学中融入计算思维理念,培养学生的计算思维能力,成为计算机教学研究的焦点和改革的突破点。随着构建终身学习型社会理念的提出及网络多媒体技术的高速发展,教育领域产生并发展了新的教学理念――混合式学习。在这一新的教学理念的指导下,我们对本校的计算机基础课程进行教学方式的改革与创新,以解决现阶段教学中存在的一些问题,强化教学效果。

二、混合式学习及计算思维

(一)混合式学习。

随着E-learning在教育领域的扩展和作用延伸,推动了教育理念的革新,思想的变革与发展。基于E-learning的理念,教育领域产生并发展了新的教学理念――混合式学习[1]。混合式学习就是“一种将面授教学与基于技术媒介的教学相结合而构成的学习环境”[2],它借助面授教学与基于技术媒介的教学这两种学习模式的优势重新组织和实施教学活动,以达到提高教学效率的目标。在国内教育技术界,北师大何克抗教授认为,混合式学习“就是要把传统学习方式的优势和E-learning的优势结合起来”[3]。

新媒体联盟2015地平线报告高等教育版,在短期趋势中也提出了混合学习的广泛应用[4]。“混合式学习”(BlendedLearning)是在线学习和面授相结合的学习方式,从本质上讲,混合学习是把传统学习方式的优势和网络化学习(E-learning)的优势结合起来进行教学。也就是说,在教学中既要发挥教师的引导、启发、监控教学过程的主导作用,又要充分发挥学生作为学习主体的主动性、积极性和创造性。它借助面授与网络这两种学习模式的优势重新组织教学资源、实施学习活动,把这二者结合起来,使二者优势互补,以达到最佳学习效果。

(二)计算思维。

2006年3月,美国卡耐基梅隆大学教授、美国基金会(MSP)计算机和信息科学与工程部(CISE)主任周以真(JeannetteM.Wing)教授,在美国计算机权威刊物《CommunicationsoftheACM》上,首次系统提出了计算思维的概念[5]。周教授认为,计算思维是运用计算机科学的基础概念进行问题求解、系统设计及人类行为理解等涵盖计算机科学之广度的一系列思维活动。计算思维概念一经提出,立即得到我国各界的广泛关注,计算思维的思想迅速在科技界与教育界蔓延开来,改变着当今社会广泛认同的一些理论和认识。

三、以计算思维为导向的混合式学习模式的设计

随着信息技术在教育中应用的不断普及与深化,学校的学习环境与学习方式正在发生巨大变化,特别是大学教育阶段,充分整合各类平台与资源,形成全方位立体化教学,为混合式学习的展开提供了必要的硬件支持。大学阶段的学生在智慧、情感、认知等方面都达到相当成熟的水平,具有相对较高的知识经验水平和比较充分的学习经历,有一定的自主学习能力,能够较好地把握学习进度,为混合式学习的实现提供保障。

以计算思维为导向的混合式学习模式,是学生在混合式学习环境中,通过教师对各种学习资源与学习环境的优化,对学习活动的组织、监督及对学习过程的帮助,运用计算思维的方法进行知识与方法的获得、知识内容的拓展迁移与内化的学习过程模式。它以计算思维理念为指导,综合运用计算思维方法,让学生在教师的辅助下自主完成知识的建构,提高学习效率,优化学习效果,并最终提升学生计算思维能力的新型学习模式。

以计算思维为导向的混合式学习模式以任务为主线将学生和教师连接起来,结合计算思维的方法,教师对学生的学习过程进行直接的指导、监控和评价,辅助和引导学生运用计算思维的方法有效地进行知识的建构与内化过程。通过一系列计算思维方法,如递归、关注点的分离、启发式推理、仿真解决抽象问题、抽象解决分离任务、简约任务、转换任务等,在设计好的问题和混合式学习的立体化环境中,达到高效率的明确任务并完成任务,达到知识的迁移与内化,最终获得计算思维及创新能力的提升。

四、以计算思维为导向的混合式学习模式的实施

在以计算思维为导向的混合式学习模式中,整个学习过程主要由学习准备、明确任务、完成任务、共享交流和能力提升等环节构成。与此相对应的,教师的辅助环节主要围绕组织和实施学生的学习活动展开,包括教学准备、设计并呈现任务、实施任务及总结评价等。

(一)学习准备,明确任务。

在大学计算机基础课程学习中,学生应首先了解计算思维的基本概念与方法;教师应熟悉计算思维的基本概念与方法,同时要保证学习环境的友好、优秀,学习资源的有效、优质。学生与教师共同对问题进行提炼。

我们以排序算法为例。学习排序首先要了解什么是排序,进而了解排序中所涉及的关键动作,这些关键动作可以通过什么样的方式实现等。这样反复地启发式推进,逐步得到解决问题的关键,即比较与交换是排序算法中的关键。

在上述问题提炼的过程中,教师利用计算思维的启发式推进、关注点分离等方法,帮助学生分析收集整理的学习资源,一步一步地自我启发,循序渐进,最终得到排序问题解决的关键。

(二)解决问题,完成任务。

该环节学生在教师的辅助下继续补充、整理和分析学习材料,并进行深入研究,同时学生之间相互协作,最终获得问题的解决。

我们以“十个不同随机自然数的从小到大排序”这一问题的解决为例。上一环节,学生在教师指导下,了解到排序算法的关键是比较和交换的正确完成。这一环节运用计算思维中递归思想和关注点分离的方法,我们对十个不同随机自然数的排序问题进行分解。关注点先由十个不同随机数的比较排序转换为两个不同随机自然数的大小比较和排序问题,进而拓展最基本的排序算法至十个不同随机自然数的从小到大排列,完成―趟排序使十个自然数中最大的一个排至数据列的最末端。按照相同的方法,将十个不同自然数中第二大的数交换至倒数第二个,以此类推,第三大的数交换至倒数第三个,直到完成十个不同自然数的排序。学生按照相同的原理最终获得十个不同随机自然数的从小到大排序过程的流程图。

在教师的辅助指导下,学生之间需要进一步的交流协作,充分运用计算思维的方法深入分析问题,分别对自己解决问题的方法提出质疑并校验,最终获得十个不同随机自然数的排序问题的精确解决方法。学生通过运用计算思维进行问题分解、构建数学模型并解决问题,充分发挥学生的学习主观能动性,可有效地促进学生对知识的建构,优化学习效果,对提高学生的解决问题能力、计算思维能力有显著的促进作用。

(三)共享交流,知识拓展。

为了使学生拓展知识范围,进一步掌握同类问题的解决方法,学生在教师的组织和帮助下巩固练习、交流共享研究型学习成果,通过学习其他解决方法,拓展学生的思维空间。该环节的关键在于学生在教师的协助和指导下,更深层次地分析问题,挖掘学习资源及其他相关信息巩固学习成果,并与其他学生共享,最终达到举一反三,拓展思维空间,提高计算思维能力。

在大学计算机基础课程的学习过程中,学生可通过课程学习网站了解所有人的问题解决策略及方法,教师组织学生之间进行小组协作和成果交流,学生之间相互学习。在对排序问题解决的过程中,学生充分发挥自己的想象,深入学习探究,形成了多种不同的排序方法,涉及简单选择排序、冒泡排序、简单插入排序等多种排序算法。

通过学生的巩固练习和学生之间的交流,学生不仅能够很好地掌握自己发现的解决排序问题的方法,而且能了解其他有效解决排序问题的策略和方法,增强学习效果,拓展思维空间,对学生计算思维能力的培养起到推动作用。

(四)反思评价,能力提升。

该环节中,学生与教师就整个学与教的过程进行总结、评价和反思,运用计算思维的方法对学习过程中的关键点进行总结性概括,为学生今后的学习过程和教师有效的教学辅助提供指导。学生通过反思自己的学习过程,整理知识点,形成知识体系,构建有特色的一套学习方法和学习模式,达到知识内化并能够熟练应用于解决实践问题,获得解决问题能力、计算思维能力与创新能力的提升。

在大学计算机基础教学过程中,教师对学生的学习过程进行过程性评价,学生可以回归学习网站自主监控学习过程中每个环节的评价结果。学生可参考教师的实时评价,反思自己的学习过程,发现学习过程中的优点及出现的问题,发扬优点,及时解决问题,为今后学习过程的高效展开提供指导。教师可通过对学生学习各个关键环节的学习信息的提取分析和总结评价,反思整个教学指导过程中的优点与不足,为以后的教学指导过程有效地展开提供参考。

在以计算思维为导向的混合式学习模式中,教师不再是知识的传授者,而是学习资源的主要选择、重组和优化者,是学习环境高效性的主要维持者,学生学习活动的设计、组织、实施和监督者,学生学习的辅导者。该模式充分体现了学生的学习主体地位,发挥了学生的主观能动性,学生能够积极主动地收集、选择、重组和优化各类学习资源,并深入学习和交流,获得问题的解决方法。在教师的组织和指导下,通过多种形式的巩固练习和共享交流,促进知识的内化和思维空间的拓展,有意义地建构知识体系,使知识能够被熟练地应用于解决实际问题,提高学生的问题解决能力。在总结和反思整个教学过程中,梳理知识内容,构建或完善具有个体特色的学习模式。

五、结语

在以计算思维为导向的混合式学习模型指导下展开的计算机基础课程教学,不但提高了学生的学习积极性,更重要的是有效提高了学生的计算机应用技能、问题解决能力和计算思维能力等,培养学生初步形成正确的“思维”方法,有效提高学习者的综合能力和素质,也为我们今后进一步深化立体化混合式教学改革提供相应理论依据。

参考文献:

[1]曾苗苗.基于混合学习的“现代教育技术”公共课教学方式改革研究[J].中国教育信息化,2012(21):57-59.

[2]Graham,C.R.Blendedlearningsystems:definition,currenttrends,andfuturedirections.InHandbookofBlendedLearning:GlobalPerspectives,LocalDesigns[M].editedbyC.J.BonkandC.R.Graham,SanFrancisco,CA:PfeifferPublishing,2006:3-21.

[3]何克抗.从BlendingLearning看教育技术理论的新发展(上)[J].中国电化教育,2004(3):1-6.

[4]龚志武,吴迪,陈阳建,等编译.新媒体联盟2015地平线报告高等教育版[J].现代远程教育研究,2015,(2):3-22.

数学建模算法与程序篇2

关键词:建构主义;分段教学;“C程序设计”教学

中图分类号:G642文献标识码:B

文章编号:1672-5913(2007)20-0053-03

信息社会对计算机专业的学生提出了更高的要求:不仅要会使用编程工具,而且要能应用编程工具解决实际问题。然而,传统的程序设计教学方法过多地关注语言细节而缺乏对学生程序设计方法和能力的训练,并在一个人为简化了的教学环境下传授知识,不利于知识迁移,因此出现了学生学完了程序设计课程却不会编程的现象。如何使学生具备扎实的基础知识,同时又具备解决实际问题能力,是目前亟待解决的问题。

建构主义因其倡导的有意义学习,被越来越多的教师用于指导程序设计课程的教学,并塑造了一些教学运作的新方式[1]。但建构主义理论本身还在不断完善和发展中,建构主义在程序设计教学实践中的应用还有待进一步的探讨。

1建构主义教学观

实际教学中倾向于选择建构主义教学观还是传统教学观,应该根据学生的认知规律与教学内容特点而定。

传统教学观与建构主义教学观处于一个系统的两个极端[2]。传统教学观不太强调学习者内在的条件,认为外在知识的内容和结构能完全复制到学生的头脑中,为了减少学习者的混乱而简化了真理;建构主义则处于另一个极端,强调学习者,认为学习是对学习者已有概念重新调整的过程,强调提供丰富多彩的学习环境以利于技能的迁移。

以教师为中心的传统教学观忽视了学习者对知识的主动建构,忽视了发展学习者的高阶思维能力。尽管传统教学观遭到批判,但它依然是广大教师使用最广泛的教学模式之一,有其存在的价值。传统的讲授法是一种高效的形式和方法,有利于基础知识和基本技能的系统传授,并能最大限度地发挥教师的主控作用,教学操作性强,适合学习者初级阶段的发展水平。

建构主义教学观越来越受到普遍的关注。建构主义在知识观、学习观、教学观、师生关系观和信息技术应用观等方面提出了与传统教学观不同的观点,有利于促进学习者高阶学习和高阶能力。它与当前我国教育理念改革和教育信息化的发展方向是一致的。

对于初学程序设计的大学一年级新生,因为没有建立有效的计算机模型,适于在较为简单的、限制的环境中,循序渐进地建立关于程序设计的基本概念。此阶段主要采用传统教学方法,帮助初学者较快地建立有效的计算机模型。当学生不再对计算机感到困惑时,应该由传统教学方法逐步过渡到建构主义教学方法,所呈现的教学情景越来越接近真实问题的环境,从而使学生分析问题、用编程工具解决问题的能力得到越来越多的训练。

根据“C程序设计”教学内容的特点及学生认知能力的发展过程,教学可分3个阶段,分别选用不同的教学方法进行(见表1)。

2分阶段选用不同的教学方法

2.1引导入门阶段

对于刚接触程序设计的初学者来说,本阶段的任务是快速建立有效的计算机模型,掌握程序的基本构成及常用算法模式,掌握用计算机检验所学知识的方法,为后继阶段的学习作积累。

主要学习的内容包括:程序基本构成,控制结构,简单函数。上机实践内容主要是学习使用编程环境,验证和熟悉语法,熟悉常用算法模式,会用计算机来验证语言知识,分析程序的执行。

教学一开始就应将课程的整体框架引入,让学生有个整体的概念和学习目标。“概念图”、“思维导图”之类的图形化工具有助于概念知识的表达,可以用于整体框架的引入,也可用于评价学生的学习。

课堂教学中,主要学习程序的阅读与分析。通过已编好的难度合适的程序将枯燥的数据类型、运算符等基本概念引入课堂,通过问题的解决来研究语法的结构、功能和使用效果;研究各部分代码的来龙去脉,形成完整的程序结构;研究常见算法模式与编程技巧。同时也使学生了解程序设计风格、技术规范、软件适用性、程序效率等。问题解决过程中应尽量结合学生原有的学习与生活经验,有利于新知识的同化。课后,对于常见算法模式,如交换两个数,查找,求累加和,数组的基本操作等,要求学生熟记并模仿。

通过测试、上机及课后作业等手段,教师利用负反馈及时发现学生的问题,使教师的教与学生的学同步。并要求学生经常小结上机调试经验。

2.2实践提高阶段

通过引导入门阶段的学习,学生已经建立了基本的计算机求解模型,了解了程序的基本构成、程序设计的基本策略与常用算法模式,基本会使用编程工具。此时需要在已有基础上学习高阶的问题分析、程序设计方法,提高解决问题的能力,完成实际技能的提升。

主要学习的内容包括:常见算法,函数,结构,文件。上机实践内容主要是设计较简单程序,学会用计算机来测试程序正确与否。

课堂教学中,主要学习问题的分析与解决。对于高阶思维的学习适于选用建构主义教学方法。教师需要对课程的知识点有整体的把握,有所选择地把主要知识点合理地组织到有趣的实际任务中,并考虑到新旧知识的联系,以推动学习的进行。教学中包括以下要素:

(1)情景:通过呈现有趣的、接近实际的任务情境,激起学生解决任务的兴趣。多媒体及演示动画的应用有助于学生对任务的理解,使情景更逼真。

(2)协作:2~4人一个小组。

教师提出任务后,小组内通过交流确定学习目标:明确要实现的功能和功能的划分。在选择数据结构与实现方法时,学生可以分工合作,借助教材、参考书、系统帮助等工具获取算法思路、库函数使用方法等知识。对于较复杂算法的实现,学生可以分工完成。

(3)会话:通过会话促进知识的建构,包括师生会话和生生会话。

师生会话:教师引导学生自顶向下地逐步分析出解题思路,并注意启发性,鼓励学生提出不同的想法。利用结构化的算法描述工具,如PAD图,NS图,可以清晰地呈现解题思路。

生生会话:选择可用的概念,讨论解决的方法,调整概念结构。学生与学生由于拥有更加接近的知识和生活经验,更容易沟通和相互促进。

(4)意义建构:通过知识建构环境中学习目标、学习者原有概念、学习经验等众多复杂因素的相互作用,学习者形成自己独有的解决任务的思路、技巧和方法,即意义建构。

2.3实际应用阶段

当课程主要内容学完后,应为学生提供一个综合性的、更真实的大任务,要求学生遵从软件工程过程,合作完成任务。任务应有一定的复杂度,使得学生必须协作完成。课堂上主要解决一些普遍存在的问题,学生必须利用课外时间才能按时完成任务,可以借助图书馆、Internet获得必要的帮助。任务完成后,通过展示与评价学生作品来评价任务完成情况,通过提交书面报告实现对任务实现过程的总结。

3建构主义教学实践中应注意的问题

建构主义教学条件要求较高,需要丰富的教学资源,并要求改变教师和学生的观点。要引起教学实质的变革,必须全面地理解建构主义各原则之间的联系[2]。由于多数教师对建构主义的认识是逐步加深的,建构主义对教学实践的指导也是逐步进行的,如此可能只是引起了一些表面的变化,甚至使情况变得更糟。

笔者一接触到任务驱动教学法就被这种方法吸引了,并开始在教学中实践。由于对建构主义原则理解不深,加上学生未能主动参与知识建构,教师还未实现从传授知识向意义建构促进的转变,而且难度合适组织方法相近的可用教材较少,学生反映起点高,难度大。同时也反映,若课前做过预习,则效率很高。后继课程的教师则反映学生的程序设计能力有所提高。由于上述原因,教学实践未达到预期效果,但学生和其他教师的反馈也说明:建构主义所倡导的教学原则对程序设计思路和方法的学习确实有帮助。

另外,建构主义教学方法实施中比较困难的是:从传统的线性知识组织形式向任务式组织形式的转变,此时需要从全局上把握学科知识并有所选择。在课堂教学中,应注意把握好教学节奏,给学生足够的时间协作和会话,从而完成意义的建构。此时,教师要注意结合实际课堂给予学生动态的引导。

4结束语

在思考程序设计课程教学中的问题时,很自然地被引向了建构主义。建构主义教学方法处于传统教学方法的另一个极端,在教学实践中,应根据学习内容与学生的认知类型分阶段选用不同的教学方法,以便在有限的教学时数内促进学生完成程序设计的高阶学习任务。

参考文献

[1]余胜泉.基于建构主义的教学设计模式[J].电化教育研究,2000,(12):7-13.

[2]TonyGreeing主编,麦中凡译.21世纪计算机科学教育[M].高等教育出版社,2001:55-94.

[3]张长海.以程序设计为主线讲授“高级语言程序设计”课[J].计算机教育,2005,(5):9-12.

[4]高顺富.“C语言课程设计”教学的思考与实践[J].电气电子教学学报,2002,(1):103-105.

作者简介:解敏(1975-),女,云南人,讲师,主要从事程序设计和信息系统方向的研究。

通信地址:云南昆明云南师范大学计算机科学与信息技术学院650092

E-mail:.cn

数学建模算法与程序篇3

关键字:时间序列;建筑沉降;数据处理;观测

我国改革开发政策的实行带动着我国的经济发展不断进步和增长,在城市化的进程中,高层建筑成为城市发展的标志,具有现代化经济增长的象征意义。在地基上建设高层建筑的发展趋势就对土层的负载承受提出了更高的要求,为了实现建筑的安全施工和建设必须将预防建筑物基础的沉降和倾斜作为重点的建设项目。将沉降的观测数据处理的系统模型充分的运用在建筑物的施工中去,以便为建筑施工提供科学、准确的动态数据,出现异常,及时预警,从而确保建筑施工安全,根据这些数据再进行基础的地基处理方法的研究和设计,确保地基的沉降总量在一个规定的范围内。

一、时序分析法的概念

在动态的领域研究中,时间序列分析法被广泛的运用在动态模型的数据建设中,通过多数据模型的科学分析来有效地判断,全面的掌握数据内部的结构特征和性能。时间序列法的工作主要是针对固定时间内,连续变化数字之间的动态关系分析,在研究的对象中这些动态数字是普遍存在的,由于观测的数据形式背景存在差异,其具体的信息内容和所呈现的规律也不相同,造成人们的认识也存在一定的偏差,对于目前建筑陈沉降中的具体应用以自回归模型展开。

为了在有限的时间内,高效的解决动态数据处理并保证结果的精确,时序分析法就成为实现这项目的的科学分析方法,因为具备这样显著的特征而被工程和自然领域中广泛应用。基于建筑物的沉降检测序列具有动态的特征,需要结合实例来具体分析时序分析法的作用和工作原理,以对同一检测项的观测序列来进行数据处理的模式开展工作,通过数学的表达式来反映检测项目的变化特征和趋势以及它们之间的数学关系。在根据这个特殊的关系式来进行确定时间的预报监测工作,能够有效地为施工的评估内容和工程后期维护做准备。

二、时间序列分析法

(一)自回归模型介绍

t=1,2,3,是自回归模型中的数学表达式,其中自回归的的阶用p来表示,回归系数则通过这样形式的表达更加直观。通过这个数学表达式能准确的放映各种动态变化规律。p作为模型阶数具有非常特殊的意义,他能对序列模型的形状进行初步的鉴定和识别,达到模型识别的功效。自相关函数和偏相关函数拥有特殊的截尾和拖尾性,这是平稳时间序列所有的特征,为模型的识别过程提供了良好的参考依据。将样本观测值的估值进行自相关函数和偏相关函数的计算来确定其估值。{xt}是AR(p)序的判断结果是通过建立在AR(p)序的估算结果偏相关值在p步截尾的估算得到的。

将科学化的F检测准则来判定模型的阶数,具体的实施过程是将的高阶系数中的值调整为零,在这部操作之前必须先建立AR(p)。再用F检测的方法来对阶数降低之后的模型进行判定。通过检验之后与与之前的AR(p)进行对比分析,寻找其中存在差异的部分,检测的结果偏大时需要将阶数增大来解决这种情况的出现。因此差异非常明显的情况下则需要将阶数持续增大直到为理想的数据为止,具体的实施步骤是:

1、先对AR(p)进行初步的建立,再将假设设置为=0

2、对AR(p)进行平方计算并将和AR(p-1)同样进行残差平方计算。对F检测准则进行计算,将N设置为样本的长度,其中将p设置为参数,将自由度可以近似的看作是1,以N-1的F分布来进行相关的计算工作。

3、根据所给出的定显水平来对临界值进行查询,若果≤则成立,将AR(p-1)选为合适的模型设计。反之则不成立,需要针对模型的阶数提出持续上升的要求。

(二)模型参数的估算

在模型参数的估计办法中经常使用的一种方法就是最小二乘估计法,这种方法的的独特性在于能够满足条件有最优化的估计办法,它还有另一种名字叫做精估法。其中将AR模型的参数设置为以时间顺序开展的{xt}样本观测值x1,x2,x3,…,xn,根据变式来对AR模型进行的最小二乘估计的数学运算式。

(三)模型的验收

在对模型AR(p)进行验收的过程中必须将模型是否具有平稳性作为主要参考的内容,主要的步骤是建立模型的延迟子方程是否大于1。在具体的计算过程得到的解如果都是大于1的情况则表示模型的建立相对稳定。除此之外还需要对模型的噪音进行独立性能的检测,这一过程的具体操作是将估值和样本值带入具体的模型中进行检测,通过数学的运算来得出残差,经过多组的计算就可以得到一系列的残差值,通过对序列的数据分析和白噪声序列的对比来判断其是否符合标准。检验的序列是否和白噪声序列的数据一致,将自相关的检测方法运用到具体的检测过程中,主要涉及的内容有:p阶段回归模型参数的估计,使用的公式有

t=1,2,3。q阶段的滑动平均模型参数的估计以及ARMA(p,q)模型的参数估计计算,在这一步中由于涉及的过程比较复杂可以采用多种计算方法来对其进行计算。

(四)模型的预报

模型的预报需要将{xk}设置为平稳零均值的序列,将之前的数据进行处理和预报来并为下一步的预报做准备,对未来的数据进行检测和预报。将系数确定为已估计的值,当时进行如下的计算;;

通过运用这样的数学式来进行递推计算。来获取任意步的预报值。

三、实际引用的计算

通过对预报次数的图标分析可以发现随着预报次数的不断增加,观测值和预报值之间差值也逐渐的增大,这一现象充分的说明了建筑物的稳定性。其次,在运用时间序列的理论基础上进行预报,这种预报方式和实际的预报结果还存在一定的差距,而随着时间的推移这种差距也会越来越大。

根据对预报沉降的总量进行趋势化的预报和趋势分析,以最终的结果为参照,在形式上基本保持一致,同时因为时间序列的运用而使得在建筑物沉降的预算过程中表现出定性的趋势判断,实现较短时间内的建筑物沉降预报工作。这种有效的方式是实现建筑物沉降数据观测的最好方式,需要充分的将这种方法运用到在实际的建筑工程中去。

结束语

时间序列的分析办法在一定程度上能够实现数据连续性的计算和变形图形的分析,在模型的效果上表现的比较突出,因为时间序列在计算的过程中需要大量的数据作为支持,而数据的动态变化非常明显造成模型的误差较大,对预测的准确性造成一定的影响。本文所阐述的时间序列分析方法在计算过程上运用到全部原理和特征,其中计算所得的最终结果和平差方法所计算的结果存在一定的相似性,而时间序列分析法的优势在于能够实现沉降预报的分析。在建筑物的沉降观测数据中占据着非常重要的地位,能够对动态的变化规律进行有效的掌握和确认,进而完成下一步的物理变形解释分析。

参考文献

[1]朱睿,张俊中,龙洋,王忠纬.时间序列模型在建筑物沉降监测中的应用[J].测绘与空间地理信息,2012(2)

[2]陆立,胡晓丽,王春华.用时间序列分析法进行建筑物沉降观测数据处理的研究[J].测绘科学,2004(12)

数学建模算法与程序篇4

关键词:评价方法实证分析过程分析

自20世纪初杜邦公司运用投资报酬率指标进行绩效评价以来,绩效评价已从单指标评价发展成多指标综合评价。在多指标综合评价中,评价方法的恰当选择对评价结果具有重要影响。本文拟对AHP、模糊综合评价法、灰色关联度分析法、因子分析法及TOPSIS五种方法在上市公司经营绩效评价中进行实证比较,并通过对各种评价方法具体评价过程的差异分析,试图对实证比较结果的差异作出解释,以期为评价方法的选择提供参考。

一、上市公司经营绩效评价指标体系

由于本文重点是探讨评价方法的比较,故对评价指标的选择不作深入探讨。上市公司经营绩效评价指标是在考虑上市公司特点的基础上,参照《国有资本金效绩评价规则》及其细则来构建的,如图1所示。

二、上市公司经营绩效实证分析

本文选取沪市八家高速公路运营公司作分析样本,分别运用上述五种评价方法对其经营绩效进行评价。原始数据来源于“巨潮资讯”(),对原始数据的预处理原则为:(1)对于极小型指标,取其倒数使用转化为极大型指标;(2)对适度型指标(如资产负债率),按公式xij=1/转换,其中k为原始数据xij’的均值,xij为处理后的数据;(3)无量纲化处理的方法是均值化方法。

1.运用AHP进行经营绩效评价

层次分析结构的构建按图1的模式构建,通过咨询专家,在各层元素中进行两两比较,构造判断矩阵,所有的判断矩阵均通过了一致性检验,并运酶扑愕贸龈髦副甑娜ㄖ兀荽巳ㄖ囟愿髦副杲屑尤ㄗ酆希醋酆辖峁园思腋咚俟吩擞镜木ㄐЫ信判颍峁绫?所示:

表2

评价对象皖通高速东北高速中原高速福建高速楚天高速赣粤高速宁沪高速深高速

绩效得分1.32140.06711.46721.47331.31311.51391.06351.1020

排名48325176

2.运用灰色关联度分析进行经营绩效评价

取八家公司各指标的最大值所构成的序列作为最优指标集,计算灰色关联系数时取ξ=0.5,计算加权关联度时,权重取上述AHP法所得到的权重。按计算出的灰色加权关联度,上述八家公司的经营绩效评价结果如表3所示:

表3

评价对象皖通高速东北高速中原高速福建高速楚天高速赣粤高速宁沪高速深高速

绩效得分0.92440.85160.94130.93940.92790.94390.90100.9066

排名58234176

3.运用模糊综合评价法进行经营绩效评价

在这里,评判因素集为图1所示14个指标,即:

U={X1,X2,X3,X4,X5,X6,X7,X8,X9,X10,X11,X12,X13,X14}

评价集为V={经营绩效高V1,经营绩效中V2,经营绩效低V3};

评价因素集中的所有指标均为定量指标,故采用梯形隶属度函数建立指标值与评价等级间的隶属关系(如图2所示)。将预处理后的数据带入隶属度函数,可得到三个评价等级的隶属度向量R1,R2,R3,对三个等级取权重(本文取(0.5,0.3,0.2))计算评判矩阵R,故评判矩阵R=0.5R1+0.3R2+0.2R3。本例在建立模糊评价模型时,各评判因素权重A的确定采用上述AHP法所确定的权重,评判模型为:B=A*R,其中合成运算采用普通矩阵乘法。运用模糊综合评价法对上述八家公司经营绩效的评价结果如表4所示:

表4

评价对象皖通高速东北高速中原高速福建高速楚天高速赣粤高速宁沪高速深高速

绩效得分0.46350.24210.59640.50000.59820.51790.35660.3911

排名58241376

4.运用TOPSIS法进行经营绩效评价

运用TOPSIS法时,取八家公司各指标的最大值所构成的序列作为最优向量,最小值所构成的序列作为最劣向量,通过计算各评价对象对最优向量和最劣向量间的欧氏距离,来获得评价对象与最优向量的“拟合”程度,以此作为评价依据。其基本模型为:Ci=(Di-/Di-+Di+),其中Di-为评价对象到最劣向量间的距离,Di+为评价对象到最优向量间的距离,Ci为评价对象与最优向量的相对接近度,Ci越大则经营绩效越好,加权时的权重仍采用AHP法所得的权重。运用TOPSIS法的评价结果如表5所示:

表5

评价对象皖通高速东北高速中原高速福建高速楚天高速赣粤高速宁沪高速深高速

绩效得分0.65610.08370.72260.72530.65230.74390.53850.5560

排名48325176

5.运用因子分析法进行经营绩效评价

运用SPSS软件可直接得出上述八家公司的因子得分,本例中,通过因子分析,前四个因子的特征值大于1,所解释的方差占总方差的91.35%,为精确起见,本例取前7个因子,该7个因子解释了所有的方差。对各公司经营绩效评价是以其综合得分为依据的,综合得分的计算方法是以各因子的贡献率为权数,将各公司在7个因子上的得分进行线性加权而求得的。运用因子分析法的评价结果如表6所示:

表6

评价对象皖通高速东北高速中原高速福建高速楚天高速赣粤高速宁沪高速深高速

绩效得分0.0185-1.07990.27550.30730.23180.3956-0.15110.0024

排名58324176

三.评价结果的比较分析

上述实证过程的5种排序结果汇总如表7所示:

表7

排序方法皖通高速东北高速中原高速福建高速楚天高速赣粤高速宁沪高速深高速

AHP48325176

灰色58234176

模糊58241376

TOPSIS48325176

因子58324176

序号总和58324176

上文实例中各种评价方法所用的评价指标体系、原始数据及其预处理方法均相同,因此表7所示实证评价结果的差异仅取决于评价方法本身,即各种方法从输入原始数据到输出评价结果这一过程的差异导致评价结果的差异。本文对过程差异分析的前提是,因子分析、关联度系数、欧氏距离等所基于的数学理论均是可靠的,均能真实反映了评价对象间客观存在的差异。

为便于比较,将上述五种方法按评价过程中包含主观因素的程度作如下分类:因子分析法属客观评价法,AHP、灰色评价法和TOPSIS为主观评价方法Ⅰ,模糊综合评价属主观评价法Ⅱ。表8所示为各种评价方法得到的排序结果间的Spearman相关系数,系数越大表明排序结果越接近。

表8

排序方法客观评价法主观评价方法Ⅰ主观评价法Ⅱ

因子AHP灰色TOPSIS模糊

客观评价法因子10.9760.9760.9760.786

主观评价方法ⅠAHP00.97610.95210.69

灰色0.9760.95210.9520.833

TOPSIS0.97610.95210.69

主观评价法Ⅱ模糊0.7860.690.8330.691

1).客观评价法与主观评价法Ⅰ的比较:通过表8的Spearman相关系数可知,因子分析法的排序结果与三种主观评价方法Ⅰ的结果具有相同的相关度,相关系数均为0.976。

因子分析法在构造综合评价值时所涉及到的权重都是从数学变换中伴随生成的,同时因子分析的具体过程在数学上都有严格的逻辑,可以说因子分析法从处理数据开始直至输出综合因子得分的整个过程都具有很强的客观性;而主观评价法Ⅰ与因子分析法相比,其中的AHP法对原始指标加权综合前、灰色关联度法对关联度系数加权综合前、TOPSIS法对欧氏距离加权综合前的过程都是数学运算过程,不同的是在加权权数的确定上主观评价方法Ⅰ是主观确定的;因此从评价结果的输出过程来看,因子分析法与主观评价法Ⅰ的差异取决于加权权数。

2).客观评价法与主观评价法Ⅱ的比较:因子分析法的排序结果与模糊综合评价法的结果相关度较低,相关系数为0.786。

模糊综合评价法从评价集的定义、特别是隶属度函数的构建、合成算子的选取直到权重的选取、输出评价结果全过程均包含主观判断的因素,随意性较大,其评价结果很大程度上取决于参与评价的专家的素质。因此模糊评价与因子分析法评价结果的差异可能产生于评价过程的任一环节,两者的评价结果很容易产生较大差异。

3).主观评价方法Ⅰ与主观评价法Ⅱ比较:两者评价结果的相关度也不高,如上文所述,主观评价方法Ⅰ在加权综合前的过程是数学运算过程,而模糊评价在加权综合前的过程是主观判断,如果两者用于加权综合的权数是通过同样的方法取得的(上文的实例均是采用AHP法得到的权数),则评价结果的差异取决于加权综合前的任何一环节。

4).三种主观评价方法Ⅰ间的比较:AHP与TOPSIS法的排序结果完全相同,两者与灰色关联度法高度相关,相关系数为0.976。

这三种方法都是通过对原始指标值的数学运算,再利用主观确定的权数对数学运算的结果进行加权综合后输出评价结果的,在采用的加权权数相同的情况下,应该输出相同的结果,上文AHP与TOPSIS法的排序完全相同也证实了这一点;但灰色关联度法在加权综合前的数学运算过程中,计算灰色关联度系数时“分辨率ξ”的确定无一个合理的标准(本例取ξ=0.5),这与AHP和TOPSIS法有点区别,也正是这点差别,使灰色关联度法与AHP和TOPSIS法的评价结果产生差异。

上述分析与实证的结果基本一致,但并不能说明评价过程中客观的数学运算和主观判断的优劣,实际上数学运算有时可能扭曲真实情况,主观判断有时能结合评价对象的特点形成更真实的反映。

不过有的学者认为综合各种评价方法的结果可以找到一个最优排序,并提出序号总和理论、众数理论和加权平均理论等,所谓“序号和理论”是指把各种不同的评价方法下的排序序号相加,得到序号总和,按序号总和从小到大的排序即为最优的位序,当序号总和相等而无法排序时,可按众数理论确定其位序,本例按序号总和排序的结果见表7。这里运用spearman相关分析对各种排序与序号总和排序的相关性作了简要分析,结果如表9所示:

表9

排序方法客观评价法主观评价方法Ⅰ主观评价方法Ⅱ

因子分析法AHP灰色关联度TOPSIS模糊评价

Spearman相关系数10.9760.9760.9760.786

由表9可知,客观赋权法即因子分析法与序号总和法的结果完全相同,三种主观评价方法Ⅰ与序号总和法的相关度相同,且高度相关(相关系数均是0.976),模糊评价法与序号总和法相关度最低,相关系数为0.786。

四、结束语

鉴于上述各种评价方法间在评价过程上存在的差异,在选择评价方法时要结合评价对象的特点,充分考虑这些差异可能给评价结果造成的影响。比如当某项决策需突出评价对象某方面的特征时,运用主观性更强的评价方法可能会得到较好的结果;而评价对象的特性不易把握、或评价人员的知识不足以准确把握评价对象的特性时,运用客观性更强的评价方法更恰当。

参考文献:

1)周国强.经济系统综合经济效益评价方法比较.武汉理工大学学报(交通科学与工程版)2002(4)

数学建模算法与程序篇5

【关键词】软件行为隐马尔可夫模型序列简化算法

随着计算机技术、网络技术以及通信技术的快速发展,网络安全的重要性也日益突出。网络威胁也有原来的单一病毒形式转向恶意软件,因此,确保一个软件安全正常的运行成为了当前一个急需解决的问题。目前,软件安全缺陷可以归为下面几类:共享数据方面、错误处理方面、接口设计方面等。

入侵检测指的是在一个系统中,检测异常行为的能力,而这种异常行为通常是由安全攻击,病毒和软件设计缺陷所引起的。目前主要有两种途径进行入侵检测,一种是基于网络的入侵检测,另一种是基于主机的入侵检测技术,而基于主机的入侵检测技术又分为基于用户行为的和基于软件行为的入侵检测检测技术。

1软件行为及隐马尔可夫模型的研究

1.1软件行为模型研究

程序在正常情况下和在异常情况下运行,系统调用序列会产生偏差,可以在很大程度上体现软件的行为特征,因此,可以利用系统调用来研究软件的行为特征。最早的动态建立的软件行为模型是Forrest提出的N-gram模型。在这个模型中,他用若干个长度为N的系统调用序列,来描述一个软件的行为。

1.2隐马尔可夫模型

在马尔可夫链中,每个状态都和一个观测事件一一对应,也就是说可以直接观测到状态。隐马尔科夫模型(HiddenMarkovModel)则是在马尔科夫模型中发展而来,它的观测值和状态不是一一对应,能够描述更为复杂的问题,它通过一些概率分布来表示模型特征,是一个双重随机过程。

2软件行为模型改进

2.1基于频率的子序列抽取算法

N-gram是自然语言研究领域广泛使用的一个概念,它表示的是长度为N的字符序列。在计算机系统中,每个系统调用都有一个对应的编号,随着程序的运行,会产生一个系统调用序列。每一个长度为N的系统调用序列,就称为一个N-gram。

基于频率的序列简化算法其核心思想就是:从原有序列中抽取出一些子序列,这些子序列的出现频率较高(具体的频率要求根据实际需要可做适当修改),然后用这些子序列的编号替换原有序列中的子序列,从而得到一个更加精炼的序列,并且保持原有序列中元素的先后关系。

下面具体阐述基于频率的序列简化算法,为了描述方便,首先定义几个变量:

Ck表示长度为k的序列集合,即k-grams。

Cki表示长度为k的序列集合中第i个元素。

Ckif(s)、f(Ck)、分别表示这些序列的出现频率。

该算法用伪代码描述如下:

2.2基于系统调用的隐马尔可夫模型改进

为了能够更加准确的描述一个软件的行为,扩大输入数据的覆盖率是非常重要的,也就是要尽可能多的让获取到的系统调用序列覆盖全部的程序执行路径,获取系统调用序列是尽量让软件进行不同的操作。

假如经过序列简化算法化简后的系统调用序列是{①②③④⑤⑥⑦⑧⑨},这就作为隐马尔可夫模型的观察值了。假定计算机就两种状态:安全和不安全,这作为隐马尔可夫模型的状态集。所以前向变量αt(i)表示在给定模型参数λ(A,B,π)下,出现观察序列为O1,O2,O3…Ot,并且t时刻的状态为i的概率。例如α4(安全)表示在给定模型参数λ(A,B,π)下,出现系统调用序列为①②③④,并且在4时刻为安全状态的概率。后向变量βt(i)表示在给定模型参数λ(A,B,π)和t时刻状态为i的条件下,后续观察序列为Ot+1,Ot+2,Ot+3……OT的概率大小。例如β4(安全)表示已知模型参数λ(A,B,π)和t时刻状态为安全,后续观察序列为⑤⑥⑦⑧⑨的概率大小。

在前向后向算法中,必须借助上述前向变量和后向变量来定义另外两个用来做似然估计的变量和,分别为3.1式和3.2式,和的大小范围都是0到1。

表示给定观察序列和隐马尔可夫模型参数λ,在t时刻处于i状态并且在t+1时刻处于j状态的概率。如果定义当前的HMM模型参数λ为(A,B,π),则可以得到新的HMM模型参数Baum等研究人员已经证明新的模型参数能更好的描述模型特征,即,因此如果迭代计算上面3个式子,即不断重新估计隐马尔可夫模型,那么经过若干次的计算后,可以得到隐马尔可夫模型的最大似然估计。前向后向算法与维特比算法的区别是,维特比算法得到的是全局最优解,而前向后向算法得到的是一个最大似然估计,是一个局部最优解。最后得到的这个隐马尔可夫模型就是基于系统调用的软件行为模型。

3软件行为模型验证

3.1实验过程

本章将从实验的角度,选取Gzip(GNUZip)工具软件作为实验对象,利用在上一章中实现的系统对改进后的行为建模方法与原来的软件行为建模方法进行一个对比,从而达到论证新的模型构建方法高效性的目的。

具体的实验步骤如下:

(1)首先开启Ftrace工具对系统内核的监控,再操作Gzip软件,在linux操作系统上进行各种操作,例如压缩解压缩等,并且这些操作必须保证都是合法的。

(2)然后关闭Ftrace工具,保存好Ftrace工具监测得到的trace报告文件。重复上述步骤200次,总共可以可到200条软件行为轨迹。

(3)接着拿50条系统调用序列分别用原隐马尔可夫模型和改进后的隐马尔可夫模型进行软件行为模型的建立。

3.2实验结果

从图2的模型生成时间比较图中,可以很清楚地看见,新的软件行为模型的构建方法比传统的只用隐马尔可夫模型构造软件行为模型要高效,并且随着初始软件行为轨迹的增多,即系统调用序列的增长,这两种方法所花时间的差距越来越大

4总结

虽然软件行为的概念定义很早就出现了,但真正定量的形式化描述一直都是研究热点,并且至今没有很好的成果。利用统计学中的隐马尔可夫模型来建立软件行为模型,时间代价太大。本文改进了这种建立软件行为模型的方法,缩减软件行为模型的生成时间。并通过实验,证明了改进后的软件行为模型生成方法相对于原有方法,能更快速的生成模型,并且基本保持原方法的高准确率。

参考文献

[1]李珍,田俊峰,杨晓晖.基于系统调用属性的程序行为监控[J].计算机研究与发展,2012,49(8):1676-1684.

[2]陶芬,尹芷仪,傅建明.基于系统调用的软件行为模型[J].计算机科学,2010.

[3]王新平,顾庆.基于执行轨迹的软件缺陷定位方法研究[J].计算机科学,2009,10(36).

[4]张林,赵勇,刘吉强.基于椭圆曲线数字签名算法的序列号软件保护方案[J].中国电子科学研究院学报,2006(01).

作者简介

武文曦(1988-),男,湖南省衡阳市人,现为中国电子科技集团公司电子科学研究院工程师。主要研究方向为大数据挖掘、软件安全。

数学建模算法与程序篇6

关键词:面向对象;层次性;关联性;教学模式

中图分类号:G642文献标识码:A

1引言

面向对象程序设计技术是当前软件开发的主流技术。因此该课程是计算机专业的十分重要的专业课程。它是学生进一步学习可视化编程及理解组件编程的基础,同时也是计算机实践应用及对学生进行创新能力培养的基础之一。

显然,在实际授课中,我们不能片面从语法、语句及理论概念的角度去教授该课程,而应该是面向问题与应用的、构建于相关知识体系上的研究型教学。所谓“研究型教学”,就是要利用知识的载体属性,即以知识为载体,通过知识点、知识的发现过程、知识的创建过程,让学生学会思维,学会用科学的方法分析、解决问题。在这里,我们强调的是学生“学会”,是学生作为一个教学中的主体“学会”。其基础必须以足够的相关知识作为载体,以体系化的知识为学习场景。对于面向对象程序设计,如果从“研究型”教学的要求出发,应该以算法、数据结构、程序设计思想、计算机语言等相关知识为载体,从综合的、体系化的角度去理解面向对象的内涵,在这里算法是程序设计的核心。正如一些著名计算机科学家在有关计算机科学教育的论述中认为,计算机科学是一种创造性的思维活动,计算机科学的核心问题是算法理论,其教育必须面向设计[1]。因此,如果将面向对象的程序设计教学过程“嵌入”到算法的设计过程中,以算法为主线,以问题为导向去理解面向对象技术的理论与方法,将学习与“消化”过程有机的结合起来,能够从根本上提高学生综合分析能力及继续学习的能力。

2目前教学过程中存在的一些问题

在教学方法上,侧重于对面向对象相关术语及概念的灌输,不能很好地与结构化编程的思想进行对比学习。侧重于对语法、语义、语用环境的理解与学习,是以概念理解和记忆为主要手段的继承式学习,这样做的结果是学生仅仅在很浅的层次上学习了一种编程的方法及一些简单语法规范,相对于非计算机专业学生的程序设计学习来说,体现不出计算机专业的优势。

在教学内容的组织上,片面强调教学进度与信息量等外在的东西,忽视对学生分析与解决问题能力的引导,各门相关课程之间缺少衔接,不能很好的将编程环境、程序设计语言、算法、数据结构、程序设计思想关联起来形成体系化教学。总之,无论是从教学内容、方法及手段上看,与“研究型教学”的要求相去甚远。

3算法驱动的教学过程的设计

教学的总体构想是充分利用面向对象程序设计的“实践”,用于解决算法中的“理论”问题,以此来学习、理解和应用面向对象程序设计的思想及语法规范。以学生为主体,在知识体系上形成一个完整的、立体的对面向对象程序设计思想及过程的理解。

具体可以表示为按照计算机解决实际问题的基本流程来设计教学过程,表示如下:

(1)提出问题

问题的选择最好能涉及到经典的算法范例,把算法思想通过实例形象地表达出来。问题的选择至少应满足一些要求。首先问题建模要符合学生当前的知识掌握程度,这里主要说的是相关的数学知识。其次问题所涉及的的算法与程序代码应符合由浅入深、由简入繁的认知规律,特别需要强调的是在初级阶段,对算法只是一种理念的引入,因此要尽量简单一些。再次,问题应具有典型性和启发性,最好能够涉及到计算机解决问题的全过程。

假设我们想通过回溯算法来组织面向对象程序设计的教学过程,可引入如下典型的“n皇后”问题:

问题描述:在n×n格的棋盘上放置彼此不受攻击的n个皇后,按照国际象棋的规则,皇后可以攻击在同一行或同一列或同一斜线上的棋子。设计程序使得在n×n格的棋盘上放置n个皇后,任何两个皇后不放在同一行或同一列或同一斜线上。

(2)对问题建立模型

问题提出后,如何用数学模型来描述实际问题是程序设计的起点。由实际问题抽象出数学模型进而设计出计算机表示的数据结构是培养学生抽象能力的重要环节。抽象能力是计算机专业工作者的基本素质,抽象的层次越高,想象的维数就越多。由于我们的教学重点在于面向对象程序设计方法的教学,此环节的作用在于让学生体验用计算机解决问题的综合性,因此所提出的问题建立模型较简单。当然随着学生学习的深入,应该逐渐强调数学建模的训练。

对于上述范例,不同的学生可能提出不同的建模方案,教师应对学生的方案进行分析总结并将自己的抽象过程讲解给学生。可以采用如下简单模型:

1)输入:

n(n为大于0的整数,所表示的意义为棋盘的大小及皇后的多少)

2)限界条件(满足题目所要求的棋子摆放的条件):

上式中xi表示第i行的列位置。

3)输出

{y1y2y3…yn}

yi为第i行的棋子所在的列。

(3)算法设计

算法的设计是在数学模型基础上,对学生创造力和想象力的进一步培养,是解决问题的核心所在。无论什么样的程序设计思想方法、数学模型、程序代码都是为算法服务的,以算法为核心的程序设计才有现实意义,进而能使学生深刻理解程序设计思想。就一个实际问题,在算法设计这一环节中要充分发挥学生的观察力、想象力,争取每个学生都能提出自己的解决方案(至少应能提出一种设计思想)。教师也可以在此基础上与学生共同讨论提出自己的算法,不能强迫学生接受自己的思想,而是要鼓励他们通过自己的分析来判断哪种方案更适合。提出的算法是要借助于某种语言来描述出来,这些语言可以是自然语言、数学语言或约定的符号语言。

我们采取回溯法解决上述范例可以用伪C描述其算法:

N_QUEEN(n)//n皇后问题算法

x[1]=0,k=1//x[k]表示第k行皇后的列位置

whilek>0

dox[k]=x[k]+1//逐行摆放

whilex[k]==n&PLACE(k,x[k])==false//不符合摆放条件

dox[k]=x[k]+1,

ifx[k]

thenifk==n//说明全部解都求出来了

thenoutputx//输出结果

elsepush(x[k]),k=k+1,x[k]=0//将结果压栈,继续下一行

elsek=k-1;pop()//如果所有列都试过了还没解,则回溯,将结果出栈

PLACE(k,x[k])为按照限界条件判断是否在指定的行列上摆放棋子。显然在此算法中需要用到一个称为“堆栈”的数据结构。它能够保存必要的数据,同时能提供保存状态与恢复前一状态的功能。应该是集数据与操作的封装体,它能够作为一个整体为算法的实现提供服务。

(4)抽象数据类型与数据结构

抽象数据类型(AbstractDataType)是指一个数学模型以及定义在该模型上的一组操作。它是对数据结构更高的抽象。通过抽象数据类型来进一步引入类与对象的设计,抽象数据类型可以对面向对象程序设计中的类与对象进行更深刻的理解。

针对本例中所需的是一个关于堆栈的抽象数据类型,描述为:

ADTStack{

数据部分:

数据对象:D={ai|ai∈ElemSet,i=0,1,2,…,n,n>=0}

数据关系:Rl={〈ai-1,ai〉|ai-1,ai∈D,i=0,1,2,…,n}

a0为栈顶元素,an为栈底元素

操作部分:

InitStack(&S)//构造一个空栈S

DestroyStack(&S)//销毁栈S

ClearStack(&S)//将堆栈置空

StackEmpty(S)//判断是否为空栈

StackFull(S)//判断是否栈满(只用于顺序栈的操作中)

GetStackLength(L)//得到栈的长度

Push(e)//将e压栈

Pop(&e)//获得栈顶元素至e中,并从堆栈中删除栈顶元素

}ADTStack

在此抽象数据类型中,需要定义数据元素和数据关系,由此产生实际的数据结构,本例中的教学,在初级阶段应该引导学生采用简单的结构体来描述数据项和数据元素,甚至直接采用基本数据类型及数组来描述。然后可根据学生的掌握情况,逐步引导到采用复杂结构体及链表形式。当然它们的数据和操作最终都将封装到类中。

(5)类的设计及对象的引用

有了抽象数据类型和必要的数据结构做基础,下面要考虑的问题就是如何用软件来实现,将抽象数据类型作为一个整体自然就引出了封装的概念,于是就引入了课程的重点内容类的设计。具有一定数据结构的数据是代表实体属性的,而操作是实体所具有的行为,在此可以让学生首先用以功能为核心的结构化编程中的“全局函数”来描述实体的“行为”,找出其表示自然实体的不当之处。分析将其映射到软件空间后所引起的在安全性、复杂性、重用性、易维护性等方面的问题。通过比较、关联及启发的方式,教师可以自然地引出类的设计原则与优势所在,并给出具体的语法规范。特别是由于“行为”具有了具体的归属,自然而然地就涉及到了“全局函数”与“成员函数”的区别,由此非常易于学生对封装后的类中数据与方法(或称为数据成员与成员函数)访问控制要求的理解。

针对上述的例子,在学生初次接触面向对象程序设计的情况下,教师给出类的声明,假设采用的是C++语言作为教学环境,语法如下:

classStack//栈类定义

{private:

unsigneddata;

unsignedtop;

unsignedsize;//堆栈的最大容量

public:

Stack(intn);//构建一个容量为n的栈

~Stack();

boolPush(Typevalue);//将值value压栈,成功返回true否则返回false

boolPop(Type&e);//将当前栈顶元素放入e中,成功返回true,否则返回false

voidMakeEmpty();//将栈置空

longGetLenth();//得到当前栈的元素个数

boolIsEmpty();//判断栈是否为空,空则返回true,否则返回false

boolIsFull();//判断栈是否满,满则返回true否则返回false

}

通过对该类声明的理解,启发学生按照一定的语法规范去具体实现成员函数。

下面就是类的应用了,此处教学中的难点是如何区分类与对象,通过抽象数据类型与具体的实体来说明“型”与“值”的区别。最后是算法的计算机程序实现,在这里教师应强调对象的“工具”作用,也就是说它是实现算法的一个“工具”,能够提供算法所需要的服务,而且是一个封闭的,对我们来说是透明的服务。

随着课程的深入,让一个堆栈类继承于一个无限制线性表类可以实现代码重用及多态性,通过设计堆栈类摸板实现对堆栈类的更高的抽象及代码重用。在应用方面,所有用到堆栈的算法都可以用堆栈类产生的对象为我们提供必要的服务,如果是类摸板会提供更方便的应用。

4结束语

正如历史上第一个以“大学的理念”为名著书和演讲的人纽曼认为的那样,大学要培养出具有“哲学习性”的人。这种人忠于求真并善于领会真理的意义,能以全面的眼光观察事物,能洞悉事物的普遍联系,能理解事物各方面的价值[3]。在大学,每一门课程都与其它的课程有很大的相关性,设置好的教学组织与授课模式能够将各个方面知识融汇贯通,将学生对知识的认识与理解建立在“体系“级别的层次之上,进而更好地用知识来创造性地解决实际问题。这也是我们学习一门专业课程最好的效果,也是“研究型”教学的要求。毫无疑问这种教学模式也是一种思维方式的培养。

参考文献:

[1]张洪斌.计算机数值算法[M].北京:中国矿业大学出版社,1996.

[2]陈俊杰.数据结构[M].北京:中国矿业大学出版社,1995.

[3]张岂之,谢阳举.西方近现代大学理念评析[J].高等教育研究,2003,24(4).

更多范文

热门推荐