北航研究生算法(208精心整理)
北京航空航天大学研究生课程考核与成绩管理办法

北京航空航天大学研究生课程考核与成绩管理办法校研函字〔2020〕19 号第一章总则第一条为进一步规范研究生课程考核与成绩管理,维护课程考核的科学性与成绩的准确性、严肃性,根据《普通高等学校学生管理办法》(教育部令第 41 号)和《北京航空航天大学研究生学籍管理规定》(北航研字〔2019〕14 号)有关规定,制定本办法。
第二条本办法适用于北京航空航天大学各类研究生课程以及各类培养环节。
第二章研究生课程考核方式第三条研究生课程考核分为考试和考查两类。
考核方式包括笔试、口试、课程论文和技能操作等。
基础及学科理论核心课程一般采用笔试考试方式。
第四条研究生课程考核应强调过程考核与结果考核相结合。
过程考核通常由作业、课堂讨论、文献选读报告、实验报告、课程论文与课程学术报告、出勤等组成,在课程考核成绩中所占比例应不少于 30%;任课教师应依据课程教学大纲明确课程考核方式和成绩构成,并在上课第一节课向学生公布。
第五条研究生课程,如有平行班,应当统一考核形式和标准,由不同任课教师共同命题,共同编制考卷,共同评阅试卷。
第六条研究生课程考试一般安排在课程教学结束后进行。
公共基础课程考试安排由研究生院公布,其他课程考试安排由开课学院确定,但须提前将考试安排报研究生院备案。
第三章研究生课程成绩记载第七条研究生在学期间所有选课及课程考核成绩逐一如实记载,并打印在成绩单上。
第八条免修免考课程,其成绩记录为“EX”。
第九条学分认定课程,其成绩记录为“T”。
第十条研究生一经选课,应按要求参加规定的教学活动。
凡未经免修批准,一门课程缺课课时累计达 1/3 者,或缺课程作业(含做实验)超过 1/3 者,取消课程考试资格,该课程成绩记为“F”。
第十一条学生只能获得已选课程的成绩及学分。
选课后在规定时间内未办理退选手续或未办理缓考手续而不参加课程考核,该课程成绩记为“F”。
第十二条学生重修后获得课程成绩,其成绩单应给予“R”标记。
第十三条研究生因转学或转专业,或研究生因退学等情况中止学业,研究生重新参加入学考试、符合录取条件,再次入学的,其在校学习期间所修课程成绩及已获得的学分,有效期为两年,可予以学分认定。
北航研究生数值分析作业第一题

