算法入门PPT课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《算法入门PPT课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 算法 入门 PPT 课件
- 资源描述:
-
1、2010年8月.1算法入门 算法-程序的灵魂 随机数函数 数组 整数问题 平方数问题 用算法提高程序的运行速度 参考书籍2010年8月.2算法-程序的灵魂 硬件硬件:摩尔定律速度提高约10亿倍. 软件软件:发展相对缓慢对算法研究不足2010年8月.3算法-程序的灵魂哥德巴赫猜想哥德巴赫猜想费马定律费马定律现代数论现代数论的建立和发展的建立和发展大素数大素数公开密钥公开密钥加密密钥加密密钥数字签名数字签名2010年8月.4算法-程序的灵魂 算法的描述算法的描述:自然语言/流程图 算法的实现算法的实现:计算机语言编程,上机实现伪代码:if(aabb是平方数) printf(“Yesn”);2010
2、年8月.5算法的多样性 求多个正整数的最大公约数和最小公倍数的3种算法,如(756,504,630,2226)的最大公约数,最小公倍数。算法算法1 1:分解质因数法:分解质因数法756=2*2*3*3*3*7 504=2*2*2*3*3*7630=2*3*3*5*7 2226=2*3*7*53最大公约数:4个数的公因子相乘=2*3*7=42最小公倍数:在同样的质因数中,选取最多的个数相乘(不重复),即3个2,3个3,1个5,1个7,1个53=2*2*2*3*3*3*5*7*53=4006802010年8月.6算法的多样性算法算法2 2:辗转相除:辗转相除- -递推法递推法1.(756,504)
3、:756%504=252,504%252=0,所以(756,504)=2522.(630,252):630%252=126,252%126=0,所以(630,252)=1263.(2226,126):2226%126=84,126%84=42,84%42=0,所以(2226,126)=42因此,(756,504,630,2226)的最大公约数为422010年8月.7算法的多样性算法算法2 2:辗转相除:辗转相除- -递推法递推法最小公倍数:1.756,504=756*504/252=15122.1512,630:先求(1512,630)=126,再1512,630=1512*630/126=7
4、5603.7560,2226:先求(7560,2226)=42,再7560,2226=7560*2226/42=400680所以,756,504,630,2226=4006802010年8月.8算法的多样性算法算法3 3:逐次相减法求最大公约数、逐次相除法求最小公倍数:逐次相减法求最大公约数、逐次相除法求最小公倍数(756,504,630,2226)=(2226,756,630,504) /先从大到小排序=(2226-2*756,756-630,630-504,504) /逐次相减逐次相减,满足A=A-n*B0=(714,126,126,504)再重复上述过程:=(714,504,126,12
5、6)=(714-504,504-3*126,126,126) /逐次相减时逐次相减时不能为0=(210,126,126,126)再重复=(42,42,42,42),因此,最大公约数为422010年8月.9算法的多样性算法算法3 3:逐次相减法求最大公约数、逐次相除法求最小公:逐次相减法求最大公约数、逐次相除法求最小公倍数倍数逐次相除法逐次相除法: :设有若干个数设有若干个数, ,其中最大的数为其中最大的数为a,a,用用a a的的1 1倍倍,2,2倍倍,除以除以其余的个数其余的个数, ,若第若第n n次恰好都能除尽次恰好都能除尽, ,则此时的则此时的n n* *a a即为它们即为它们的最小公倍数
6、的最小公倍数. .如本题如本题756,504,630,2226,756,504,630,2226,最大数为最大数为2226,2226,其其180180倍恰好倍恰好能被其余数除尽能被其余数除尽, ,所以所以, , 756,504,630,2226=2226*180=4006802010年8月.10算法的奇妙性 例 1-2+3=? 例=10000*10000/20000.0=?2010年8月.11算法的奇妙性 韩信大点兵。韩信校场点兵,2人一伍多1人,3人一伍多2人,4人一伍多3人,5人一伍多4人,6人一伍多5人,7人一伍多6人,8人一伍多7人,9人一伍多8人,10人一伍多9人,11人一伍多10人
7、,12人一伍多11人。请问:韩信至少有多少兵?2010年8月.12算法的奇妙性 分析:都是“少1人”,因此,求最小公倍数(再减1)2,3,4,5,6,7,8,9,10,11,12-1=277192010年8月.13算法的奇妙性 N个人参加乒乓球单打淘汰赛,至决出冠军需要打多少场? 传统算法:(1)知道N的具体值;(2)考虑可能的轮空;(3). 创新算法:N-1场。(N个人比赛,只有冠军不被淘汰,共需淘汰N-1人,即N-1场)2010年8月.14穷举法编程的瑰宝 穷举法(枚举法):将集合中的元素一一列举出来,验证是否有问题的解。 穷举法:没有办法的办法,但往往是高效的(算法构造快,程序编写快,运
8、行快)。 穷举法的关键:如何把实际问题定义成穷举问题,将可能的解限定在一个容易表达的集合内。-循环+if2010年8月.15随机数函数计算机模拟的基石 真随机数真随机数:掷硬币等。 伪随机数伪随机数:计算机模拟用,按某种算法计算产生的,是一个固定的序列。简单:随机数函数的使用复杂复杂:随机数函数的原理、算法、质量,对要解决的问题是否可靠/可信2010年8月.16高质量的均匀分布的随机数函数 均匀分布的随机数用得最多,而且是其他类型分布的随机数的基础。 质量质量:均匀性/覆盖性/独立性. 算法:查阅已有的经典算法,如乘法同余法乘法同余法/列表法/平方取中法 编写随机数函数double rnd(i
9、nt x):生成0和1之间(不包括0和1)均匀分布的随机小数 x=0,重复上一随机数 x=1,得到一个新的随机数 x=-1,第一次使用随机数 在头文件rndlib.h中自行定义2010年8月.17高质量的均匀分布的随机数函数 编写小学生乘法练习程序,由两位数乘以一位数。 分析:被乘数a是两位正整数,区间为(10,99),令a=rnd(1)*90+10,并转换成整型,得到1099之间的数。同理b=rnd(1)*8+2,得到29之间的数。int a,b,c;a=rnd(1)*90+10; b=rnd(1)*8+2;printf(“n%d %d=”,a,b);scanf(“%d”,&c); if(c
10、=a*b)2010年8月.18八种常用的随机数函数 1、等地铁时间-在区间(a,b)上均匀分布的随机数函数 算法:rnd(1)*(b-a)+a/在在(a,b)区间上均匀分布的随机数函数区间上均匀分布的随机数函数double abjvn(double a,double b)double f;f=rnd(1)*(b-a)+a;return f;2010年8月.19八种常用的随机数函数 设地铁每10分钟一趟,乘客到达车站的时间是随机的,试以分钟为单位(不满一分钟按一分钟计),模拟10000名乘客等车时间的人数分布,即等了1分钟、2分钟、10分钟的各有多少人。int a11,i,k;for(i=1;i
11、贝努利试验-几何分布) 算法:x=lnr/lnq+1double jihe(double q) /几何分布的随机数函数几何分布的随机数函数double f;f=log(rnd(1)/log(q)+1.0; /p:命中概率,命中概率,q:缺失概率缺失概率return f; /q=1-p2010年8月.21八种常用的随机数函数 设导弹射手命中率为p,射击同一坦克,直到命中为止,模拟所用导弹的发数。程序运行一次,模拟200次。P的值由键盘输入。int a31; /设每次所用导弹数不超过设每次所用导弹数不超过30发发q=1-p;for(i=1;i=200;i+) k=jihe(q); /此次模拟用了此
12、次模拟用了k发子弹发子弹 ak+; /用用k发导弹的次数加发导弹的次数加1 /ak表示用了表示用了k发导弹才命中的次数发导弹才命中的次数结果:用结果:用k发导弹命中的次数有发导弹命中的次数有ak次次2010年8月.22八种常用的随机数函数 3、日光灯管的寿命-指数分布的随机数函数 算法:- rdouble zhishu(double z) /指数分布的随机数函数指数分布的随机数函数double f;f= -z*log(rnd(1); /z为给定的一个平均值为给定的一个平均值return f; /f为正数为正数2010年8月.23八种常用的随机数函数 模拟电子管的寿命100次,设其平均寿命t=1
展开阅读全文