北航计算机研究生课程-算法设计与分析-HomeWork-1
北航计算机考研参考书

北航计算机考研参考书摘要:1.北航计算机考研的招生专业和方向2.初试科目和复试内容3.参考书目4.考研难度和录取情况5.北航计算机考研与北邮计算机考研的比较正文:对于想要报考北京航空航天大学计算机相关专业的考生来说,了解北航计算机考研的招生专业和方向是十分重要的。
根据相关资料,北航计算机考研的主要专业和方向包括计算机软件与理论、人工智能与普适计算、数据科学与知识工程等。
在初试阶段,考生需要参加的科目有思想政治理论、英语一、数学一和计算机学科专业基础综合。
其中,计算机学科专业基础综合是北航自2021 年起首次实行的考试科目,考生需要对此做好充分的准备。
复试阶段主要包括专业英语、实验部分、面试部分以及计算机笔试,如数据结构和计算机体系结构等。
在准备北航计算机考研的过程中,参考书目是必不可少的。
以下是一些建议的参考书目:《数据结构》严蔚敏著,清华大学出版社;《计算机操作系统(修订版)》汤子瀛著,西安电子科技大学出版社;《计算机组成原理》唐朔飞著,高等教育出版社;《计算机网络(第五版)》谢希仁著,电子工业出版社。
当然,这些参考书目只是建议,具体的复习资料还需要考生根据自己的实际情况进行选择。
在考研难度方面,北航计算机考研具有一定的难度,但难度并不是不可逾越的。
考生需要在英语、数学和专业课等方面进行全面的复习,并在复习过程中不断提高自己的实际能力。
据了解,考研320 分左右的成绩是有可能考上北航计算机专业的,但具体还需要看考生的整体表现和竞争对手的情况。
最后,对于许多考生关心的北航计算机考研与北邮计算机考研的比较,可以从以下几个方面进行考虑。
首先,北航计算机考研更偏重软件方面,而北邮则偏重网络和通信方面。
其次,两个学校在这方面都有国家重点实验室,因此具有较高的研究水平。
最后,北邮的就业前积极准备的氛围较为浓厚,而北航则在就业方面略逊一筹。
计算机学院-北航研究生院-北京航空航天大学

计算机学院计算机科学与技术(0812)博士研究生培养方案一、适用学科计算机科学与技术(0812)二、培养目标1.坚持党的基本路线,热爱祖国,遵纪守法,品行端正,诚实守信,身心健康,具有良好的科研道德和敬业精神。
2.在计算机科学与技术方面具有坚实宽广的理论基础和系统深入的专门知识,全面了解学科发展动向;具有独立从事科学研究的能力;具有良好的综合素质;能够独立地、创造性地从事科学研究工作,或具有主持较大型科研、技术开发项目,或解决经济、社会发展问题的能力;至少能熟练运用一门外国语撰写科技论文和进行国际学术交流。
3.在科学或专门技术上做出创造性的成果。
三、培养方向按计算机科学与技术一级学科统一招生,按计算机系统结构、计算机软件与理论、计算机应用技术、计算机网络与信息安全等培养博士研究生。
学科培养方向包括:1.计算机系统结构:具体研究方向包括高性能计算机体系结构、嵌入式与容错计算技术、网络体系结构、分布式计算机系统、计算机存储技术、并行计算技术、分布式计算技术、新概念计算技术等;2.计算机软件与理论:具体研究方向计算复杂性理论、计算系统建模理论、算法理论、智能计算理论、程序的形式化理论与编程模型、程序变换方法与技术、新型程序设计方法、可计算性理论、海量信息的理论与方法、软件中间件技术等;3.计算机应用技术:具体研究方向数据库应用技术、多媒体技术、数字图像及音视频处理、虚拟现实技术与系统、计算机视觉、模式识别、计算机仿真技术、嵌入式系统应用、物联网应用、云计算应用、服务计算、社会计算、大规模计算机应用工程化等;4.计算机网络与信息安全:具体研究方向计算机网络理论、网络传输技术、网络管理技术、网络计算技术、计算机网络应用技术、计算机安全技术、软件安全技术、网络安全技术、信息对抗技术、内容安全技术、行为安全技术、信息隐藏与检测以及可信计算技术等。
四、培养模式及学习年限本学科博士研究生主要按一级学科培养,鼓励开展国际联合培养,实行导师或联合导师负责制,负责制订研究生个人培养计划、指导科学研究和学位论文。
北航研究生课程_程序语言设计原理教程_第01章