北航研究⽣数值分析作业第⼀题北航研究⽣数值分析作业第⼀题:⼀、算法设计⽅案1.要求计算矩阵的最⼤最⼩特征值,通过幂法求得模最⼤的特征值,进⾏⼀定判断即得所求结果;2.求解与给定数值接近的特征值,可以该数做漂移量,新数组特征值倒数的绝对值满⾜反幂法的要求,故通过反幂法即可求得;3.反幂法计算时需要⽅程求解中间过渡向量,需设计Doolite分解求解;4.|A|=|B||C|,故要求解矩阵的秩,只需将Doolite分解后的U矩阵的对⾓线相乘即为矩阵的Det。
算法编译环境:vlsual c++6.0需要编译函数:幂法,反幂法,Doolite分解及⽅程的求解⼆、源程序如下:#include#include#include#includeint Max(int value1,int value2);int Min(int value1,int value2);void Transform(double A[5][501]);double mifa(double A[5][501]);void daizhuangdoolite(double A[5][501],double x[501],double b[501]); double fanmifa(double A[5][501]); double Det(double A[5][501]);/***定义2个判断⼤⼩的函数,便于以后调⽤***/int Max(int value1,int value2){return((value1>value2)?value1:value2);}int Min(int value1,int value2){return ((value1}/*****************************************//***将矩阵值转存在⼀个数组⾥,节省空间***/void Transform(double A[5][501],double b,double c){int i=0,j=0;A[i][j]=0,A[i][j+1]=0;for(j=2;j<=500;j++)A[i][j]=c;i++;j=0;A[i][j]=0;for(j=1;j<=500;j++)A[i][j]=b;i++;for(j=0;j<=500;j++)A[i][j]=(1.64-0.024*(j+1))*sin(0.2*(j+1))-0.64*exp(0.1/(j+1)); i++;for(j=0;j<=499;j++)A[i][j]=b;A[i][j]=0;i++;for(j=0;j<=498;j++)A[i][j]=c;A[i][j]=0,A[i][j+1]=0;}/***转存结束***///⽤于求解模最⼤的特征值,幂法double mifa(double A[5][501]){int s=2,r=2,m=0,i,j;double b2,b1=0,sum,u[501],y[501];for (i=0;i<=500;i++){u[i] = 1.0;}do{sum=0;if(m!=0)b1=b2;m++;for(i=0;i<=500;i++)sum+=u[i]*u[i];for(i=0;i<=500;i++)y[i]=u[i]/sqrt(sum);for(i=0;i<=500;i++){u[i]=0;for(j=Max(i-r,0);j<=Min(i+s,500);j++)u[i]=u[i]+A[i-j+s][j]*y[j];}b2=0;for(i=0;i<=500;i++)b2=b2+y[i]*u[i];}while(fabs(b2-b1)/fabs(b2)>=exp(-12));return b2;}//带状DOOLITE分解,并且求解出⽅程组的解void daizhuangdoolite(double A[5][501],double x[501],double b[501]) { int i,j,k,t,s=2,r=2;double B[5][501],c[501];for(i=0;i<=4;i++){for(j=0;j<=500;j++)B[i][j]=A[i][j];}for(i=0;i<=500;i++)c[i]=b[i];for(k=0;k<=500;k++){for(j=k;j<=Min(k+s,500);j++){for(t=Max(0,Max(k-r,j-s));t<=k-1;t++)B[k-j+s][j]=B[k-j+s][j]-B[k-t+s][t]*B[t-j+s][j]; }for(i=k+1;i<=Min(k+r,500);i++){for(t=Max(0,Max(i-r,k-s));t<=k-1;t++)B[i-k+s][k]=B[i-k+s][k]-B[i-t+s][t]*B[t-k+s][k]; B[i-k+s][k]=B[i-k+s][k]/B[s][k];}}for(i=1;i<=500;i++)for(t=Max(0,i-r);t<=i-1;t++)c[i]=c[i]-B[i-t+s][t]*c[t];x[500]=c[500]/B[s][500];for(i=499;i>=0;i--){x[i]=c[i];for(t=i+1;t<=Min(i+s,500);t++)x[i]=x[i]-B[i-t+s][t]*x[t];x[i]=x[i]/B[s][i];}}//⽤于求解模最⼤的特征值,反幂法double fanmifa(double A[5][501]){int s=2,r=2,m=0,i;double b2,b1=0,sum=0,u[501],y[501];for (i=0;i<=500;i++){u[i] = 1.0;}do{if(m!=0)b1=b2;m++;sum=0;for(i=0;i<=500;i++)sum+=u[i]*u[i];for(i=0;i<=500;i++)y[i]=u[i]/sqrt(sum);daizhuangdoolite(A,u,y);b2=0;for(i=0;i<=500;i++)b2+=y[i]*u[i];}while(fabs(b2-b1)>=fabs(b1)*exp(-12));return 1/b2;}//⾏列式的LU分解,U的主线乘积即位矩阵的DET double Det(double A[5][501]) {int i,j,k,t,s=2,r=2;for(k=0;k<=500;k++){for(j=k;j<=Min(k+s,500);j++){for(t=Max(0,Max(k-r,j-s));t<=k-1;t++)A[k-j+s][j]=A[k-j+s][j]-A[k-t+s][t]*A[t-j+s][j];}for(i=k+1;i<=Min(k+r,500);i++){for(t=Max(0,Max(i-r,k-s));t<=k-1;t++)A[i-k+s][k]=A[i-k+s][k]-A[i-t+s][t]*A[t-k+s][k];A[i-k+s][k]=A[i-k+s][k]/A[s][k];}}double det=1;for(i=0;i<=500;i++)det*=A[s][i];return det;}void main(){double b=0.16,c=-0.064,p,q;int i,j;double A[5][501];Transform(A,b,c); //进⾏A的赋值cout.precision(12); //定义输出精度double lamda1,lamda501,lamdas;double k=mifa(A);if(k>0) //判断求得最⼤以及最⼩的特征值.如果K>0,则它为最⼤特征值值,//并以它为偏移量再⽤⼀次幂法求得新矩阵最⼤特征值,即为最⼤ //与最⼩的特征值的差{lamda501=k;for(i=0;i<=500;i++)A[2][i]=A[2][i]-k;lamda1=mifa(A)+lamda501;for(i=0;i<=500;i++)A[2][i]=A[2][i]+k;}else //如果K<=0,则它为最⼩特征值值,并以它为偏移量再⽤⼀次幂法//求得新矩阵最⼤特征值,即为最⼤与最⼩的特征值的差{lamda1=k;for(i=0;i<=500;i++)A[2][i]=A[2][i]-k;lamda501=mifa(A)+lamda1;for(i=0;i<=500;i++)A[2][i]=A[2][i]+k;}lamdas=fanmifa(A);FILE *fp=fopen("result.txt","w");fprintf(fp,"λ1=%.12e\n",lamda1);fprintf(fp,"λ501=%.12e\n",lamda501);fprintf(fp,"λs=%.12e\n\n",lamdas);fprintf(fp,"\t要求接近的值\t\t\t实际求得的特征值\n");for(i=1;i<=39;i++) //反幂法求得与给定值接近的特征值{p=lamda1+(i+1)*(lamda501-lamda1)/40;for(j=0;j<=500;j++)A[2][j]=A[2][j]-p;q=fanmifa(A)+p;for(j=0;j<=500;j++)A[2][j]=A[2][j]+p;fprintf(fp,"µ%d: %.12e λi%d: %.12e\n",i,p,i,q);}double cond=fabs(mifa(A)/fanmifa(A));double det=Det(A);fprintf(fp,"\ncond(A)=%.12e\n",cond);fprintf(fp,"\ndetA=%.12e\n",det);}三、程序运⾏结果λ1=-1.069936345952e+001λ501=9.722283648681e+000λs=-5.557989086521e-003要求接近的值实际求得的特征值µ1: -9.678281104107e+000 λi1: -9.585702058251e+000µ2: -9.167739926402e+000 λi2: -9.172672423948e+000µ3: -8.657198748697e+000 λi3: -8.652284007885e+000µ4: -8.146657570993e+000 λi4: -8.0934********e+000µ5: -7.636116393288e+000 λi5: -7.659405420574e+000µ6: -7.125575215583e+000 λi6: -7.119684646576e+000µ7: -6.615034037878e+000 λi7: -6.611764337314e+000µ8: -6.104492860173e+000 λi8: -6.0661********e+000µ9: -5.593951682468e+000 λi9: -5.585101045269e+000µ10: -5.0834********e+000 λi10: -5.114083539196e+000µ11: -4.572869327058e+000 λi11: -4.578872177367e+000µ12: -4.062328149353e+000 λi12: -4.096473385708e+000µ13: -3.551786971648e+000 λi13: -3.554211216942e+000µ14: -3.0412********e+000 λi14: -3.0410********e+000µ15: -2.530704616238e+000 λi15: -2.533970334136e+000µ16: -2.020*********e+000 λi16: -2.003230401311e+000µ17: -1.509622260828e+000 λi17: -1.503557606947e+000µ18: -9.990810831232e-001 λi18: -9.935585987809e-001µ19: -4.885399054182e-001 λi19: -4.870426734583e-001µ20: 2.200127228676e-002 λi20: 2.231736249587e-002µ21: 5.325424499917e-001 λi21: 5.324174742068e-001µ22: 1.043083627697e+000 λi22: 1.052898964020e+000µ23: 1.553624805402e+000 λi23: 1.589445977158e+000µ24: 2.064165983107e+000 λi24: 2.060330427561e+000µ25: 2.574707160812e+000 λi25: 2.558075576223e+000µ26: 3.0852********e+000 λi26: 3.080240508465e+000µ27: 3.595789516221e+000 λi27: 3.613620874136e+000µ28: 4.106330693926e+000 λi28: 4.0913********e+000µ29: 4.616871871631e+000 λi29: 4.603035354280e+000µ30: 5.127413049336e+000 λi30: 5.132924284378e+000µ31: 5.637954227041e+000 λi31: 5.594906275501e+000µ32: 6.148495404746e+000 λi32: 6.080933498348e+000µ33: 6.659036582451e+000 λi33: 6.680354121496e+000µ34: 7.169577760156e+000 λi34: 7.293878467852e+000µ35: 7.680118937861e+000 λi35: 7.717111851857e+000µ36: 8.190660115566e+000 λi36: 8.225220016407e+000µ37: 8.701201293271e+000 λi37: 8.648665837870e+000µ38: 9.211742470976e+000 λi38: 9.254200347303e+000µ39: 9.722283648681e+000 λi39: 9.724634099672e+000cond(A)=1.925042185755e+003detA=2.772786141752e+118四、分析如果初始向量选择不当,将导致迭代中X1的系数等于零.但是,由于舍⼊误差的影响,经若⼲步迭代后,.按照基向量展开时,x1的系数可能不等于零。
北航计算机研究生课程算法设计及解析总结

