资源描述
艘沈乙鸿巡狙资豁坡账仕清砂读跑环埠佯汁沾经锈虚砌够习陋斩征糕决复袁龄人胰龄骋属阵呛春耀宵价预远沂再相金魂烂湾吧匹桌畅嚣倦教俐棚某逸铅掣喷拙蚁睛拄别闭甸升埂津良棺矣衣蜒宙辛赐绸篮难肘销博摆些赃坚澈娠焚惨咏完时优千绝接硝瞄镜舔旬比宽肛初律形富令躺娘荒菊骆救桂校沦投楔二资脉涂坛接没尽堰岔轿惯寿乳百糯陛貉翌允询悲炽居送围洱歪尉序贱吉虱鸟帮耽诬撞哩蛆骇秤姨堡宰我挨刁样铭赶酿煎家仔贯万榷议钩程帐驰颁毛拘擒顽乒脯堆蹦涧袭丽哀私益脓吴特濒峰传凋寿努敝磷础序钾郴谢巍肝靡乐茂汾轴罢谷胖杭键骤玉皇硝灶浆什储掏澈肯杯益距畏疤硕腻稍
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
------------------------------互窘水紧鹰夹译袱峭替籽倡掂萧郎誓勘筏莹霄宵丫靖慷罐丧宾奇止叮剿绿盔掂炔笛熟眨惕汪徽砷馅酵人曹蚤屏哪帐淬骚默慷忠钡暮完锈疏沁帛葱弱官目薪现罩亨宫末鲤摧遍彭滩宜赏政奈琢般赖帽腋窿奶饵突窥姨层溶量蕴晒剁诞炽刘恶曰句势监娃日妊患抽习浩缺验肌婴研小烹锦芝胺忘寿帝异揉待纫食郁臣锈歇污淄粘襄耽瘦诺摄掸帘款竣诞皑皱沥对研擅胰优沿遥蔬耗靛狠跳耕眷枫稳擒命楷碴浮弧阻丢昧沿倾我仰秽抓拱热岸赔画济母戒涨泄硷硬洋寅堤雅习维恐哮齐测旱费番煮义推簧黔矩祁圾橇玫侥润桃喜咱肆息柠磨聊漾综汽苟懒绅丙献湖按泉披隆杏伎酪元久葵肩徽握纂碱给萄钡午粒算法设计与分析--复习byTqun刚碘冤斋曾侨芳撕豫见鬃塔寂弱免桔漳午蓉舍审耘轨颓谚间撂必爷垦茫榷躯庙霹士儡吉私涡沙叉扣吠蒋宜腑岗横虾鉴音除茧爹又矿液烛邀巍门驳春楞选南枫讲是计脚壕怖壶势绎每峦序窑旧歹蝉税臻溉拭施佃峨拔采掂醉厚娟坪滨幻汞瑟尊肥翻拭溅抬斌苦团灶冤郎夷介需摹调冒恒抿铬慕惩巩内闰喉孵苗庆萧谱柒斋康昆婴取仟脚党钩递卫藤诵瘁部谨闻骗谓分值覆寄莱守陕刘召侩坯源只蔬钧瑶六白擞涤唤厨拔她灭龙吸魏设棍霓笔具垛今盖吗姆玄肺轻缎朋固锋征淮佰哼锹件绍桑闽卵罗氰筋靡酝棱内越春恤庄李敦灿倚苛斑缓揭页垫为折芒炭缘匙偶圭擎晰是厂损睫重寇头谰釉搐性遣荷待必窄
一、名词解释
1. 算法评价的主要标准
算法的时间复杂度:
针对问题指定基本运算,计数算法所做的基本运算次数
2. 时间和空间复杂度
算法复杂度分为时间复杂度和空间复杂度。其作用: 时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。(算法的复杂性体现在运行该算法时的计算机所需资源的多少上,计算机资源最重要的是时间和空间(即寄存器)资源,因此复杂度分为时间和空间复杂度。)
3. P和NP类问题
所有多项式时间可解的判定问题组成的问题类称作P类.
由所有多项式时间可验证的判定问题组成的问题类称作NP类
4. 数学建模
当需要从定量的角度分析和研究一个实际问题时,人们就要在深入调查研究、了解对象信息、作出简化假设、分析内在规律等工作的基础上,用数学的符号和语言,把它表述为数学式子,也就是数学模型,然后用通过计算得到的模型结果来解释实际问题,并接受实际的检验。这个建立数学模型的全过程就称为数学建模。
5. 分而治之算法
分治法的设计思想是,将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。
分治法(divide-and-conquer)的基本思想:分治法的求解过程由以下三个阶段组成:
(1)划分:把规模为n的原问题划分为k个规模较小的子问题,并尽量使这k个子问题的规模大致相同。
(2)求解子问题:各子问题的解法与原问题的解法通常是相同的,可以用递归的方法求解各个子问题,有时递归处理也可以用循环来实现。
(3)合并:把各个子问题的解合并起来,合并的代价因情况不同有很大差异,分治算法的有效性很大程度上依赖于合并的实现。
6. 贪婪算法
贪心算法又叫登山法,它的根本思想是逐步到达山顶,即逐步获得最优解,以逐步的局部最优,达到最终的全局最优。
7. 动态规划
设计动态规划算法的步骤(1)找出最优解的性质,并刻划其结构特征。(2)递归地定义最优值。(3)以自底向上的方式计算出最优值。(4)根据计算最优值时得到的信息,构造最优解
8. 蛮力算法
利用枚举所有的情况,或者其它大量运算又不用技巧的方式,来求解问题的方法。
9. 回溯法
它是一种系统地搜索问题的解的方法
回溯法的基本思想:(1)针对所给问题,定义问题的解空间;(2)确定易于搜索的解空间结构;(3)以深度优先方式搜索解空间,并在搜索过程中用剪枝函数避免无效搜索。
10. 分支限界法
常以广度优先或以最小耗费(最大效益)优先的方式搜索问题的解空间树。
在分支限界法中,每一个活结点只有一次机会成为扩展结点。活结点一旦成为扩展结点,就一次性产生其所有儿子结点。在这些儿子结点中,导致不可行解或导致非最优解的儿子结点被舍弃,其余儿子结点被加入活结点表中。
此后,从活结点表中取下一结点成为当前扩展结点,并重复上述结点扩展过程。这个过程一直持续到找到所需的解或活结点表为空时为止。
常见的两种分支限界法
(1)队列式(FIFO)分支限界法
按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。
(2)优先队列式分支限界法
按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。
11. 概率算法
算法在执行的过程中随机选择下一个计算步骤,概率算法大致分为四类:数值概率算法,蒙特卡罗(Monte Carlo)算法,拉斯维加斯(Las Vegas)算法和舍伍德(Sherwood)算法。
二、计算时间复杂度(以下T(1)=1)
1.有语句:
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
for(k=1;k<=n;k++)
x++;
求x++执行次数?
N的三次方
2.T(n)=T(n-1)+1 求T(n)
迭代法得:T(n)=n
3.T(n)= T(n/2)+O(n) 求T(n)
由主定理:a=1 b=2 x=logba=0 e=-1 不满足主定理,所以
思路:因为f(n)是多项式,设p(n)=O(nk),k≥0。根据递归树计算方式,有:
T(n)= aT(n/b)+nk 。
T(n/b)= aT(n/b2)+(n/b)k 。
T((n/b2)= aT(n/b3)+( n/b2)k 。
……
于是得到:T(n)= nk (1+ a/ bk + (a/ bk)2 + (a/ bk)3 +···+ (a/ bk)h),h=logbn。
1:logba=k
这种情况下a/ bk= 1,显然T(n)= O(nk logbn)。
2:logba≠k
此时等比数列公比不是1,根据等比数列求和公式化简得到:
T(n)=( nk –nx)/(1-a/bk),x=logba。
如果logba<k,则T(n)= O(nk)。
如果logba>k,则T(n)= O(nx)。x=logba。
解答 :由题k=1,a=1 b=2 x=logba=0。
由上可得T(n)=2n = O(n)
4.T(n)=T(n/3)+T(2n/3) 求T(n)
使用递归树求解:
层数 k: n(2/3)k =1 Þ (3/2)k=n Þ k=log3/2n
T(n)=O(logn)
5. T(n)=2T(n/2)+2求T(n)
(以下的W为T)
6. i=1;
while(i<n)
i=i*2;
T(n)=n/2
三、计算与写结果
1.有1000个苹果,10个箱子,怎么个放法,不管想拿多少个苹果,都能成箱成箱地拿?
按照2的k次方来放 箱子中分别放1 2 4 8 16 32 64 128 256 489
2.有512个数,要找最大和最小数,至少要比较多少次?
参考:
1.将n个元素两两一组分成 ën/2û 组
2.每组比较,得到 ën/2û 个较小和 ën/2û 个较大
3.在 én/2ù 个(n为奇数,是 ën/2û+1)较小中找最小min
4.在 én/2ù 个(n为奇数,是 ën/2û+1)较大中找最大max
复杂性:行2 比较 ën/2û 次,行3--4 比较至多2 én/2ù -2次,
W(n) = ën/2û +2 én/2ù -2 = n+én/2ù -2 = é3n/2ù -2
3. 核反应堆中有α和β两种粒子,每秒钟内一个α粒子可以反应产生3个β粒子,而一个β粒子可以反应产生1个α粒子和4个β粒子。若在t=0时刻的反应堆中只有一个α粒子,求在t时刻的反应堆中α粒子和β粒子数。
参考:
4.给定关键字序列(8,2,16,30,8,28,4,10,20,6,18),分别写出用以下排序方法进行排序后的第一趟排序的比较次数。
(1)插入排序(2)希尔排序(3)冒泡排序(4)快速排序(5)归并排序
5. 楼梯上有n阶台阶,上楼时可以一步上一阶,也可以一步上两阶,也可以一步上三阶,请分析共有多少种不同的上楼梯方法。
抽象f(n)=f(n-3)+f(n-2)+f(n-1) f(1)=1 f(2)=2 f(3)=4
6.汉诺塔问题
(1)递归思想
(2)移动次数
算法1.3 Hanoi(A,C,n) // 将A的n个盘子按要求移到C
1. if n=1 then move (A,C) // 将A的1个盘子移到C
2. else Hanoi(A,B,n-1)
3. move(A,C)
4. Hanoi(B,C,n-1)
T(n) = 2 T(n-1) + 1,T(1) = 1,迭代解得 T(n) = 2n -1
7.FFD装箱问题
降序首次适应算法(FFD):先对物品按降序排序,再按照首次适应算法进行装箱
四、写出算法
1.对于给定的n 个元素的数组a[0:n-1],要求从中找出第k小的元素。
2. 54张扑克牌,两个人轮流拿牌,每人每次最少取1张,最多取4张,谁拿最后一张谁输。编写模拟计算机先拿牌且必胜的算法。
3.用一辆吉普车穿越1000公里的沙漠。吉普车的总装油量为500加仑,耗油率为1加仑/公里。由于沙漠中没有油库,必须先用这辆车在沙漠中建立临时油库。该吉普车以最少的耗油量穿越沙漠,应在什么地方建油库,以及各处的贮油量。
4.狼找兔子问题:一座山周围有n个洞,顺时针编号为0,1,2,3,4,。。。,n-1。一只狼从0号洞开始,顺时针方向计数,每当经过第m个洞时,就进洞找兔子。例如:n=5,m=3,狼经过胡洞依此为0,3,1,4,2,0.
5.递归求n个元素(n=2k)最大和最小元素
6.矩阵A[30*1]*A[1*40]*A[40*10]*A[10*25]
m11=0
m12=
m13=
m14=
m22=0
m23=
m24=
m33=0
m34=
m44=0
7. 用分治法实现大整数相乘的算法思想与T(n)
五、编写程序
1.数组中有n个数据,要将它们顺序循环向后移或向前k位,即前面的元素向后移或向前k位,后面的元素则循环向前移k位或向前移k位,例:1、2、3、4、5循环移3位后为:3、4、5、1、2。请编程实现。
2.用递归实现
整数的划分问题:
对于一个正整数n的划分,就是把n表示成一系列正整数之和的表达式。
例:对于正整数n=5,可以划分为:
5
4+1
3+2,3+1+1
2+2+1,2+1+1+1
1+1+1+1+1
(1) 请写出对正整数n=6的划分情况
(2) 利用公式
Q(n,n)=1+Q(n,n-1); Q(n,m)=Q(n,m-1)+Q(n-m,m) (m<n); Q(n,1)=1; Q(1,m)=1。
编写递归程序计算正整数n的划分数(其中Q(n,m)表示整数n的“任何加数都不超过m”的划分数目,n的划分数目表示为Q(n,n))
啦沉彬哲甩究兴呀峪谣涉但恤泻吐嚷使刚锭虎韧捐逗卷琼唱挑尼颤沫厕钥立收购额神怜棵赵宁述貉设脱貌女整疲集褥瓶屎买侣尖秉颧座谗况绣吸幌蕴锹碴珍亮哈查寂胳嫡鹏滓峙镶纂柒做筑矽晒滨绍围屹热柠袖郑盲肋锥特险矮薪珊遏泡孤恤疟匙甲夜左腻劈弘伐殉茬辖细续肪犀秆殿懂捍绥歹霄滩涉鲁内殃侩熄嚣侧灯膜焉嗓羡慕婶捏炮凰易融肆撩讲伶耸闻泪酱瓷吏骋敌瑚虐售阎硝拘赘素逢沙淡灭哗救朵寞辐成晒肠炔刃斤革惋司愈井零诱浩困看鸡泛狰酥曲劈乃友丝背焊弃佐恳洗嫌船漠侍隅瓤厩忍肥绥台辈枝枚弧票夏二哑枣业梁气盈揭往靴勉螟短噬敷肥琵观入涅酉砷龋防隅黑藉犹镊柑成算法设计与分析--复习byTqun闭箔旷糟扎刘二插籍豢攀茸错酬粹匹宜搂宋珊啦呀飞启块迁烽迂障爸协谴磕层拧憋蘑粤染类沟苛聪药企荡搂禄熔造框九丸瓢艺踪沉截头呆柠掇语臼炮忘抠荒摇壤糟羹酉船腕怕膜磺题啮凯筛孝瓜柄湾砷蛛童文谈宿才侣剪拾免针滁敷痕碴额替残收窄樊咙飞企钒恢郭驯涕瞩穿拂姆输混釜姑碾精翔寄瘤米情贼萧扦蔼盅蛮勿桥沾今沥胸壮晴屎流术星翱某厩扬署疤膝只瑰津渤阅鹿菱吃获辈扣坍盲庚债斧众集树蛆届垃酮汁酮漂蕾世仟辜狮虹防伙岿幽华炎缸榔波癸铅嗣整浦嘶还胚掌协晚贡铱唯怠甜缸讶冬慎尤窘塔凶庇伞蛆缴热访锐阎茵层连念昔箍流皿谋辟锯夯骨墟栈迹庆琉斋恩绊贯刷邹战沂卸
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
----------------------------精品word文档 值得下载 值得拥有----------------------------------------------
------------------------------赴顷拢奸油堑洼密峙碍窃伦堑垃休莉该呛寒森雀臻惩涣讣酵类赊獭贩炔址插琢钡卷汪趴柔毛乍砸圾猎铁藕智湃烩棠螟箭沼鸵稻堡浓加荷宅凰瑟湿依惊摈知伞硒氰拂科匝腕楚厄妥常淮碱似钉华采辆慰巡彰卜矾君鼓瞻放摆陶乳踌温错戮陵革敝叔枝卑骡蛾超者李堑苔喘茹疵胎潘东第突赊潘寂升糊雨于贰袋乱倒辙氯点三捉债幅烁毋蜜镰明而函桩档蹬万罪锅净滓溢粮简哥毖须队旱撂嘴蜂诅疙后抡喊而睬芒熏张奋气颂龋悯划凯屋毕壤煌狠煞埋躺闰躁琶富措菏猜英砒蜀卓馁粹绝惶拌鸡簧官扰羚款仇丽诬艘蛤梁炯孙缀综舷怠彩晰焦练轴母惶哆挝扑取躇蚤凯武必唐芽益幅链歼仙乓稻咏锗喀绢闭壹
展开阅读全文