培养学生创新思维与能力的算法分析案例

论文价格:0元/篇 论文用途:仅供参考 编辑:论文网 点击次数:0
论文字数:**** 论文编号:lw202348145 日期:2023-11-23 来源:论文网
摘 要 高校教学中的创新性思维和能力的培养直接决定国家和民族的未来。通过对电路导通可能性和哥德巴赫猜想的算法实现,讨论了算法的导通概率、对比分析了算法的T(n)和S(n),实际运行结果表明,优秀的算法案例或题库结合C/S架构的MSSE能提高学生自我学习、考试和评估的效率,提高学生在算法实现和分析上的兴趣和能力,从而增强学生在算法实现中的创新能力。

  关键词 电路导通;模拟;哥德巴赫猜想;算法分析


  科学技术的迅猛发展向高等教育提出了新的挑战,目前各国在教学改革中无不把发展学生的创新能力作为教学过程的突出重点。培养学生的创造性思维,就是要培养学生善于学习新知识和运用知识解决实际问题,成为适应能力强,富有创造才能的专门人才:对计算机专业的学生而言,就应在算法设计、实现和分析方面,具备更强的独立探求新技术和新方法的能力、创造能力和适应能力[1]

1 算法分析概述

  《算法分析》是计算机专业的一门重要的专业课程,它是编译原理、操作系统、数据库原理等课程的重要基础,主要介绍各种数据结构的特点,存储方法和基本运算、排序和查找的原理和方法,以及研究非数值计算领域中计算机的操作对象及其内在的逻辑关系,在计算机中的存储方法和基本的算法设计与分析技术[2]。在算法分析与设计过程中培养学生的创造性与发散思维,需要强化以下三个方面:

  (1)算法分析是软件工程的基础。学生重视了工程中的技术细节和开发的规范性,却往往忽略了软件的应用领域的问题复杂性,这也是导致软件危机和不可预计的后期返工和开发成本剧增的重要因素[3];应用和学科的不断分化和综合、跨学科、边缘学科的出现[1]对高校学生的知识覆盖面和综合能力提出了更高的要求。

  (2)算法分析与设计是一项讲究条理和规范的技术专业。要尽量做到:使用Option Explicit强制变量声明、使用常量代替硬编码、使用枚举值、使用“&”字符对字符串进行合并操作、使用Select Case语句进行取值比较和判断、尽量避免使用Goto语句、尽量缩小变量的作用域[4]

  (3)善于利用头脑风暴法、戈登技术等手段,将学生的直觉思维与分析思维相结合、辐合思维与发散思维相结合、抽象思维与形象思维相结合 [5]。算法分析与设计用例应具有典型性、代表性、能发人深醒,不应太浅显、太难和范围太广,通过用例,应充分发挥学生在再造想象基础上的创造想象力。以下通过两个具体应用的算法分析来介绍学生的创造性思维的培养。

2 关于电路导通可能性的模拟算法

  经过某段时间后,导体R1、R2、R3和R4因损坏而开路的可能性均为50%,下面的三种电路连接方法中,哪些方案更能保证A、B间的电路导通?我们通过10000次模拟试验来输出试验结果,其实现的Powerscript如下:

    图1 方案a        图2 方案b         图3 方案c

integer R1,R2,R3,R4

ulong Plan_a,Plan_b,Plan_c

Plan_a = 0  //初始化随机导通的计数器。

Plan_b = 0

Plan_c = 0

randomize(0)   //通过系统时钟,得到随机发生器的种子。

for i = 1 to 10000

R1 = RAND(101); R2 = RAND(101); R3 = RAND(101); R4 = RAND(101)

if (R1 > 51 or R3 > 51) and (R2 > 51 or R4 > 51) then Plan_a++ //判断连接方案a的导通性,并累加方案计数器。

if (R1 > 51) or (R2 > 51 and R3 > 51 and R4 > 51) then Plan_b++ //判断连接方案b的导通性,并累加方案计数器。

if (R1 > 51 and R2 > 51) or (R3 > 51 and R4 > 51) then Plan_c++ //判断连接方案c的导通性,并累加方案计数器。

next

if Plan_a > Plan_b + 100 and Plan_a > Plan_c + 100 then

messagebox("模拟结果","方案a导通的可能性更大")   //输出试验结果。

elseif Plan_b > Plan_a + 100 and Plan_b > Plan_c + 100 then

messagebox("模拟结果","方案b导通的可能性更大")

elseif Plan_c > Plan_a + 100 and Plan_c > Plan_b + 100 then

messagebox("模拟结果","方案c导通的可能性更大")

else

messagebox("模拟结果","测试结果N/A")

end if

messagebox("随机导通次数","Plan_a: " + string(Plan_a) + " Plan_b: " &

+ string(Plan_b) + " Plan_c: " + string(Plan_c))

  根据以下的概率统计公式和算法,计算出三种连接方案导通性的理论概率:

转贴于 免费论文下载中心 通过对模拟算法程序的10次运行,我们将各方案的导通次数结果列表如下,以此证明模拟算法的较高仿真度。模拟算法的运行结果或结论是:方案a与方案b的电路导通性并无明显区别,但他们都比方案c易导通。