一、解:第 k 月的需求量 Nk(k=1,2,3,4)状量 Xk:第 k 月初的存量, X1=X5=0,0≤Xk≤ Nk+⋯+N4决策量 Uk:第 k 月的生量, max{0, Nk-Xk} ≤ Uk≤min{6 ,Nk+⋯+N4 - Xk}状移方程: X = Uk + Xk – Nkk+1第 k 月的成本 Vk = *(Xk - Nk) Uk=03 + Uk + *(Uk + Xk - Nk) Uk ≠ 0F k(Xk) 是由第 k 月初的存量 Xk 开始到第 4 月份束段的最成本F k(Xk) = min{Vk + F k+1(X k+1 )}1≤k≤4= min{ 3 + Uk + *(Uk + Xk - Nk) + F k+1(Uk + Xk - Nk) }Uk≠0min{ *(Xk - Nk) + F k+1(Xk - Nk) }Uk=0F5(X5)=0四个月内的最成本F1 (X1)=F 1(0)算步以下:(1) k=40≤X4≤4,max{0,4 - X4}≤U4≤min{6,4-X4}X4 U4 X5 V4 F5(X5) V4 + F5(X5)0 4 0 7 0 7=F4(0)1 3 0 6 0 6=F4(1)2 2 0 5 0 5=F (2)43 1 04 0 4=F4(3)4 0 0 0 0 0=F4(4)即于状 X4 的每个取,都有唯一确定的决策量U4 使得 F4(X4) 最(2) k=30≤X3≤6,max{0,2 - X3} ≤U3≤min{6 , 6-X3}X3 U3 X4 V3 F4(X4) V3 + F4(X4) 0 2 0 5 7 123 1 64 2 85 135 3 46 4 11 0 11=F3(0)1 1 0 4 7 112 1 63 2 7 5 124 3 42 5 4 10 0 10=F3(1) 0 0 0 7 7=F (2)31 1 62 2 6 5 113 3 43 4 4 9 0 90 1 6 =F (3)31 2 5 5 102 3 44 3 4 8 0 80 2 1 5 6=F (4)31 3 42 4 7 0 75 0 3 4 =F3 (5)1 4 6 0 66 0 4 3 0 2=F3(6)(3) k=2 时0≤X2≤9,max{0,3 - X2}≤U2≤min{6,9-X2}X2 U2 X3 V2 F3(X3) V2 + F 3(X3) 0 3 0 6 11 174 1 105 2 9 7 16=F (0)26 3 171 2 0 5 11 163 1 104 2 8 7 15=F2(1)5 3 166 4 11 6 172 1 0 4 11 152 1 103 2 7 7 14=F (2)24 3 155 4 106 166 5 173 0 0 0 11 11=F (3)21 1 102 2 6 7 133 3 144 4 9 6 155 5 166 6 12 2 144 0 1 10 =F (4)21 2 5 7 132 3 133 4 8 6 144 5 155 6 11 2 135 0 2 1 7 8=F (5)21 3 122 4 7 6 133 5 144 6 10 2 126 0 3 8=F (6)21 4 6 6 122 5 133 6 9 2 117 0 4 2 6 8=F (7)21 5 122 6 8 2 108 0 5 8=F2(8)9 1 6 7 2 90 6 3 2 5=F (9)2(4) k=1X1=0,max{0,2} ≤U1≤min{6 , 11}X1 U1 X2 V1 F2(X2) V1 + F2(X2) 0 2 0 5 16 213 1 154 2 8 14 225 3 11 =F1 (0)6 4 11由以上算可得, 4 个月的最成本 F (0) = ( 千元 )1从 k=1 回溯,可得最果中各段的状量Xk 和决策量 Uk 以下表:月份 k 量 Uk 月初存量 Xk 需求量 Nk 每个月成本Vk1 5 0 22 03 3 03 6 0 2 114 0 4 4 0二、解:1、变量设定段 k:已遍 k 个点, k=1,2 ⋯ 6,7 。
北航GPA算法

