算法设计与分析(详细解析(含源代码)
64页1、.常用算法设计方法要使计算机能完成人们预定的工作,首先必须为如何完成预定的工作设计一个算法,然后再根据算法编写程序。计算机程序要对问题的每个对象和处理规则给出正确详尽的描述,其中程序的数据结构和变量用来描述问题的对象,程序结构、函数和语句用来描述问题的算法。算法数据结构是程序的两个重要方面。算法是问题求解过程的精确描述,一个算法由有限条可完全机械地执行的、有确定结果的指令组成。指令正确地描述了要完成的任务和它们被执行的顺序。计算机按算法指令所描述的顺序执行算法的指令能在有限的步骤内终止,或终止于给出问题的解,或终止于指出问题对此输入数据无解。通常求解一个问题可能会有多种算法可供选择,选择的主要标准是算法的正确性和可靠性,简单性和易理解性。其次是算法所需要的存储空间少和执行更快等。算法设计是一件非常困难的工作,经常采用的算法设计技术主要有迭代法、穷举搜索法、递推法、贪婪法、回溯法、分治法、动态规划法等等。另外,为了更简洁的形式设计和藐视算法,在算法设计时又常常采用递归技术,用递归描述算法。一、迭代法迭代法是用于求方程或方程组近似根的一种常用的算法设计方法。设方程为f(x)=0,用某种数学
2、方法导出等价的形式x=g(x),然后按以下步骤执行:(1) 选一个方程的近似根,赋给变量x0;(2) 将x0的值保存于变量x1,然后计算g(x1),并将结果存于变量x0;(3) 当x0与x1的差的绝对值还小于指定的精度要求时,重复步骤(2)的计算。若方程有根,并且用上述方法计算出来的近似根序列收敛,则按上述方法求得的x0就认为是方程的根。上述算法用C程序的形式表示为:【算法】迭代法求方程的根 x0=初始近似根;do x1=x0;x0=g(x1);/*按特定的方程计算新的近似根*/ while ( fabs(x0-x1)Epsilon);printf(“方程的近似根是%fn”,x0);迭代算法也常用于求方程组的根,令X=(x0,x1,xn-1)设方程组为:xi=gi(X)(I=0,1,n-1)则求方程组根的迭代算法可描述如下:【算法】迭代法求方程组的根 for (i=0;in;i+)xi=初始近似根;do for (i=0;in;i+)yi=xi;for (i=0;in;i+)xi=gi(X);for (delta=0.0,i=0;idelta)delta=fabs(yi-xi); wh
3、ile (deltaEpsilon);for (i=0;in;i+)printf(“变量x%d的近似根是 %f”,I,xi);printf(“n”);具体使用迭代法求根时应注意以下两种可能发生的情况:(1) 如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制;(2) 方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败。二、穷举搜索法穷举搜索法是对可能是解的众多候选解按某种顺序进行逐一枚举和检验,并从中找出那些符合要求的候选解作为问题的解。【问题】将A、B、C、D、E、F这六个变量排成如图所示的三角形,这六个变量分别取1,6上的整数,且均不相同。求使三角形三条边上的变量之和相等的全部解。如图就是一个解。程序引入变量a、b、c、d、e、f,并让它们分别顺序取1至6的整数,在它们互不相同的条件下,测试由它们排成的如图所示的三角形三条边上的变量之和是否相等,如相等即为一种满足要求的排列,把它们输出。当这些变量取尽所有的组合后,程序就可得到全部可能的解。细节见下面的程序。【程序
4、1】# include void main()int a,b,c,d,e,f;for (a=1;a=6;a+)for (b=1;b=6;b+)if (b=a)continue;for (c=1;c=6;c+)if (c=a)|(c=b)continue;for (d=1;d=6;d+)if (d=a)|(d=b)|(d=c) continue;for (e=1;e=6;e+)if (e=a)|(e=b)|(e=c)|(e=d) continue;f=21-(a+b+c+d+e);if (a+b+c=c+d+e)&(a+b+c=e+f+a)printf(“%6d,a);printf(“%4d%4d”,b,f);printf(“%2d%4d%4d”,c,d,e);scanf(“%*c”);按穷举法编写的程序通常不能适应变化的情况。如问题改成有9个变量排成三角形,每条边有4个变量的情况,程序的循环重数就要相应改变。对一组数穷尽所有排列,还有更直接的方法。将一个排列看作一个长整数,则所有排列对应着一组整数。将这组整数按从小到大的顺序排列排成一个整数,从对应最小的整数开始。按数列的递增顺序逐一列
《算法设计与分析(详细解析(含源代码)》由会员简****9分享,可在线阅读,更多相关《算法设计与分析(详细解析(含源代码)》请在金锄头文库上搜索。
2019年自贡市清华园学校高考生物简单题专项训练(含解析)
2019年秋季石油大学现代应用文写作网考练习试题+在线作业答案
2019年信宏中学高考生物简单题专项训练(含解析)
2019年莲塘中学高考生物简单题专项训练(含解析)
2019年宜阳县二中高考生物简单题专项训练(含解析)
2019年宁波神舟学校高考生物简单题专项训练(含解析)
2019年谢通门县中学高考生物简单题专项训练(含解析)
2019年前埔中学高考生物简单题专项训练(含解析)
2018年二级建造师公路工程实务重点考点总结
2018年一级建造师水利水电实务考点重点
2019年一级建造师市政实务案例考点
概率论与数理统计第二版谢永钦课后答案
空间向量求角度与距离10种题型归类 (解析版)2023-2024学年高二数学上学期期中期末复习讲练测(人教A版2019选择性必修第一册)
中医综合模拟试卷348
2011年3000名教师及特岗招考《计算机基础》复习题
2019年槎水中学高考生物简单题专项训练(含解析)
2009年9 月全国计算机等级考试二级笔试试卷
2019年宣城市第四中学高考生物简单题专项训练(含解析)
中医综合模拟试卷333
2019年安全知识竞赛题库2
2024-04-08 33页
2024-04-08 10页
2024-04-08 25页
2024-04-08 12页
2024-04-08 10页
2024-04-08 21页
2024-04-08 40页
2024-04-08 34页
2024-04-08 28页
2024-04-08 28页