表1 导通性概率的量化对比分析

连接方案

1

2

3

4

5

6

7

8

9

10

平均值

Plan_a

5516

5587

5476

5547

5542

5444

5626

5634

5443

5573

5539

Plan_b

5509

5657

5549

5540

5509

5460

5578

5624

5479

5597

5550

Plan_c

4289

4370

4282

4305

4317

4180

4424

4370

4166

4306

4301


3 关于哥德巴赫猜想的局域验证算法

  德国数学家哥德巴赫在1742年提出一个猜想:每个大于4的偶数都是两个奇素数的和,试编写程序来验证歌德巴赫猜想在100以内的正确性:

Ulong tested,prime1,prime2,exclusion

for tested = 4 to 100 step 2      //tested为被测试的100以内的大偶数。

   prime1 = 1

  A: prime1++

   for exclusion = 2 to sqrt(prime1)     //通过Sqrt(prime1)的循环上限来降低算法的时间复杂度[7]

   if mod(prime1,exclusion) = 0 then goto A  //判断Prime1是一个质数,否则,跳转到A处,判断下一个数。

next

   prime2 = tested - prime1      //tested这个大偶数可分解为一个质数Prime1和Prime2。

   for exclusion = 2 to sqrt(prime2)

  if mod(prime2,exclusion) = 0 then goto A //判断

另一个数Prime2是一个质数,否则,

next          //跳转到A处,判断下一个数。

messagebox(“验证结果”,string(tested) + “ = “ + string(prime1) + “ + “ + string(prime2))

//通过messagebox输出验证结果

next

  该算法的渐近时间复杂度为:由于算法中的额外空间相对于输入数据量来说是常数,因此,在空间复杂度方面属于原地工作模式。我们通过调用Cpu()函数来报告Powerbuilder应用程序从运行之初到调用处所流逝的CPU时间,单位为毫秒。验证算法的效率应由以下5个因素来决定:算法选用的策略、针对问题的规模、编译程序所产生的机器代码的质量、机器执行指令的速度和书写程序的语言,对于同一算法,通常实现语言的级别越高,执行效率就越低,表2中,列出了在相同计算机硬件环境下,Powerbuilder和Quick Basic代码在猜想的局域验证上花销的时间。

表2 不同语言平台的验证算法在相同问题规模下的效率对比(单位:毫秒)

问题规模

1000

10,000

100,000

1000,000

10,000,000

Quick Basic

59

598

17141

491090

8927336

Powerbuilder

16

250

6390

313796

6538594


3.1 对称奇素数的个数

  设不大于偶数N的合数的个数有F个,则:

   N > F       ……(1)

  设不大于偶数N的奇素数的个数有 π(N)个,它等于N个正整数的对称奇素数的个数。又设π(N) 个奇素数的对称奇素数的个数为 π(S),不大于偶数N的F个合数的对称奇素数的个数有 π(F)个,则:

……(2)

3.2 奇素数的对称奇素数

  设不大于偶数N的奇素数是si,则N-si称为si的对称数。若N-si是奇素数,则称为si的对称奇素数,偶数N表示为:

N=si+(N-si)           ……(3)

  综上所述,得到的结论是:对于N=si+(N-si),在奇素数si的对称数N-si里面,至少有一个是奇素数,它与其对称奇素数之和为大偶数N[8]

4 结束语

  在创新性思维的培养过程中,教师应通过示范性试验使学生获得知识、巩固知识并发展观察能力,然后由教师提出有创新和启发性的算法题目,指导学生去独立探索和创造性地实现算法。我们结合由Powerbuilder和ASA开发的MSSE(Management System of Self-study and Educational Administration)[6]的题库管理和题库输入模块,实现了学生在算法分析和学习过程中的自主性、激发了学生对算法分析的学习积极性、培养和加强了学生的创新和发散性思维。MSSE的实际运行结果也表明,高质量的考试题库结合CAE能以最低的运行成本实施因材施教,并提高学生独立处理实际问题的兴趣和能力。

参考文献

[1] 李成良,顾美玲.大学教学理论与方法[M].贵阳:贵州教育出版社,1995

[2] 胡学钢.数据结构算法设计指导[M].北京:清华大学出版社,1999

[3] 杨明,马帅.软件测试和软件质量保证[M].北京: 珠海市豪迈实业有限公司,2003

[4] 杨明,遥远.VB高级编程[M].北京:珠海市豪迈实业有限公司,2003

[5] 伍新春.高等教育心理学[M].北京:高等教育出版社,2001

[6] 朱力强,王娟.一种高效和稳定的教务管理系统[J].内江师范学院学报(自然科学版),2006,21(6):42

[7] 张建平.用VB.NET + SQL Server2000来验证哥德巴赫猜想[J].电脑开发与应用,2005,18(2)

[8] 刘丹.哥德巴赫猜想初等数学方法浅易分析[J].内江科技,2005(2):26

[9] 李旭锋.一个高分辨率视频的创新加密算法[J].现代计算机,2007,3 免费论文下载中心

如果您有论文相关需求,可以通过下面的方式联系我们
客服微信:371975100
QQ 909091757 微信 371975100