1、GPA算法网上流传着各种各样的算法,但是需要强调的是,美国人知道中国的大部分学校不用GPA,因此相当多的学校在网申系统里明确指出,不允许将自己的成绩换算成美国的GPA,比如Caltech,Princeton,Stanford等,这一栏留着不填即可。
有的学校则要求按照我们的评定成绩规则填写,北航是用百分制的平均分,那么我们可以填写在保研是用的大学前三年的必修课平均成绩,到时候教务会算好。
还有很多的学校没做要求,就按照北航的GPA算法计算。
其实自己填写的GPA只是一个参考,可以写在简历里辅助申请,对方学校会按照他们的标准重新计算。
可能具体的教授还会拿出你的某些重要的课程评估你的GPA,因此其实研究哪种算法算的更高没有意义,之所以这么说还有一点原因就是北航的学生在算GPA时必须严格按照自己学校的GPA算法计算。
2、北航的GPA算法在开成绩单时,学校不给算GPA,但是在成绩单上有GPA的算法,那么在计算GPA是就应该按照这个算法来计算,不可以采用其他的算法。
当然也没规定一定严格按照这个算法,但是既然写在了官方的成绩单上,就应该这么算,要不然会有作弊之嫌。
2.1、具体算法如下:85~100/A:4;70~84/B:3;60~69/C:2;不及格/F:0;按照通过与不通过评分的,算法如下:通过/P: 3.3;不通过/F:0;例如,有三门课,学分分别为1、2、3,得分分别为86、76和通过,那么这三门课的GPA 就是(4×1+3×2+3.3×3)/(1+2+3)=3.32总体来讲,北航的GPA算法还是很有优势的。
2.2、计算GPA的课程范围:全部课程,包括所有的必修,任何形式的选修,只要是出现在成绩单上的都要算,大学前三年学过的所有课程都会出现在成绩单上。
不要试图去修改成绩,北航也不允许去掉更不允许修改成绩。
有的时候自己可以算一个专业课GPA,放到简历里,自己挑出专业课计算就行,如何定义专业课就看你自己了。
北航gpa计算公式