第4页
1 单主机计算
30年大致可分为以下三个时代。
• 程序设计时代 • 结构化程序设计时代 • 软件工程时代
第5页
程序设计时代
• 55-65头十年是单主机计算形成期。此时的硬件是CPU、内、 外存储器、各种外设。软件的操作系统成熟、并有少量的 库函数和系统支持程序。应用方式是编程计算。应用领域 是大型科学计算和大量数据处理。 • 编译理论、技术成熟、大量高级语言涌现。 • 数据结构算法、可计算理论完善。 • 高级程序设计语言的出现实现了系统程序员和应用程序员 的第一次分工。 • 计算机是科学家的工具,开始人工智能研究。
第22页
续
• 96年网络计算机NC(Network Computer)问世,NC机只 有一个简单的操作系统有接各种多媒体的接口,快 CPU,大内存,好显示器。不设硬盘,不用维护、升 级个人拥有的系统软件和应用软件,可节省大量维护 费。 • 客户端的客户程序越来越简单。除了写一个程序头和 程序尾之外,中间嵌入若干对各种服务器的请求,程 序就编写完了。善于将各服务器的各种功能组织到本 专业的应用(即目标系统)上,提出合理解决方案 (Solution)是网络计算时代应用者的基本素质。
续
• 多媒体与网络通信技术结合为新兴领域发展提供可能, 为基于卫星定位系统和地理信息系统的城市交通控制、 汽车驾驶自动化;停机坪调度;交通安全;军事侦察。 • 多媒体与计算机模拟的综合应用是虚拟现实(Virtual Reality)技术。它使人与虚拟事物交互。虚拟大学、 虚拟商场、虚拟银行、虚拟…将从根本上改变人们的 生活工作方式。
第19页
续
• Internet上有几十万个各种各样的服务器。有些服务器只 提供专用的计算,另一些服务器在全网上提供用户使用 网络的服务。 • 万维网WWW是在Internet网上装上了Web服务器,使每 个站点都认识、传递标准化的主页,使信息畅通无阻。 • 客户与服务器之间遵照超文本传输协议(HTTP)传递信 息。用户要查询某个信息或作计算,他向本机的浏览器 (Browser)指定主页(Homepage)的URL地址,向相应 的Web服务器提出请求。HTTP把URL换成所在服务器上 的文件路径名,并按名找到服务器的主页。如果查出该 名是所在服务器上为客户提供的HTML主页,则Web服务 器把该主页传回客户机。用户即可在自己的屏幕上看到 结果。如果按文件路径名查出的是通用网关接口(CGI)文 件。则该文件由Web服务器“执行”。Web服务器将执行 第20页 结果(以HTML格式)传回请求的客户。
北航国家精品课程嵌入式系统ARM_homeowork

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

指令周期:指令执行的时间,包括取指令、
分析指令、执行指令所需的时间。
机器周期:指令周期按功能分成几个不同的
阶段,每个阶段所需的时间,称为一个机器
周期。比如取指周期,取数周期等。
节拍周期:也是时钟周期,微操作执行的时
间。
时钟脉冲信号:计算机系统的基本定时信号,
是其他时序信号的基准
一个指令周期 = N 个机器周期
Memory)
•运算器+控制器=CPU(Central Process Unit)
计算机组成(2)
存储器
保存程序和数据 存储单元(bit, Byte, Word) 地址的概念(每一个字节单元一个唯一的地址) 存储器的工作方式:读、写 组成:存储体+地址缓冲部件+数据缓冲部件+读写控制部件 存储器的层次:Cache + RAM + Disk + Tape
L64852 MBus control
M-S Adapter
SBus
SBus
DMA
SCSI Ethernet
SBus Cards
STDIO
serial kbd mouse audio RTC
Floppy
计算机的工作原理
❖机器指令:计算机硬件可以执行的表示一种基本操作的 二进制代码。
➢指令格式:操作码 + 操作数(操作数地址) ➢操作码:指明指令的操作性质 ➢操作数(地址):指令操作数的位置(或操作数本身)
指令的执行过程:微操作
Q AC Q
Q 微Q操作:计算机可以完成的最基D 本
B的D操作,一条机器指令的执行可以
AND
AC + B
AC
解释为一系列的微操作的执行
A B 操AN作D 性质:对数据进行某种处ALU理
北航研究生数值分析编程大作业1

数值分析大作业一、算法设计方案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. 数据挖掘和机器学习:测试考生对数据挖掘和机器学习的
基本概念、算法和应用等方面的了解。
具体考试科目可能根据不同学校和不同专业的要求有所差异。
考生在复习备考时应结合招生简章和考试大纲进行全面的准备。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、已知下列递推式:
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时成立。
证毕。