您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 能源与动力工程 > 算法设计与分析.习题课
《算法设计与分析》习题课复杂性分析几种基本结构的算法时间频度for(inti=0;in;i++)S();for(inti=0;in;i++)for(intj=0;jn;j++)S();for(inti=0;in;i++)for(intj=i;jn;j++)S();T(n)=n=O(n)T(n)=n2=O(n2)T(n)=n(n+1)/2=O(n2)递归算法的时间分析代入法迭代法生成函数法a0+a1+a2+..+an=?nkka0101::nnnkknfafaf即记0)(:nnnzfzg定义生成函数1101)(:nnnnnnzfazfazgza则010)()1(nnnnzzfzgaz递归算法的时间分析111)(lim:0axaxaxniin由zznn110azBzAazzzg11)1)(1(1)(aaBaA1,11:由待定系数法可求得递归算法的时间分析000)(11,11:)(limnnnnniinazazzzax得又由0)()(nnnzaBAzg111111aaaaaaaBAfnnnn递归算法的时间分析递归算法的非递归化1,1),1()1,(11),(nmnmfnmfmnnmnmf半数集问题给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下。(1)n∈set(n);(2)在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半;(3)按此规则进行处理,直到不能再添加自然数为止。例如,set(6)={6,16,26,126,36,136}。半数集set(6)中有6个元素。对于给定的自然数n,计算半数集set(n)中的元素个数。半数集问题1054321212111112/1)(1)(niisetnset闭区间覆盖问题设x1,x2,……,xn是实直线上的n个点。用固定长度的闭区间覆盖这n个点,至少需要多少个这样的固定长度闭区间?X1X2X3X4X5X6X7X8X9编辑距离问题设A和B是2个字符串。要用最少的字符操作将字符串A转换为字符串B。这里所说的字符操作包括(1)删除一个字符;(2)插入一个字符;(3)将一个字符改为另一个字符。将字符串A变换为字符串B所用的最少字符操作数称为字符串A到B的编辑距离,记为d(A,B)。试设计一个有效算法,对任给的2个字符串A和B,计算出它们的编辑距离d(A,B)。例如,若A=“abcd”,B=“def”,则编辑距离为4。编辑距离问题设:A=(A1,A2,…,An)B=(B1,B2,…,Bm)若An=Bm,则d(A1..n,B1..m)=d(A1..n-1,B1..m-1)否则,可以通过三种操作将A变换为B:1、变换An为Bm;2、删除An;3、插入An+1=Bm;找钱问题设某币值系统为(c0,c1,..ck),c1,k≥1,要用最少的币数找出n元钱,能否用贪心算法求解?若采用贪心法求解,即先尽量找最大可用面值的货币。设最大可用面值为ct,即:ct≤nct+1,t≤k。设从c0到ct,各种面值的货币各找了{ai}个,即:a0c0+a1c1+..+atct=n,求解目标为∑ai最少。贪心选择性质:所做的贪心选择为:atct≤n(at+1)ct即:a0c0+a1c1+..+at-1ct-1ct最优子结构性质:做出贪心选择atct后,应使剩余的部分a0+a1+..+at-1达到最少。程序存储问题设有n个程序{1,2,…,n}要存放在长度为L的磁带上。程序i存放在磁带上的长度是li,1≤i≤n。程序存储问题要求确定这n个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。删数问题给定n位正整数a,去掉其中任意k≤n个数字后,剩下的数字按原次序排列组成一个新的正整数。对于给定的n位正整数a和正整数k,设计一个算法找出剩下数字组成的新数最小的删数方案。例如,n=178543,k=4,则结果为13。删数问题设X=X1X2..Xi-1XiXi+1..Xn若X1X2..Xi-1Xi且XiXi+1可证明,删除Xi是可得到的最小的数。石子合并问题在一个操场的四周摆放着n堆石子。现要将石子有次序地合并成一堆。规定每次只能选2堆石子合并成新的一堆,合并的费用为新的一堆的石子数。试设计一个算法,计算出将n堆石子合并成一堆的最小总费用。数列极差问题对由N(N2000)个正数组成的一个数列,进行如下操作:每一次删去其中2个数设为a和b,然后在数列中加入一个数a*b+1,如此下去直至只剩下一个数。在所有按这种操作方式最后得到的数中,最大的数记为max,最小的数记为min,则该数列的极差M定义为M=max-min。例如,若数列为(1,2,3),则极差为10-8=2。数字三角形问题给定一个由n行数字组成的数字三角形如下图所示。试设计一个算法,计算出从三角形的顶至底的一条路径,使该路径经过的数字总和最大。738810274445265整数变换问题整数变换问题。关于整数i的变换f和g定义如下:f(i)=3i;g(i)=└i/2┘。试设计一个算法,对于给定的2个整数n和m,用最少的f和g变换次数将n变换为m。例如,可以将整数15用4次变换将它变换为整数4:4=gfgg(15)。整数变换问题15745321221359110631166674054最长递增子序列问题给定正整数序列x1,x2,……,xn。计算其最长递增子序列的长度s。例如,若序列为(3,6,2,5),则s=2。设mi表示以Xi为结尾的最大递增子序列的长度。则:mi=1+max{0,mk|xkxi,1≤k<i}最优服务次序问题设有n个顾客同时等待一项服务。顾客i需要的服务时间为ti,1≤i≤n,应如何安排n个顾客的服务次序才能使平均等待时间达到最小?平均等待时间是n个顾客等待服务时间的总和除以n。最小重量机器设计问题设某一机器由n个部件组成,每一种部件都可以从m个不同的供应商处购得。设计算法,给出总价格不超过c的最小重量机器设计。
本文标题:算法设计与分析.习题课
链接地址:https://www.777doc.com/doc-3976030 .html