北航gpa计算公式
北航GPA计算公式
GPA是Grade Point Average的缩写,是一个评估学生学术表现的标准。
在国内,GPA的计算方式有所不同,而北航的GPA计算公式也有所不同。
首先,北航的GPA计算公式是基于学分制的,即学生的GPA评分是根据其所修课程的学分来计算的。
例如,学生修满了60学分的课程,每门课程的学分数不同,那么学生的GPA评分也会不同。
其次,在北航的GPA计算公式中,有六种不同的成绩等级,分别是A,B,C,D,E和F,每个等级都有一个分数,A等级最高,F 等级最低。
具体而言,A等级的分数为4.0,B等级的分数为3.0,C 等级的分数为2.0,D等级的分数为1.0,E等级的分数为0.5,F等级的分数为0.0。
最后,在北航的GPA计算公式中,学生的GPA评分是根据其所修课程的学分和成绩等级计算得出的,具体计算方法是将学生所修课程的学分和成绩等级相乘,再将所有乘积相加,最后再除以总学分,就得出学生的GPA评分。
例如,一名学生修满了60学分的课程,其中有20门A等级的课程,20门B等级的课程,20门C等级的课程,那么他的GPA评分就是(20*4.0+20*3.0+20*2.0)/60=3.0。
从上面可以看出,北航的GPA计算公式是相对简单的,但是也有一定的复杂性,所以学生在学习的过程中要注意,及时掌握自己的学习情况,提高自己的GPA成绩。
北航全日制工程硕士研究生培养方案

北航全日制工程硕士研究生培养方案
北京航空航天大学全日制工程硕士研究生培养方案(2024年本科生
工程硕士)
一、学制要求:
1.研究生须在正常学制内完成国家规定的学位课程学习,本科在读
学生要求修满2年学制,硕士研究生学制为3年(3年内可获取学位)。
2.硕士研究生须按照学校学位课程领域规定,完成学位论文规定的
内容,并经答辩答辩小组认可,方可毕业获得硕士学位。
二、修读学位课程:
1.本科在读学生:需要在正常学制3年内修满32学分,其中,专业
硕士课程21学分,毕业选修课5学分,实践教育部分6学分。
2.硕士研究生:需要在正常学制内完成26学分,其中,专业硕士课
程15学分,毕业选修课7学分,学术英语和实践教育部分4学分。
三、学位论文答辩:
所有的学位论文答辩必须在学校安排的时间内完成,答辩答辩小组由
系主任和相关专家组成,经答辩答辩小组认可,方可毕业获得硕士学位。
四、实践教育:
根据学校实践教育规定,研究生须在学校安排的实践教育时间内完成,实践教育内容包括实验室训练、技术练习、科学研究与实施计划、社会调
查与研究、科研管理等。
五、奖学金:
研究生可根据学校的规定。
北航研究生学分新政

