北航计算机研究生课程-算法设计与分析-HomeWork-1
- 格式:doc
- 大小:29.50 KB
- 文档页数:3
北航计算机考研参考书摘要:1.北航计算机考研的招生专业和方向2.初试科目和复试内容3.参考书目4.考研难度和录取情况5.北航计算机考研与北邮计算机考研的比较正文:对于想要报考北京航空航天大学计算机相关专业的考生来说,了解北航计算机考研的招生专业和方向是十分重要的。
根据相关资料,北航计算机考研的主要专业和方向包括计算机软件与理论、人工智能与普适计算、数据科学与知识工程等。
在初试阶段,考生需要参加的科目有思想政治理论、英语一、数学一和计算机学科专业基础综合。
其中,计算机学科专业基础综合是北航自2021 年起首次实行的考试科目,考生需要对此做好充分的准备。
复试阶段主要包括专业英语、实验部分、面试部分以及计算机笔试,如数据结构和计算机体系结构等。
在准备北航计算机考研的过程中,参考书目是必不可少的。
以下是一些建议的参考书目:《数据结构》严蔚敏著,清华大学出版社;《计算机操作系统(修订版)》汤子瀛著,西安电子科技大学出版社;《计算机组成原理》唐朔飞著,高等教育出版社;《计算机网络(第五版)》谢希仁著,电子工业出版社。
当然,这些参考书目只是建议,具体的复习资料还需要考生根据自己的实际情况进行选择。
在考研难度方面,北航计算机考研具有一定的难度,但难度并不是不可逾越的。
考生需要在英语、数学和专业课等方面进行全面的复习,并在复习过程中不断提高自己的实际能力。
据了解,考研320 分左右的成绩是有可能考上北航计算机专业的,但具体还需要看考生的整体表现和竞争对手的情况。
最后,对于许多考生关心的北航计算机考研与北邮计算机考研的比较,可以从以下几个方面进行考虑。
首先,北航计算机考研更偏重软件方面,而北邮则偏重网络和通信方面。
其次,两个学校在这方面都有国家重点实验室,因此具有较高的研究水平。
最后,北邮的就业前积极准备的氛围较为浓厚,而北航则在就业方面略逊一筹。
计算机学院计算机科学与技术(0812)博士研究生培养方案一、适用学科计算机科学与技术(0812)二、培养目标1.坚持党的基本路线,热爱祖国,遵纪守法,品行端正,诚实守信,身心健康,具有良好的科研道德和敬业精神。
2.在计算机科学与技术方面具有坚实宽广的理论基础和系统深入的专门知识,全面了解学科发展动向;具有独立从事科学研究的能力;具有良好的综合素质;能够独立地、创造性地从事科学研究工作,或具有主持较大型科研、技术开发项目,或解决经济、社会发展问题的能力;至少能熟练运用一门外国语撰写科技论文和进行国际学术交流。
3.在科学或专门技术上做出创造性的成果。
三、培养方向按计算机科学与技术一级学科统一招生,按计算机系统结构、计算机软件与理论、计算机应用技术、计算机网络与信息安全等培养博士研究生。
学科培养方向包括:1.计算机系统结构:具体研究方向包括高性能计算机体系结构、嵌入式与容错计算技术、网络体系结构、分布式计算机系统、计算机存储技术、并行计算技术、分布式计算技术、新概念计算技术等;2.计算机软件与理论:具体研究方向计算复杂性理论、计算系统建模理论、算法理论、智能计算理论、程序的形式化理论与编程模型、程序变换方法与技术、新型程序设计方法、可计算性理论、海量信息的理论与方法、软件中间件技术等;3.计算机应用技术:具体研究方向数据库应用技术、多媒体技术、数字图像及音视频处理、虚拟现实技术与系统、计算机视觉、模式识别、计算机仿真技术、嵌入式系统应用、物联网应用、云计算应用、服务计算、社会计算、大规模计算机应用工程化等;4.计算机网络与信息安全:具体研究方向计算机网络理论、网络传输技术、网络管理技术、网络计算技术、计算机网络应用技术、计算机安全技术、软件安全技术、网络安全技术、信息对抗技术、内容安全技术、行为安全技术、信息隐藏与检测以及可信计算技术等。
四、培养模式及学习年限本学科博士研究生主要按一级学科培养,鼓励开展国际联合培养,实行导师或联合导师负责制,负责制订研究生个人培养计划、指导科学研究和学位论文。
ARM汇编作业具体要求如下:
1.在Linux下编写汇编程序和C程序,或者是内嵌汇编的C程序;然后编译连接成ARM可运行的二进制文件,最后把该二进制文件下载到目标机(教学试验平台)上运行,查看运行结果是否正确。
2.在C程序main函数中,接收用户输入(用户任意输入9个整数),然后在main中调用使用ARM汇编编写的函数(在该函数中完成对这9个整数的排序功能),然后再在C程序main函数中输出这9个排好顺序的整数。
3.作业的提交:把源程序和ARM二进制文件打包成一个zip文件,把该文件提交到课程ftp网站上的homework_1目录下。
文件的命名规则为:学号_1.zip,例如SY0506101_1.zip。
4.作业请务必在5月1日前提交,切记相互之间不要抄袭;否则一经发现将扣除本次作业的分数。
说明:Linux环境下的交叉编译环境(包含ARM汇编连接工具)已放在课程FTP 网站上,同学们可自由下载。
同学们也可以首先在课程ftp网站上下载ADS集成开发环境,在Windows平台上通过软件仿真调试该程序(此时不需要教学试验平台)。
北航(北京航空航天大学)计算机考研科目包含以下内容,具体要求可能会有一定的变化,建议在报名前查阅北航的招生信息和考试大纲,以获取最新的考试科目和要求。
1.计算机组成原理:涉及计算机硬件系统的结构和功能,包括数字逻辑、处理器设计、存储器层次结构、输入输出系统等。
2.操作系统:重点学习操作系统的基本原理、进程管理、内存管理、文件系统、设备管理、死锁处理等。
3.数据结构与算法:包括常见数据结构(如数组、链表、栈、队列、树、图等)的基本概念、实现方式和常用算法(如排序、查找、图算法等)的设计与分析。
4.计算机网络:涵盖计算机网络的基本概念、协议体系结构、局域网与广域网技术、传输层协议(如TCP和UDP)、网络安全等。
5.数据库系统:学习数据库的基本概念、关系数据库理论、SQL语言、数据库设计与管理、事务处理与并发控制、数据仓库与数据挖掘等。
6.软件工程:重点涉及软件开发过程、需求分析与建模、软件设计原则与方法、软件测试与质量保证、软件项目管理等。
此外,北航计算机考研还可能包括一些选修科目,如人工智能、机器学习、图像处理、编译原理等。
在备考过程中,您可以参考相关教材和资料,系统学习每个科目的基本概念、原理和应用。
数值分析大作业一、算法设计方案1、矩阵初始化矩阵[]501501⨯=ij a A 的下半带宽r=2,上半带宽s=2,设置矩阵[][]5011++s r C ,在矩阵C 中检索矩阵A 中的带内元素ij a 的方法是:j s j i ij c a ,1++-=。
这样所需要的存储单元数大大减少,从而极大提高了运算效率。
2、利用幂法求出5011λλ,幂法迭代格式:0111111nk k k k kk T k k k u R y u u Ay y u ηηβ------⎧∈⎪⎪=⎪=⎨⎪=⎪⎪=⎩非零向量 当1210/-≤-k k βββ时,迭代终止。
首先对于矩阵A 利用幂法迭代求出一个λ,然后求出矩阵B ,其中I A B λ-=(I 为单位矩阵),对矩阵B 进行幂法迭代,求出λ',之后令λλλ+'='',比较的大小与λλ'',大者为501λ,小者为1λ。
3、利用反幂法求出ik s λλ,反幂法迭代格式:0111111nk k k k kk T k k k u R y u Au y y u ηηβ------⎧∈⎪⎪=⎪=⎨⎪=⎪⎪=⎩非零向量 当1210/-≤-k k βββ时,迭代终止,1s k λβ=。
每迭代一次都要求解一次线性方程组1-=k k y Au ,求解过程为:(1)作分解LU A =对于n k ,...,2,1=执行[][]s k n r k k k i c c c c c n s k k k j c cc c k s ks k t k s k r i t t s t i k s k i k s k i js j t k s j r k t t s t k j s j k j s j k <+++=-=++=-=+++----=++-++-++-++----=++-++-++-∑∑);,min(,...,2,1/)(:),min(,...,1,:,1,11),,1max(,1,1,1,11),,1max(,1,1,1(2)求解y Ux b Ly ==,(数组b 先是存放原方程组右端向量,后来存放中间向量y))1,...,2,1(/)(:/:),...,3,2(:,1),min(1.1.11),1max(,1--=-===-=+++-++-+--=++-∑∑n n i c x c b x c b x n i b c b b i s t n s i i t t s t i i i ns n n ti r i t t s t i i i使用反幂法,直接可以求得矩阵按模最小的特征值s λ。
北航计算机研究生考试科目
北航计算机研究生考试科目包括以下几个科目:
1. 数学:包括高等数学和线性代数等数学基础知识。
2. 英语:包括英语阅读、写作、听力和口语等英语能力测试。
3. 数据结构与算法:测试考生对数据结构和算法的理解和应用能力。
4. 操作系统:测试考生对操作系统原理、进程管理、内存管理和文件系统等知识的掌握程度。
5. 计算机网络:测试考生对计算机网络的基本原理、协议和网络安全等方面的理解。
6. 数据库:测试考生对数据库基本概念、SQL语言、数据库
设计和数据处理等知识的掌握程度。
7. 编程语言:测试考生对一种或多种编程语言的掌握程度,如
C、C++、Java等。
8. 计算机组成原理:测试考生对计算机硬件组成和工作原理的了解。
9. 软件工程:测试考生对软件工程的基本概念、软件开发流程和项目管理等知识的理解。
10. 数据挖掘和机器学习:测试考生对数据挖掘和机器学习的
基本概念、算法和应用等方面的了解。
具体考试科目可能根据不同学校和不同专业的要求有所差异。
考生在复习备考时应结合招生简章和考试大纲进行全面的准备。
北航计算机研究生专业课考试大纲
卓越考研
/ 卓而优越则成
一、考试组成
961计算机专业技术基础共包括三门课程的内容:计算机组成原理、操作系统、计算机网络技术,分别占60分,50分、40分。
二、计算机组成原理部分的考试大纲(60分)
(一)指定参考书
1、计算机组成与设计—硬件/软件接口,中文第3版,郑伟民等译,机械工业出版社,2007.4,ISBN 978-7-111-20214-1。
(二)复习内容
1. 理解单处理器计算机系统中各部件的内部工作原理、组成结构以及相互连接方式,具有
完整的计算机系统的整机概念。
2. 理解计算机系统层次化结构概念,熟悉硬件与软件之间的界面,
掌握以MIPS为代表的R
ISC指令集体系结构的基本知识。
3. 能够对有关计算机硬件系统中的理论和实际问题进行计算与分析;能根据指令语义进行
单周期/多周期数据通路及其控制器的简单设计;能对MIPS汇编程序设计语言的相关问题进行分析。
一、计算机系统概述
(一)计算机系统层次结构
1. 计算机系统的基本组成
2. 计算机硬件的基本组成
3. 计算机软件和硬件的关系
4. 计算机的工作过程
(二)计算机性能指标
吞吐量、响应时间、带宽、延迟;CPU时钟周期、主频、CPI、CPU执行时间;MIPS、MFLOPS、GFLOPS、TFLOPS、PFLOPS。
二、数据的表示和运算
(一)数制与编码
1. 进位计数制及其相互转换
2. 真值和机器数
1。
2006-2007学年第二学期《计算机算法设计与分析》试题院系:软件学院专业:软件工程年级:2004级一.简答题(共10分)略二.计算题(35分)1. (6 分)对下列各组函数f(n)和g(n),确定f(n)=O(g(n))或f(n)= Q(g(n))或f(n)=8 (g(n))。
(1)f(n)=3n, g(n)=2n2(2)f(n)=log n + 5, g(n)=log n(3)f(n)=log n, g(n尸J n咨:(1)f(n) = Q(g(n)) (2 分)(2)f(n) = 9(g(n)) (2 分)(3)f(n) = O(g(n)) (2 分)2. (8分)采用动态规划策略,计算a= {5,-37-4,-5,9,-2,10,-3,2}的最大子段和, 并给出这个最大子段和的起始下标和终止下标。
[设数组a中的元素下标从1开始。
]要求给出过程。
答:b[1]=5;b[2]=max{b[1]+a[2] , a[2]}=max{2,-3}=2b[3]=max{b[2]+a[3] , a[3]}=max{9,7}=9b[4]=max{b[3]+a[4] , a[4]}=max{5,-4}=5b[5]=max{b[4]+a[5] , a[5]}=max{0,-5}=0b[6]=max{b[5]+a[6] , a[6]}=max{9,9}=9b[7]=max{b[6]+a[7] , a[7]}=max{7,-2}=7b[8]=max{b[7]+a[8] , a[8]}=max{17,10}=17b[9]=max{b[8]+a[9] , a[9]}=max{14,-3}=14b[10]=max{b[9]+a[10] , a[10]}=max{16,2}=16(上述每两行1分,共5分)最大子段和为17 (1分)(若数组下标从1开始)起始下标:6 (1分),终止下标:8 (1分)(若数组下标从0开始)起始下标:5 ( 0.5分),终止下标:7 (0.5分)3 .(11分)设有3件工作分配给3个人,将工作i分配给第j个人所花的费用为C ij,现将为每一个人都分配1件不同的工作,并使总费用达到最小。
一、已知下列递推式:
C(n) = 1若n =1
= 2C (n/2) + n – 1 若n ≥ 2
请由定理1 导出C(n)的非递归表达式并指出其渐进复杂性。
定理1:设a,c 为非负整数,b,d,x 为非负常数,并对于某个非负整数k, 令n=c k , 则以下递推式
f(n) =d 若 n=1
=af(n/c)+bn x 若 n>=2
的解是
f(n)= bn x log c n + dn x 若 a=c x f(n)= x x x
a x x
n c a bc n c a bc d c ⎪⎪⎭
⎫ ⎝⎛--⎪⎪⎭⎫ ⎝⎛-+log 若 a ≠c x 解:令F(n) = C(n) – 1
则 F(n) = 0 n=1
F(n) = 2C(n/2) + n – 2 n>=2
= 2[F(n/2) + 1] + n – 2
= 2F(n/2) + n
利用定理1,其中:
d=0,a=2,c=2,b=1,x=1,并且a=c x
所以 F(n) = nlog 2n
所以 C(n) = F(n) + 1 = nlog 2n + 1
C(n)的渐进复杂性是O(nlog 2n)
二、由于Prim 算法和Kruskal 算法设计思路的不同,导致了其对不同问题实例的效率对比关系的不同。
请简要论述:
1、如何将两种算法集成,以适应问题的不同实例输入;
2、你如何评价这一集成的意义?
答:
1、Prim 算法基于顶点进行搜索,所以适合顶点少边多的情况。
Kruskal 从边集合中进行搜索,所以适合边少的情况。
根据输入的图中的顶点和边的情况,边少的选用kruskal 算法,顶点少的选用prim 算法
2、没有一个算法是万能的,没有一个算法是对所有情况都适合的。
这一集成体现了针对具体问题选用最适合的方法,即具体问题具体分析的哲学思想。
三、分析以下生成排列算法的正确性和时间效率:
HeapPermute (n )
//实现生成排列的Heap 算法
//输入:一个正正整数n 和一个全局数组A [1..n ]
//输出:A 中元素的全排列
if n = 1
write A
else
for i ←1 to n do
HeapPermute (n -1)
if n is odd
swap A[1]and A[n]
else swap A[i]and A[n]
解:
n=1时,输出a1
n=2时,输出a1a2,a2a1
n=3时,
(1)第一次循环i=1时,HeapPermute(2)将a1a2做完全排列输出,记为
[a1a2]a3,并将A变为a2a1a3,并交换1,3位,得a3a1a2
(2)第二次循环i=2时,HeapPermute(2)输出[a3a1]a2,并将A变为a1a3a2,
交换1,3位,得a2a3a1
(3)第三次循环i=3时,HeapPermute(2)输出[a2a3]a1,并将A变为a3a2a1,
交换1,3位,得a1a2a3,即全部输出完毕后数组A回到初始顺序。
n=4时,
(1)i=1时,HeapPermute(3)输出[a1a2a3]a4,并且a1a2a3顺序不变,交换
1,4位,得a4a2a3a1
(2)i=2时,HeapPermute(3)输出[a4a2a3]a1,并且a4a2a3顺序不变,交换
2,4位,得a4a1a3a2
(3)i=3时,HeapPermute(3)输出[a4a1a3]a2,并且a4a1a3顺序不变,交换
3,4位,得a4a1a2a3
(4)i=4时,HeapPermute(3)输出[a4a1a2]a3,并且a4a1a2顺序不变,交换
4,4位,得a4a1a2a3,即全部输出完毕后数组A循环右移一位。
由以上分析可得出结论:
当n为偶数时,HeapPermute(n)输出全排列后数组元素循环右移一位。
当n为奇数时,HeapPermute(n)输出全排列后数组元素顺序保持不变。
所以由归纳法证明如下:
(1)i=1时,显然成立。
(2)i=k为偶数时,假设输出的是全排列,则i=k+1(奇数)时,k+1次循环中,
每次前k个元素做全排列输出后循环右移一位,所以对换swap A[1]and A[n]可以保证每次将前k个元素中的一个换到k+1的位置,所以k+1次循环后输出的是A[1…k+1]的全排列。
(3)i=k为奇数时,假设输出的是全排列,则i=k+1(偶数)时,k+1次循环中,
每次前k个元素做全排列输出后顺序保持不变,所以对换swap A[i]and A[n]可以保证每次将前k个元素中的一个换到k+1的位置,所以k+1次循环后输出的是A[1…k+1]的全排列。
证毕。
时间复杂度递推公式为T(n) = 1 n=1
= n[ T(n-1)+2 ] n>1
化简得T(n) = n! + O(n n-1)
所以时间复杂度为O(n!) + O(n n-1)
四、对于求n 个实数构成的数组中最小元素的位置问题,写出你设计的具有减治思想算法的伪代码,确定其时间效率,并与该问题的蛮力算法相比较。
解:
(1)算法思想:将n分为[n/2],n-[n/2]([]表示向下取整)两部分,分别找
出其中的最小元及其位置,比较这两个元素的大小,得出总的最小元素的位置。
(2)伪代码:
(x,i) = FindLeastElement(a,b)
//从数组A[a…b]中找出最小元x,及其位置i
//输入:全局实数数组A[1…n],搜索起始位置a,结束位置b
//输出:最小元素x及其位置i
if a==b
return(A[a],a)
else
(x1,i) = FindLeastElement(1,[n/2]);
(x2,j) = FindLeastElement([n/2]+1,n);
if x1<x2
return (x1,i)
else
return (x2,j)
(3)算法复杂度递推公式:F(n) = 1 n=1
= 2F(n/2) n>1
化简:F(n) = 2F(n/2) + 1
= 2[2F(n/22)+1] + 1
= 22F(n/22) + 2 + 1
…
= 2k F(2k/2k) + 1 + 2 + … + 2k-1 ( n=2k)
= 2n-1
所以复杂度为O(2n-1)
蛮力法的复杂度为O(n),所以此方法还没有蛮力法效率高,因为减治后会增加比较次数。
五、请给出约瑟夫斯问题的非递推公式J(n),并证明之。
其中,n 为最初总人数,J(n) 为最后幸存者的最初编号。
解:已知幸存者号码的递推公式:J(1) = 1;
J(2k) = 2J(k) – 1; n=2k
J(2k+1) = 2J(k) + 1; n=2k+1
幸存者号码非递推公式:设n = 2m + b,J(n) = 2*b+1 (0<=b<2m,m>=0)
证明(数学归纳法):
(1)i=1时,m=0,b=0,J(1)=2*b+1=1,成立。
(2)i>1时,
当i为偶数时,设k = i/2时成立,即k = 2m + b,则J(k) = 2b+1,
此时,i = 2k = 2m+1 + 2b
J(i) = J(2k) = 2J(k) – 1 = 2(2b+1) – 1 = 4b + 1 = 2(2b) + 1,
即k=i时成立。
当i为奇数时,设k = (i-1)/2时成立,即k = 2m + b,则J(k) = 2b+1,
此时,i = 2k + 1 = 2m+1 + 2b+1
J(i)= J(2k+1) = 2J(k)+1 = 2(2b+1)+1 = 4b+3 = 2(2b+1)+1,即k=i时成立。
证毕。