算法 数值运算算法 误非线插数差线性值值分性方法微析 方程、积程组曲分 求数线根 值拟解 合 非数值运算算法 线数图 树 查性组 表 排找 序 算法分类: 算法设计与分析常用方法:
1、穷举法:对所有可能解按某种顺序进行逐一枚举检验,找出实际解。
2、递推法:利用问题本身具有的递推关系进行求解。是把问题分成若干步,并找出相邻关系。 3、迭代法:是数值算法中的典型算法,它通过初始估值出发,逐步逼近找出最终解, 通常用于求微积分或解方程、方程组。
4、递归:靠不断引用自身,直到引用对象为已知值的一种处理方法。 算法设计常用策略:
5、贪婪法:只以当前情况为基础进行最优选择而不考虑整体的各种可能。是一种不求整体最优解的方法。相较穷举法时间消费较少
6、分治法:把一个复杂问题分成多个相似子问题,再把子问题分成更小的若干子问题??直到可以直接求解,解即为所有子问题解的合并
7、动态规划法:用于求解包含重叠子问题的最优化问题的方法。它将原问题分解为相似子问题后,在求解过程中逐渐通过子问题解求出原问题的解。是多种算法的基础,广泛用于计算机科学和工程领域。
算法最常用的两种表示方法:伪代码和流程图法
开始/结束流程线处理(动作)包含符号:
顺序,分支,循环(当型和直到型)
输入/输出
条件判断条件?A不成立条件?成立成立ABAB不成立A条件?
成立1、递推法 不成立【例1】兔子繁殖问题:假设第1个月抱来一对小兔子,从第当型循环3个月开始,每月将生1对小兔子,并且这对小兔子到第3个月又生下代小兔子。假若兔子只生不死,问一年中的每个月各有多少只兔子。 直到型循环繁殖过程如下:
一月 二月 三月 四月 五月 六月 1 1 2 3 5 8 ? 1 1 1+1=2 2+1=3 3+2=5 5+3=8 …
(例1) (例2图)
【例2】楼梯上有n阶台阶,上楼允许一步上1阶,或一步上2阶,试问楼梯为n阶时共有多少种不同的上楼方法。
分析:如果从第1阶开始,考虑走到第2、3、4阶?的方法,很难找出规律;但反过来,先思考“到第n阶有哪几种情况?”,只有两种:
1)从第n-1阶到第n阶;2)从第n-2阶到第n阶。
记n阶台阶的走法数为f(n),则 f(n)= 1(n=1) f(n)=2(n=2) f(n-1)+f(n-2) (n>2) 【例3】求两整数的最大公约数。
分析:辗转相除法是根据递推策略设计的。设两个整数a>b且a除以b商x余c;则a-bx=c: a、b的最大公约数也是c的约数,a、b的最大公约数与b、c的最大公约数相同。同样方法计算b、c的最大公约数??,直到余数为0,最后的除数即为所求的最大公约数。
算法:循环“不变式”第一次求a、b相除的余数c,第二次经a=b,b=c操作,就实现了第二次还是求“a”“b” 相除的余数,这就找到了循环不变式。循环在余数c为0时结束。
例3图 小猴吃桃 2、倒推法:对问题采用从后向前推导方法求解。
【例】小猴吃桃问题:一只小猴子摘了若干桃子,每天吃现有桃的一半多一个,到第10天时发现只有一个桃子了,原有多少个桃?
分析:每天的桃数为:a10=1, a9=(1+a10)*2, a8=(1+a9)*2,??a10=1,所以得出:ai=(1+ai+1)*2。i = 9,8,7,6??1
3、蛮力法:是基于计算机运算速度快的特性,把问题所有可能情形由计算机一一尝试,以排查出问题的解。应用:枚举法;选择排序、冒泡排序、插入排序、顺序查找、朴素的字符串匹配,密码破解等都是蛮力策略的具体应用。
通常从以下两点着手:1)给出枚举范围。2)给出约束条件。
【例1】百钱百鸡问题。中国古代数学家张丘建在他的《算经》中提出了著名的“百钱百鸡问题”:鸡翁一,值钱五;鸡母一,值钱三;鸡雏三,值钱一;百钱买百鸡,翁、母、雏各几何? 分析:这类问题适合用枚举法求解。设x,y,z分别为公鸡、母鸡、小鸡数。则x、y、z值均小于等于100。且满足5*x+3*y+z/3=100。流程图:
未优化的 优化
显然,100元买公鸡,5元/只,X<=20;同理y<=33;z<=100。所以,可减少循环次数,流程图
如上:
分析:需要尝试20*34*100=68000次。效率太低。改进:在公鸡x、母鸡y数量确定后,小鸡数z就固定为100-x-y。此时约束条件只有一个:5*x+3*y+z/3=100
只需尝试20*33=660次。进一步:限定Z被3整除时,才判断“5*x+3*y+z/3=100”。又可省去z不整除3时的算术计算和条件判断,进一步提高了算法效率。
【思考1】农场主问题:一个农场主有两种牲畜:猪和鸡。共7头,22条腿。则猪和鸡各多少? 提示:寻找pigs, hens。使pigs + hens = 7,pigs * 4 + hens * 2 = 22
【思考2】爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶也不剩。请问该阶梯至少有多少阶。
提示:可以设置台阶数i的枚举范围在一个7到一个很大数(如20000)之间,且增值为7,判断i是否同时满足除2余1、除3余2、除5余4、除6余5的条件,是则退出循环,输出结果。
各章问题:
1. 计算机发展的阶段 2. 计算机应用的分类及变迁 3. 二进制在计算机发展中的作用 4. 进制转换原理及其算法
5. 计算机中数值信息的表示及其应用 6. 计算机中非数值信息的表示 7. 汉字的编码及其转换
8. 计算机的工作原理-存储程序工作原理 9. 计算机系统的构成-软件系统+硬件系统 10. 计算机硬件系统 11. 程序及其指令系统 12. 计算机软件系统分类 13. 计算机语言的发展 14. 操作系统的定义及其功能
15. 进程概念及进程与程序的联系和区别 16. 进程状态转换 17. 虚拟内存管理 18. 文件管理及文件系统 19. 什么是文件关联,如何设置 20. 磁盘管理及什么是FAT 21. 多媒体及多媒体技术 22. 多媒体计算机的组成
23. 音频数字化(采样、量化的概念,数字音频信号性能指标:采样频率、采样精度。声音文
件存储格式)
24. 视频数字化(数字视频标准与文件格式)
25. 图像的数字化和数字图像(数字图像性能指标、图像和图形) 26. 计算机网络的概念及其发展 27. 计算机网络的分类 28. 网络的拓扑结构 29. OSI七层模型
30. TCP/IP协议簇中的常见协议 31. 调制解调及拨号上网原理 32. ADSL上网概念及原理
33. IP地址及其分类,子网掩码的用途 34. 域名概念及域名解析过程
35. 各种网络服务原理(电子邮件、WWW、Telnet、FTP、ip电话) 36. 什么是网络安全
37. 计算机病毒概念(定义、分类、特点)及其防治 38. 防火墙原理、功能、分类 39. 代理防火墙原理
考试题型:选择,填空和简答
祝大家取得好成绩!!