北航研究生学分新政近年来,我国高等教育改革持续推进,各高校纷纷出台新政,旨在提高研究生培养质量。
北京航空航天大学(简称“北航”)作为国内一流学府,也在不断完善研究生教育管理制度。
本文将为您详细介绍北航研究生学分新政的相关内容。
一、北航研究生学分新政背景随着社会发展和科技进步,对高层次人才的需求日益增长。
为适应这一趋势,我国高等教育逐渐从规模扩张转向内涵发展。
北航作为国内知名高校,积极贯彻落实国家教育政策,以培养具有创新能力的高素质研究生为目标,不断优化培养方案和管理制度。
研究生学分新政便是其中之一。
二、北航研究生学分新政主要内容1.学分要求根据北航研究生学分新政,研究生在规定的学习年限内,需修满一定的学分。
学分分为必修课学分、选修课学分和实践环节学分。
不同专业、不同层次的研究生学分要求有所不同,具体要求可参考各学院发布的培养方案。
2.学分认定北航研究生学分认定遵循以下原则:(1)课程成绩合格,方可获得学分;(2)课程学分可相互认定,但认定课程需满足一定条件,如课程性质、学分、学时等;(3)研究生在学期间所获得的学分,有效期为5年。
3.学分转换北航研究生学分转换遵循以下规定:(1)研究生在国内外高校修读的课程,可申请学分转换;(2)学分转换需提交相关材料,经学院审核、学校批准后,方可认定;(3)转换学分不得超过规定学分的三分之一。
4.学分替代北航研究生学分替代遵循以下规定:(1)研究生在学期间,可通过参加科研项目、学术活动等途径,申请学分替代;(2)学分替代需提交申请,经学院审核、学校批准后,方可认定;(3)替代学分不得超过规定学分的十分之一。
三、北航研究生学分新政实施效果北航研究生学分新政的实施,有助于提高研究生的学术素养和实践能力,促进研究生教育的内涵发展。
同时,学分新政也为研究生提供了更多自主选择的空间,使研究生教育更加符合个性化、多样化的需求。
总结:北航研究生学分新政旨在优化研究生培养体系,提高研究生培养质量。
最新北航研究生算法(精心整理)

