算法设计与分析试卷答案
算法设计与分析
1、(1) 证明:O(f)+O(g)=O(f+g)(7分)
(2) 求下列函数的渐近表达式:(6分)
① 3n 2+10n;
② 21+1/n;
2、对于下列各组函数f(n)和g(n),确定f(n)=O(g(n))或f(n)=Ω(g(n))或f(n)=θ(g(n)),并简述理由。
(15分)
(1)
;5log )(;log )(2+==n n g n n f (2)
;)(;log )(2n n g n n f == (3)
;log )(;)(2n n g n n f == 3、试用分治法对数组A[n]实现快速排序。
(13分)
4、试用动态规划算法实现最长公共子序列问题。
(15分)
5、试用贪心算法求解汽车加油问题:已知一辆汽车加满油后可行驶n 公里,而旅途中有若干个加油站。
试设计一个有效算法,指出应在哪些加油站停靠加油,使加油次数最少。
(12分)
6、试用动态规划算法实现下列问题:设A 和B 是两个字符串。
我们要用最少的字符操作,将字符串A 转换为字符串B ,这里所说的字符操作包括:
(1)删除一个字符。
(2)插入一个字符。
(3)将一个字符改为另一个字符。
将字符串A 变换为字符串B 所用的最少字符操作数称为字符串A 到B 的编辑距离,记为d(A,B)。
试设计一个有效算法,对任给的两个字符串A 和B ,计算出它们的编辑距离d(A,B)。
(16分)
7、试用回溯法解决下列整数变换问题:关于整数i 的变换f 和g 定义如下:⎣⎦2/)(;3)(i i g i i f ==。
对于给定的两个整数n 和m ,要求用最少的变换f 和g 变换次数将n 变为m 。
(16分)
1、⑴证明:令F(n)=O(f),则存在自然数n 1、c 1,使得对任意的自然数n ≥n 1,有:F(n)≤c 1f(n)……………………………..(2分) 同理可令G(n)=O(g),则存在自然数n
2、c 2,使得对任意的自然数n ≥n 2,有:G(n)≤c 2g(n)……………………………..(3分)
令c 3=max{c 1,c 2},n 3=max{n 1,n 2},则对所有的n ≥n 3,有: F(n)≤c 1f(n)≤c 3f(n)
G(n)≤c 2g(n)≤c 3g(n)……………………………..(5分) 故有:
O(f)+O(g)=F(n)+G(n)≤c 3f(n)+c 3g(n)=c 3(f(n)+g(n))
因此有:
O(f)+O(g)=O(f+g)……………………………..(7分)
⑵ 解:
① 因为;01033)103(lim 22
2=+-+∞→n n n n n n 由渐近表达式的定义易知:
3n 2是3n 2+10n 的渐近表达式。
……………………………..(3分) ② 因为∞→→+-+n n
n ,012121121,由渐近表达式的定义易知: 21是n
121+的渐近表达式。
……………………………..(6分) 说明:函数T(n)的渐近表达式t(n)定义为:
∞→→-n n T n t n T ,0)()()( 2、解:经分析结论为:
(1)
);5(log log 2+=n n θ………………………….(5分) (2))(log 2n n O =;………………………….(10分)
(3)
)(log 2n n Ω=;………………………….(15分) 3、解:用分治法求解的算法代码如下:
int partition(float A[],int p,int r)
{
int i=p,j=r+1;
float x=a[p];
while(1){
while(a[++i]<x);
while(a[--j]>x);
if(i>=j) break;
a[i ]←→a[j]……………………………..(4分)
};
a[p]=a[j];
a[j]=x;
return j;……………………………..(7分)
}
void Quicksort(float a[],int p,int r)
{
if(p<r){
int q=partition(a,p,r);……………………………..(10分) Quicksort(a,p,q-1);
Quicksort(a,q+1,r);
}
};
Quicksort(a,0,n-1);……………………………..(13分)
4、解:用动态规划算法求解的算法代码如下:
int lcs_len(char* a,char* b,int c[][N])
{
int m=strlen(a),n=strlen(b),i,j;
for(i=0;i<=m;i++)c[i][0]=0;
for(j=1;j<=n;j++)c[0][j]=0;……………………………..(4分)for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
if(a[i-1]==b[j-1])c[i][j]=c[i-1][j-1]+1;
else if(c[i-1][j]>=c[i][j-1])
c[i][j]=c[i-1][j];
elsec[i][j]=c[i][j-1];……………………………..(7分)
return c[m][n];……………………………..(8分)
};
char* build_lcs(char s[],char* a,char* b)
{
int k,i=strlen(a),j=strlen(b),c[N][N];
k=lcs_len(a,b,c);
s[k]=’\0’;
while(k>0){
if(c[i][j]==c[i-1][j])i--;……………………………..(11分)
else if(c[i][j]==c[i][j-1])j--;
else{
s[--k]=a[i-1];
i--,j--;
}
}
return s;……………………………..(15分)
}
5、解:int greedy(vecter<int> x,int n)
{
int sum=0,k=x.size();
for(int j=0;j<k;j++)
if(x[j]>n){
cout<<”Nosolution”<<endl;
return-1;……………………………..(6分)
}
for(int i=0,s=0;i<k;i++){
s+=x[i];
if(s>n){sum++;s=x[i];}……………………………..(9分)}
return sum;……………………………..(12分)
}
6、解:此题用动态规划算法求解:
int dist()
{
int m=a.size();
int n=b.size();
vector<int> d(n+1,0);
for(int i=1;i<=n;i++)d[i]=i;……………………………..(5分)for(i=1;i<=m;i++){
int y=i-1;
for(int j=1;j<=n;j++){
int x=y;
y=d[j];
int z=j>1?d[j-1]:i;……………………………..(10分)
int del=a[i-1]==b[j-1]?0:1;
d[j]=min(x+del,y+1,z+1);……………………………..(13分)}
}
return d[n];……………………………..(16分)
}
7、解:解答如下:
void compute()
{
k=1;
while(!search(1,n)){
k++;
if(k>maxdep)break;
init();
};……………………………..(6分)
if(found)output();……………………………..(9分)else cout<<”NoSolution!”<<endl;
}
bool search(int dep,int n)
{
if(dep>k)return false;……………………………..(11分)for(int i=0;i<2;i++){
int n1=f(n,i);t[dep]=I;……………………………..(13分)if(n1==m||search(dep+1,n1)){
found=true;
out();
return true;
}
return false;……………………………..(16分)
}。
(完整word版)算法设计与分析复习题目及答案(word文档良心出品)
一。
选择题1、二分搜索算法是利用( A )实现的算法。
A、分治策略B、动态规划法C、贪心法D、回溯法2、下列不是动态规划算法基本步骤的是( A )。
A、找出最优解的性质B、构造最优解C、算出最优解D、定义最优解3、最大效益优先是( A )的一搜索方式。
A、分支界限法B、动态规划法C、贪心法D、回溯法4、在下列算法中有时找不到问题解的是( B )。
A、蒙特卡罗算法B、拉斯维加斯算法C、舍伍德算法D、数值概率算法5. 回溯法解旅行售货员问题时的解空间树是( B )。
A、子集树B、排列树C、深度优先生成树D、广度优先生成树6.下列算法中通常以自底向上的方式求解最优解的是( B )。
A、备忘录法B、动态规划法C、贪心法D、回溯法7、衡量一个算法好坏的标准是(C )。
A 运行速度快B 占用空间少C 时间复杂度低D 代码短8、以下不可以使用分治法求解的是(D )。
A 棋盘覆盖问题B 选择问题C 归并排序D 0/1背包问题9. 实现循环赛日程表利用的算法是( A )。
A、分治策略B、动态规划法C、贪心法D、回溯法10、下列随机算法中运行时有时候成功有时候失败的是(C )A 数值概率算法B 舍伍德算法C 拉斯维加斯算法D 蒙特卡罗算法11.下面不是分支界限法搜索方式的是( D )。
A、广度优先B、最小耗费优先C、最大效益优先D、深度优先12.下列算法中通常以深度优先方式系统搜索问题解的是( D )。
A、备忘录法B、动态规划法C、贪心法D、回溯法13.备忘录方法是那种算法的变形。
( B )A、分治法B、动态规划法C、贪心法D、回溯法14.哈弗曼编码的贪心算法所需的计算时间为( B )。
A、O(n2n)B、O(nlogn)C、O(2n)D、O(n)15.分支限界法解最大团问题时,活结点表的组织形式是( B )。
A、最小堆B、最大堆C、栈D、数组16.最长公共子序列算法利用的算法是( B )。
A、分支界限法B、动态规划法C、贪心法D、回溯法17.实现棋盘覆盖算法利用的算法是( A )。
算法设计与分析(A)评分标准和参考答案
(占 1 分) 当调度方案是 2,3,1 时:
(占 1 分)
第
1 页 共
2 页
当调度方案是 3,1,2 时: 机器 1 机器 2 作业 3 2 作业 2 2+3=5 作业 1 5+2=7 完成时间和=5+6+8=19
2+3=5 5+1=6 7+1=8 (占 1 分)
它们所对应的完成时间和分别是 19,18,20,21,19,19; 因此最佳调度方案是 1,3,2; .其完成时间为 18。 (占 2 分)
2. 证明:设 F(N)=O(f)), 根据 O 的定义,存在正常数 C1 和 N1, 使得对所有 N>= N1 有 F(N)<=C1f(N); (占 2 分) 再设 G(N)= O(g), 根据 O 的定义,存在正常数 C2 和 N2, 使得对所有 N>= n2 有 G(N)<= C2f(n); (占 2 分) 令 C3=max{C1,C2},N3=max{N1,N2},h(N)=max{f,g},则对所有的 N>=N3,有:(占 2 分) F(N)<= C1f(N)<= C1h(N)<= C3h (N); 类似地有: G(N)<= C2f(N)<= C2h(N)<= C3h (N); 则: (占 2 分) O(f)+O(g)=F(N)+G(N)<= C3h (N)+ C3h (N) =2 C3h (N)=O(h)=O(max(f,g))
五、綜合题(每小题 12 分,共 24 分)
1.(每小问为 2 分) ①:i<=n ②:0 ③:i<=n-r+1 ④:i+r-1 ⑤:t[i][k]+ t[k+1][j]+w(i-1,k,j) ⑥: t[i][j] 2. 1 1 1 .这三个作业的可能的调度方案总数是:P3 P2 P1 =3*2*1=6; 具体的调度方案是 1,2,3; 1,3,2; 2,1,3; 2,3,1; 3,1,2; 3,2,1; .当调度方案是 1,2,3 时: 机器 1 机器 2 作业 1 2 2+1=3 作业 2 2+3=5 5+1=6 作业 3 5+2=7 7+3=10 完成时间和=3+6+10=19 . 当调度方案是 1,3,2 时: 机器 1 机器 2 作业 1 2 2+1=3 作业 3 2+2=4 4+3=7 作业 2 4+3=7 7+1=8 完成时间和=3+7+8=18 (占 1 分) 当调度方案是 2,1,3 时: 机器 1 机器 2 作业 2 3 3+1=4 作业 1 3+2=5 5+1=6 作业 3 5+2=7 7+3=10 完成时间和=4+6+10=20 机器 1 机器 2 作业 2 3 3+1=4 作业 3 3+2=5 5+3=8 作业 1 5+2=7 8+1=9 完成时间和=4+8+9=21
算法分析与设计试卷(答案)
算法分析与设计试卷(答案)中南大学考试试卷答案(补考)2008 -- 2009学年 2学期时间110分钟算法分析与设计课程 48学时 3学分考试形式:闭卷专业年级:信安0601-0602 总分100分,占总评成绩70 %注:此页不作答题纸,请将答案写在答题纸上一、基本概念题(本大题40分)1、(6分)1)顺序结构将运算步骤的时间累计,简单运算只需要1个单位时间。
(1分)2)选择结构:计算复杂的情况复杂度。
(2分)3)循环结构:复杂度计量=循环着次数*循环体的时间(2分) 4)函数调用:计算函数的执行时间(1分)2、设T(n)=n,根据T(n)= O(f(n))的定义,下列等式是否成立(4分)1)T(n)= O(n2) (√)2)O(n2) = T(n) (×)3)T(n)= O(log n)+ O(n) (√)4)T(n) = O(n) *O(log n) (√)3、与顺序查找算法相比,折半查找算法的时间复杂性有多大程度的降低它是如何提高算法的效率的(6分)顺序查找的时间是O(n) ,折半查找O(log n) 降低了一个数量级(2分)采用分治策略,每一次比较可以排除一半的数据。
(4分)4、简述归并排序算法和快速排序算法的分治方法。
(6分)1)归并排序的分治是将数组从中间分开,分别对前后来那个部分进行排序,将排序后的两个数组合并成整个数组的排序。
这样分治为递归过程,直到一个元素时返回。
2)快速排序的分治是选取分割元素,以分割元素为界,将数组分成两部分,一部分小于分割元素,一部分大于分割元素,分别对两部分排序。
5、一般背包问题的贪心算法可以获得最优解吗物品的选择策略是什么(6分)按照p[i]/w[i]≥p[i+1]/w[i+1]排序,选择当前利润/重量比最大的物品,可以获得最优解,6、Prim算法和Dijkstra算法选择下一个节点的标准分别是什么对于有负边的无向图,Prim算法和Dijkstra算法还能保证获得最优解吗(6分)1)prim算法的选择标准是选择当前与T连结边的代价最小的节点加入。
算法设计与分析试题及答案
1. 按分治策略求解棋盘覆盖问题时,对于如图所示的24×24的特殊棋盘,共需要多少个L 型骨牌;并在棋盘上填写L 型骨牌的覆盖情况。
2. 假设有7个物品,给出重量和价值。
若这些物品均不能被分割,且背包容量M =140,使用回溯方法求解此0-1背包问题。
请画出状态空间搜索树。
3. 假设有7个物品,它们的重量和价值如下表所示。
若这些物品均可以被分割,且背包容量M=140,使用贪心算法求解此背包问题。
请写出求解策略和求解过程。
W (35,30,50,60,40,10,25)p (10,40,30,50,35,40,30)4. 在给出的电路板中,阴影部分是已作了封锁标记的方格,请按照队列式分支限界法在图中确定a 到b 的最短布线方案,要求布线时只能沿直线或直角进行,在图中标出求得最优解时各方格情况。
5. 画出字符表的哈夫曼编码对应的二叉树。
6. 已知1()*()i i k k ij r r A a +=,k =1,2,3,4,5,6,r 1=5,r 2=10,r 3=3,r 4=8,r 5=5,r 6=20,r 7=6,求矩阵链积A 1×A 2×A 3×A 4×A 5×A 6的最佳求积顺序。
7. 给出城市网络图,售货员要从城市1出发,经过所有城市回到城市1,画出该问题的解空间树,描述出用优先队列式分支限界法求解时的搜索情况。
表示出优先队列、当前扩展结点等的变化情况。
8. 依据优先队列式分支限界法,求从s 点到t 点的单源最短路径,画出求得最优解的解空间树。
一、假设有7个物品,它们的重量和价值如下表所示。
若这些物品均不能被分割,且背包容量M=150,使用回溯方法求解此背包问题。
请写出状态空间搜索树(20分)。
答:按照单位效益从大到小依次排列这7个物品为:FBGDECA 。
将它们的序号分别记为1~7。
则可生产如下的状态空间搜索树。
其中各个节点处的限界函数值通过如下方式求得:【排序1分】5x =6x =7x =17分,每个节点1分】a .1501154040305035190.62540-++++⨯=7(1,1,1,1,,0,0)8b. 1501154040305030177.560-++++⨯=7(1,1,1,1,0,,0)12c .4040305010170++++=(1,1,1,1,0,0,1)d. 1501054040303530167.560-++++⨯=3(1,1,1,0,1,,0)4e. 150130404050353017560-++++⨯=1(1,1,0,1,1,,0)3f. 1501304040503510170.7135-++++⨯=4(1,1,0,1,1,0,)7g. 40405030160+++=(1,1,0,1,0,1,0)h. 1501404040353010146.8535-++++⨯=2(1,1,0,0,1,1,)7i.1501254030503530167.560-++++⨯=5(1,0,1,1,1,,0)12 j. 1501454030503530157.560-++++⨯=1(0,1,1,1,1,,0)12在Q 1处获得该问题的最优解为(1,1,1,1,0,0,1),背包效益为170。
(完整word版)计算机算法设计分析试题及答案
算法设计与分析试卷一、填空题(20分,每空2分)1、算法的性质包括输入、输出、___、有限性。
2、动态规划算法的基本思想就将待求问题_____、先求解子问题,然后从这些子问题的解得到原问题的解。
3、设计动态规划算法的4个步骤:(1)找出____,并刻画其结构特征。
(2)_______。
(3)_______。
(4)根据计算最优值得到的信息,_______。
4、流水作业调度问题的johnson算法:(1)令N1=___,N2={i|ai>=bj};(2)将N1中作业依ai的___。
5、对于流水作业高度问题,必存在一个最优调度π,使得作业π(i)和π(i+1)满足Johnson不等式_____。
6、最优二叉搜索树即是___的二叉搜索树。
二、综合题(50分)1、当(a1,a2,a3,a4,a5,a6)=(-2,11,-4,13,-5,-2)时,最大子段和为∑ak(2<=k<=4)____(5分)2、由流水作业调度问题的最优子结构性质可知,T(N,0)=______(5分)3、最大子段和问题的简单算法(10分)int maxsum(int n,int *a,int & bestj){intsum=0;for (int i=1;i<=n;i++)for (int j=i;j<=n;j++)int thissum=0;for(int k=i;k<=j;k++)_____;if(thissum>sum){sum=thissum;______;bestj=j;}}return sum;}4、设计最优二叉搜索树问题的动态规划算法OptimalBinarysearchTree? (15分)Void OptimalBinarysearchTree(int a,int n,int * * m, int * * w) {for(int i=0;i<=n;i++) {w[i+1][i]=a[i]; m[i+1][i]=____;} for(int r=0;r<n;r++)for(int i=1;i<=n-r;i++){int j=i+r;w[i][j]=w[i][j-1]+a[j]+b[j];m[i][j]=______;s[i][j]=i;for(int k=i+1;k<=j;k++){int t=m[i][k-1]+m[k+1][j];if(_____) {m[i][j]=t; s[i][j]=k;}}m[i][j]=t; s[i][j]=k;}}5、设n=4, (a1,a2,a3,a4)=(3,4,8,10), (b1,b2,b3,b4)=(6,2,9,15) 用两种方法求4个作业的最优调度方案并计算其最优值?(15分)三、简答题(30分)1、将所给定序列a[1:n]分为长度相等的两段a[1:n/2]和a[n/2+1:n],分别求出这两段的最大子段和,则a[1:n]的最大子段和有哪三种情形?(10分)答:2、由0——1背包问题的最优子结构性质,可以对m(i,j)建立怎样的递归式? (10分)3、0——1背包求最优值的步骤分为哪几步?(10分)参考答案:填空题:确定性分解成若干个子问题最优解的性质递归地定义最优值以自底向上的方式计算出最优值构造最优解{i|ai<bi} ai的非减序排序;将N2中作业依bi的非增序排序min{bπ(i),aπ(i+1)}≥min{bπ(i+1),aπ(i)}最小平均查找长度综合题:20 min{ai+T(N-{i},bi)}(1=<i<=n) thissum+=a[k] besti=i 0 m[i+1][j] t<m[i][j]法一:min(ai,bj)<=min(aj,bi)因为min(a1,b2)<=min(a2,b1)所以1→2 (先1后2)由min(a1,b3)<=min(a3,b1)得1→3 (先1后3)同理可得:最后为1→3→4→2法二:johnson算法思想N1={1,3,4} N2={2}N¹1={1,3,4} N¹2={2}所以 N¹1→N¹2得:1→3→4→2简答题:1 、(1)a[1:n]的最大子段和与a[1:n/2]的最大子段和相同。
《计算机算法设计与分析》答案
《计算机算法设计与分析》试卷 考试时间120分钟2002年-2003年第二学期学号 姓名 成绩一、阐述题1. 请说明算法的五个基本特性,并进行简要的分析(5分) 答:算法的五个基本特性如下:① 确定性 算法的每一种运算必须要有确切的定义,即每一种运算应该执行何种动作必须是相当清楚的、无二义性的。
② 能行性 一个算法是能行的是指算法中有待实现的运算都是基本的运算,每种运算至少在原理上能由人用纸和笔在有限时间内完成。
③ 输入 一个算法有0个或多个输人,这些输人是在算法开始之前给出的量,它取自特定的对象集合。
④ 输出 一个算法产生一个或多个输出,这些输出是同输人有某种特定关系的量。
⑤ 有穷性 一个算法总是在执行了有穷步的运算之后能够终止,且每一步都可在有穷时间内完成。
这里的有穷的概念不是纯数学的,而是在实际上是合理的,可以接受的。
凡是算法,都必须满足以上五条特性。
只满足前四条特性的一组规则不能称为算法,只能叫做计算过程。
2. 若森林非空,请按照森林和树相互递归的定义,阐述森林的两种遍历的方法。
(10分) 答:森林是由m(m ≥0)棵互不相交的树构成的集合。
对树中的每一个结点而言,其子树的集合即为森林。
所以,森林和树是可以相互递归定义的。
对于一个非空的森林F=(T 1,T 2,…,T m ),因为至少存在一棵树,不妨假设为T 1,则森林F 可以分解成T 1和由T 2,…,T m 构成的森林。
于是,可得到森林的两种遍历算法。
① 先序遍历森林若森林非空,则可按下述规则遍历这个森林: (1) 访问树中第一棵树的根结点;(2) 先序遍历第一棵中根结点的所有子树构成的森林; (3) 先序遍历除去第一棵树外剩下的树构成的森林。
② 中序遍历森林若森林非空,则可按下述规则遍历这个森林:(1) 中序遍历第一棵中根结点的所有子树构成的森林; (2) 访问树中第一棵树的根结点;(3) 中序遍历除去第一棵树外剩下的树构成的森林。
算法设计与分析试卷及答案
湖南科技学院二○年学期期末考试信息与计算科学专业年级《算法设计与分析》试题考试类型:开卷试卷类型:C 卷考试时量:120分钟性的阶为结点的是 指1.试述回溯法的基本思想及用回溯法解题的步骤。
2.有8个作业{1,2,…,8}要在由2台机器M1和M2组成的流水线上完成加工。
每个作业加工的顺序都是先在M1给出一个最优调度方案,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少,并计算所需的最少时间。
答:最优调度方案为所需的最少时间为:_______________________3.根据优先队列式分支限界法,求下图中从v1点到v9点的单源最短路径,请画出求得最优解的解空间树。
要求中间被舍弃的结点用×标记,获得中间解的结点用单圆圈○框起(如),最优解用双圆圈◎框起。
三、算法填空(每空2分,共计10分)设R={r1,r2,...,r n}是要进行排列的n个元素,其中元素r1,r2,...,r n可能相同,试设计一个算法,列出R的所有不同排列,并给出不同排列的总数。
算法如下,填写缺失的语句。
template<typenameType>Swap(R[k],R[i]);}}}四、算法设计(共计15分)设有n个程序{1,2,3...,n}要存放在长度为L的磁带上。
程序i存放在磁带上的长度是Li,1≤i≤n。
程序存储问题要求确定这n个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序,在保证存储最多程序的前提下还要求磁带的利用率达到最大。
(1)给出求解存储最多程序的算法,并证明算法的正确性;(2)给出求解使磁带的利用率达到最大的方案的算法思路。
五、算法设计(共计15分)通过键盘输入一个高精度的正整数n (n 的有效位数≤240),去掉其中任意s 个数字后,剩下的数字按原左右次序将组成一个新的正整数。
对给定的n 和s ,寻找一种方案,使得剩下的数字组成的新最小。
《算法分析与设计》作业答案
《算法分析与设计》作业1、考虑,10≤≤i x 而不是x i ∈{0,1}的连续背包问题。
一种可行的贪婪策略是:按价值密度非递减的顺序检查物品,若剩余容量能容下正在考察的物品,将其装入;否则,往背包内装如此物品的一部分。
(a) 对于n=3,w=[100,10,10],p=[20,15,15],以及c=105,上述装入法获得结果是什么?(b)证明这种贪婪算法总能获得最优解。
(c) 用伪代码描述此算法。
答:(a )利用贪婪算法,按价值密度考察的背包为w2,w3,w1;背包w2和w3重20,还可以容纳85,由于10≤≤i x ,背包w1还可以装入x1=0.85,则背包内物品总价值为15+15+20*0.85=47.(b )假设已按价值密度排好序,考察w1,w2,……,wi ,……,对应的价值为p1,p2,……,pi,……如果装到pi-1再装pi 时,恰好要取xi 个wi 。
(,10≤≤i x ) 因为比它价值密度大的都已装载完,所以此时获得的为最优解。
(c )算法描述如下: template <class T>int ContainerLoading( int x[], T w[], T c, int n ) {int *t = new int[n+1]; IndirectSort(w, t, n); for( int i=1; i<=n; i++) x[i] = 0;for(i=1; i<=n && w[t[i]]<=c; i++){ x[t[i]] = 1; c += w[t[i]]; } delete []t; }2、证明当且仅当二分图没有覆盖时,下述算法找不到覆盖。
m=0; //当前覆盖的大小对于A中的所有i,New[i]=Degree[i]对于B中的所有i,Cov[i]=falsewhile(对于A中的某些i,New[i]>0) {设v是具有最大的New[i]的顶点;C[m++]=v;for(所有邻接于v的顶点j) {If(!Cov[j]) {Cov[j] = true;对于所有邻接于j的顶点,使其New[k]减1}}}if (有些顶点未被覆盖) 失败else 找到一个覆盖2)给出一个具有覆盖的二分图,使得上述算法找不到最小覆盖。
算法分析与设计试题答案
算法分析与设计习题第一章算法引论一、填空题:1、算法运行所需要的计算机资源的量,称为算法复杂性,主要包括时间复杂度和空间复杂度。
2、多项式10()m m A n a n a n a =+++的上界为O(n m )。
3、算法的基本特征:输入、输出、确定性、有限性。
4、如何从两个方面评价一个算法的优劣:时间复杂度、空间复杂度。
5、计算下面算法的时间复杂度记为: O(n 3) 。
for(i=1;i<=n;i++)for(j=1;j<=n;j++){c[i][j]=0;for(k=1;k<=n;k++)c[i][j]= c[i][j]+a[i][k]*b[k][j];}6、描述算法常用的方法:自然语言、伪代码、程序设计语言、流程图、盒图、PAD 图。
7、算法设计的基本要求:正确性 和 可读性。
8、计算下面算法的时间复杂度记为: O(n 2) 。
for (i =1;i<n; i++){ y=y+1;for (j =0;j <=2n ;j++ )x ++;}9、计算机求解问题的步骤:问题分析、数学模型建立、算法设计与选择、算法表示、算法分析、算法实现、程序调试、结果整理文档编制。
10、算法是指解决问题的 方法或过程 。
二、简答题:1、按照时间复杂度从低到高排列:O( 4n 2)、O( logn)、O( 3n )、O( 20n)、O( 2)、O( n 2/3),O( n!)应该排在哪一位?答:O( 2),O( logn),O( n 2/3),O( 20n),O( 4n 2),O( 3n ),O( n!)2、什么是算法?算法的特征有哪些?答:1)算法:指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。
通俗讲,算法:就是解决问题的方法或过程。
2)特征:1)算法有零个或多个输入;2)算法有一个或多个输出; 3)确定性 ; 4)有穷性3、给出算法的定义?何谓算法的复杂性?计算下例在最坏情况下的时间复杂性?for(j=1;j<=n;j++) (1)for(i=1;i<=n;i++) (2) {c[i][j]=0; (3)for(k=1;k<=n;k++) (4)c[i][j]= c[i][j]+a[i][k]*b[k][j]; } (5)答:1)定义:指在解决问题时,按照某种机械步骤一定可以得到问题结果的处理过程。
算法设计与分析_北京航空航天大学中国大学mooc课后章节答案期末考试题库2023年
算法设计与分析_北京航空航天大学中国大学mooc课后章节答案期末考试题库2023年1.对如下所示连通无向图【图片】,其最小生成树的权重为【图片】参考答案:232.对如下所示有向图,从【图片】点开始进行深度优先搜索(DFS),搜索时按照字典序遍历某一节点的相邻节点。
在得到的深度优先搜索树中,包含如下哪些类别的边(多选)【图片】参考答案:树边_前向边_后向边_横向边3.在0-1背包问题中,若背包容量为20,5个物品的体积分别为【图片】,价格分别为【图片】。
则该背包能容纳物品的最大总价格为____参考答案:254.设计动态规划算法的一般步骤为____参考答案:问题结构分析→递推关系建立→自底向上计算→最优方案追踪5.给定两个序列分别为“algorithm”和“glorhythm”。
则以下分别为两序列的最长公共子序列和最长公共子串的选项是____参考答案:gorthm thm6.在最长公共子串问题的递推式中,【图片】表示____参考答案:和中以和结尾的最长公共子串的长度7.在支持插入、删除、替换三种操作的最小编辑距离问题中,用【图片】数组来记录编辑方案。
则【图片】数组中的"L","U","LU"分别代表哪种操作___参考答案:插入删除替换/空操作8.字符串“algorithm”到字符串“altruistic”的最小编辑距离为___参考答案:69.数组【图片】中的逆序对个数为____参考答案:510.在上题中,均不在搜索树中的边有哪些____(多选)参考答案:_11.在扇形图(Fan Graph)【图片】中,其邻接表和结构如下第一张图所示。
从顶点【图片】开始进行广度优先搜索(BFS),搜索时按照邻接表顺序遍历某一节点的相邻节点。
得到搜索树如下第二张图,该搜索树并未画全,应从虚线中选择____补全。
(多选)【图片】【图片】参考答案:①_②12.同上题,在扇形图(Fan Graph)【图片】中,其邻接表和结构如下图所示。