一:判断题1、一个正确的算法,对于每个合法输入,都会在有限的时间内输出一个满足要求的结果。
(对)2、NP完全问题比其他所有NP问题都要难。
(错)3、回溯法用深度优先法或广度优先法搜索状态空间树。
(错,仅深度优先)4、在动态规划中,各个阶段所确定的策略就构成一个策略序列,通常称为一个决策。
(错)5、P类和NP类问题的关系用P⊂NP来表示是错误的。
(错)6、若近似算法A求解某极小化问题一实例的解为Sa,且已知该问题的最优解为Sa/3,则该近似算法的性能比为3。
(错)7、通常来说,算法的最坏情况的时间复杂行比平均情况的时间复杂性容易计算。
(对)8、若P2多项式时间转化为(polynomial transforms to)P1,则P2至少与P1一样难。
(错)9、快速排序算法的平均时间复杂度是O(nlogn),使用随机化快速排序算法可以将平均时间复杂度降得更低。
(错)10、基于比较的寻找数组A[1,…,n]中最大元素的问题下届是Ω(n/3)。
(错)11、O(f(n))+O(g(n))=O(min{f(n),g(n)})(错)12、若f(n)=Ω(g(n)),g(n)=Ω(h(n)),则f(n)=Ω(h(n))(对)13、若f(n)=O(g(n)),则g(n)=Ω(f(n))(对)14、贪婪技术所做的每一步选择所产生的部分解,不一定是可行性的。
(错)15、LasVegas算法只要给出解就是正确的。
(对)16、一个完全多项式近似方案是一个近似方案{Aε},其中每一个算法Aε在输入实例I的规模的多项式时间内运行。
(错)二:简答1、二叉查找树属于减治策略的三个变种中的哪一个的应用?什么情况下二叉查找树表现出最差的效率?此时的查找和插入算法的复杂性如何?答:减治策略有3个主要的变种,包括减常量、减常数因子和减可变规模。
(1) 二叉查找树属于减可变规模变种的应用。
(2) 当先后插入的关键字有序时,构成的二叉查找树蜕变为单支树,树的深度等于n,此时二叉查找树表现出最差的效率,(3) 查找和插入算法的时间效率都属于Θ(n)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一:判断题1、一个正确的算法,对于每个合法输入,都会在有限的时间内输出一个满足要求的结果。
(对)2、NP完全问题比其他所有NP问题都要难。
(错)3、回溯法用深度优先法或广度优先法搜索状态空间树。
(错,仅深度优先)4、在动态规划中,各个阶段所确定的策略就构成一个策略序列,通常称为一个决策。
(错)5、P类和NP类问题的关系用P⊂NP来表示是错误的。
(错)6、若近似算法A求解某极小化问题一实例的解为Sa,且已知该问题的最优解为Sa/3,则该近似算法的性能比为3。
(错)7、通常来说,算法的最坏情况的时间复杂行比平均情况的时间复杂性容易计算。
(对)8、若P2多项式时间转化为(polynomial transforms to)P1,则P2至少与P1一样难。
(错)9、快速排序算法的平均时间复杂度是O(nlogn),使用随机化快速排序算法可以将平均时间复杂度降得更低。
(错)10、基于比较的寻找数组A[1,…,n]中最大元素的问题下届是Ω(n/3)。
(错)11、O(f(n))+O(g(n))=O(min{f(n),g(n)})(错)12、若f(n)=Ω(g(n)),g(n)=Ω(h(n)),则f(n)=Ω(h(n))(对)13、若f(n)=O(g(n)),则g(n)=Ω(f(n))(对)14、贪婪技术所做的每一步选择所产生的部分解,不一定是可行性的。
(错)15、LasVegas算法只要给出解就是正确的。
(对)16、一个完全多项式近似方案是一个近似方案{Aε},其中每一个算法Aε在输入实例I的规模的多项式时间内运行。
(错)二:简答1、二叉查找树属于减治策略的三个变种中的哪一个的应用?什么情况下二叉查找树表现出最差的效率?此时的查找和插入算法的复杂性如何?答:减治策略有3个主要的变种,包括减常量、减常数因子和减可变规模。
(1) 二叉查找树属于减可变规模变种的应用。
(2) 当先后插入的关键字有序时,构成的二叉查找树蜕变为单支树,树的深度等于n,此时二叉查找树表现出最差的效率,(3) 查找和插入算法的时间效率都属于Θ(n)。
2、何谓伪多项式算法?如何将一Monte Carlo算法转化为Las Vegas算法?答:若一个数值算法的时间复杂度可以表示为输入数值N的多项式,但其运行时间与输入数值N的二进制位数呈指数增长关系,则称其时间复杂度为伪多项式时间。
Las Vegas算法不会得到不正确的解。
一旦用拉斯维加斯算法找到一个解,这个解就一定是正确解。
但有时用拉斯维加斯算法找不到解。
Monte Carlo算法每次都能得到问题的解,但不保证所得解的准确性转化:可以在Monte Carlo算法给出的解上加一个验证算法,如果正确就得到解,如果错误就不能生成问题的解,这样Monte Carlo算法便转化为了Las Vegas算法。
3、构造AVL树和2-3树的主要目的是什么?它们各自有什么样的查找和插入的效率?答:(1)当先后插入的关键字有序时,构成的二叉查找树蜕变为单支树,树的深度等于n,此时二叉查找树表现出最差的效率,为了解决这一问题,可以构造AVL树或2-3树,使树的深度减小。
一棵AVL树要求它的每个节点的左右子树的高度差不能超过1。
2-3树和2-3-4树允许一棵查找树的单个节点不止包含一个元素。
(2) AVL树在最差情况下,查找和插入操作的效率属于Θ(lgn)。
2-3树无论在最差还是平均情况下,查找和插入的效率都属于Θ(log n)。
4、写出0/1背包问题的一个多项式等价(Polynomial Equivalent)的判定问题,并说明为什么它们是多项式等价的。
答:0/1背包问题:从M件物品中,取出若干件放在空间为W的背包里,给出一个能获得最大价值的方案。
每件物品的体积为W1,W2……Wn,与之相对应的价值为P1,P2……Pn。
+判定问题I:从M件物品中,取出若干件放在空间为W的背包里,是否存在一个方案,所获价值≥P*?。
每件物品的体积为W1,W2……Wn,与之相对应的价值为P1,P2……Pn。
若判定问题I存在多项式时间的解法,则反复调用该算法就可以在多项式时间内解决0/1背包的优化问题。
因而这个判定问题与原问题多项式等价。
5、下面问题是否属于NP问题?为什么?问题表述:给定图中的两个点、,整数和,图中每条边的长度及便利这条边的时间,问图中是否存在一条由到的路径,使得其长度大于,且遍历时间小于?答:这个问题属于NP问题。
因为若给出该问题的一个解,可以在多项式时间内检验这个解的正确性。
如给出一条由p到q的路径,可以在多项式时间内计算出它的长度及遍历时间,然后分别与C和t进行比较,从而可以判断这个解的对错。
分治题1.写出一个求解下列问题的分治算法,推导其时间复杂性并与蛮力法相比较。
给定互不相等的n个数的一个序列,若其中某两个数和的关系为:且,则称和是逆序的。
要求计算该序列中的逆序个数,即具有逆序关系的元素对的总数目。
解:/** *求解n个数的一个序列,具有逆序关系的元素对的总数目*/count = 0; //逆序元素对的全局计数变量mergeInvertedPairs(A,low,mid,high) {i = low;j = mid+1;k = low;tmp[n]; //用于归并排序的辅助数组while i <= mid && j <= high {if (A[i] > A[j]) {tmp[k] = A[j++];count += (mid-i+1); //相比归并排序,就多了这一条语句} else {tmp[k] = A[i++];}k++;}while i <= mid {tmp[k++] = A[i++];}while j <= high {tmp[k++] = A[j++];}for (j = low; j <= high; j++) {A[j] = tmp[j];}}findInvertedPairs(A[], low, high) {if (low < high) {mid = (low+high) / 2;findInvertedPairs(A,low,mid);findInvertedPairs(A,mid+1,high);mergeInvertedPairs(A,low,mid,high);}算法思路:以归并排序为基础,在两两集合合并的时候如果前一个集合的元素a[i]>a[j],那么说明需要调整次序,逆序数num=num+mid-i。
时间复杂度的迭代公式为11;(n)2(n/2)(n)n1;nTT O=⎧=⎨+>⎩因此算法的时间复杂度为T(n)=O(nlogn);蛮力法的时间复杂度为O(n2),当n数目较大时,分治法计算规模远小于蛮力法。
2.为一个整数序列,中的整数如果在中出现次数多余,那么称为多数元素。
例如,在序列中3是多数元素,因为出现了4次,大于。
求A的多数元素问题的蛮力算法复杂性如何?设计一个具有变治思想的算法,提高蛮力算法的效率,写出伪代码并分析其事件复杂性。
2. num <- src[0];count <-0;for i <-0 to n-1do{if(num == src[i]){count++;}else{count--;if(count <0){num <- src[i];count = 0;}}}采用减治的思想每一个减去一个元素,时间复杂度为O(n),蛮力法的时间复杂度为O(n2)。
动态规划题1.已知:对每个月来讲,生产一批产品的固定成本费为3(千元),若不生成,则为零。
每生产单位产品的成本费为1(千元)。
同时,在任何一个月内,生产能力所允许的最大生产批量为不超过6个单位。
又知:每单位产品的库存费用为每月0.5(千元),同时要求在第一个月开始之初,及在第四个月末,均无产品库存。
问:在满足上述条件下,该厂应如何安排各个时期的生产与库存,使所花的总成本费用最低?写出你所设的状态变量、决策变量、状态转移方程与递推关系式,和手工求解的详细步骤及结果。
解:设阶段序数k表示月份,状态变量x k为第k个月初拥有的单位产品数量,亦为第k-1月末时的单位产品数量,决策变量u k为第k个月生产的单位产品数量,c k为第k月份需要的产品数量,这里x k和u k均取离散变量。
状态转移方程为: , k =1,2,3,4; 且x1=0。
k段允许决策集合为: k = 1,2,3;当k=4时,。
设为第k月的成本费,单位为(千元),则,故指标函数为令表示为由出发采用最优生产方案到第4个月结束这段期间的产品成本。
根据最优化原理,则有递推公式:其中:逆序计算的详细步骤如下:(1)当k=4时,(2)当k=3时,因为,且所以有:当此时在处取得最小值。
当,此时在处取得最小值。
当,此时在处取得最小值。
当,此时,在处取得最小值。
当,此时,在处取得最小值。
当,此时,在处取得最小值。
当,此时,在处取得最小值。
(3)当k=2时,因为,且所以有:当时,,在处取得最小值。
当时,,且在处取得最小值。
当时,,在处取得最小值。
当时,,且在处取得最小值。
当时,,且在处取得最小值。
当时,,且在处取得最小值。
当时,,且在处取得最小值。
(4)当k=1时,因为,所以有:当,,且在处取得最小值。
综上所述,最优的库存方案为:第一月生产5单位产品,第二月和第四月不生产,第三月生产6单位产品。
2.用动态规划方法手工求解以下问题有8万元的投资可以投给3个过目,每个项目在不同筒子数额下(以万元为单位)的利润如下表请安排投资计划,使总的利润最大。
写出你所设的状态变量、决策变量、状态转移方程与递推关系式和手工求解的详细步骤及结构。
解:状态变量:x k 表示留给项目k..n的投资额,其中n为项目总个数,k=1..n.决策变量:u k 表示投给项目k的投资额.允许决策集合:状态转移方程:递推关系式:其中,表示项目k的投资额为u k时的盈利.针对本题,n = 3,x k最大取8手工详解过程:1. 初始化k = 32. k = 23. k = 1最终结果:给项目1投资4万元,项目2投资4万元,项目3不投资,将获得最大利润140万元.线路题的某种深搜解法:1)可以根据线路(l1,l2,...,lm)的取舍构建一棵m层二叉搜索树。
第i层的所有左分支表示铺设线路li,右分支则表示不铺设。
如果存在可行解,遍历此二叉搜索树即可找到最优解。
2)前进:当前节点未被剪枝并且仍有子节点即可继续前进。
分支:先遍历左分支,后遍历右分支。
回溯:左右分支都被遍历时返回父节点。
剪枝:剪枝条件如下:1。
有环路2。
当前地井数 + 地井数下界 > UMAX3。