文章目录

  • 前言
  • 一、历年考题
    • 1.1 判断题
    • 1.2 单选题
    • 1.3 复杂度计算
    • 1.4 分治
    • 1.5 算法设计(01背包,最短路径)
    • 1.6 最大子数组问题
    • 1.7 算法设计(最长回文串)
  • 二、核心考点
    • 2.1 概述部分考点
      • 2.1.1 循环不变式loop-invariants
      • 2.1.2 RAM模型
    • 2.2 分治算法
      • 2.2.1 分治算法求解方法
      • 2.2.2 快速排序,归并排序,堆排序
      • 2.2.3 主定理
    • 2.3 线性时间排序算法
    • 2.4 动态规划
      • 2.4.1 动态规划求解步骤
      • 2.4.2 动态规划要素
      • 2.4.3 动态规划具体求解问题
    • 2.5 贪心算法
      • 2.5.1 贪心算法求解步骤
      • 2.5.2 贪心算法要素
      • 2.5.3 贪心算法具体问题求解
    • 2.6 搜索算法和NP问题

前言

主要针对西安电子科技大学《算法分析与设计》的核心考点进行汇总,包含总共7章的核心知识点。
【期末期间总结资料如下】

针对西电计科院软件工程专业大三下学期的《算法分析与设计》期末考试复习资料。大部分知识点来自于张立勇老师的PPT,放心使用。
考试主要包括:判断题,单选题,简答题(各类算法的计算题)
(如需要算法分析与设计全部笔记资料以及历年考题答案,可以联系邮箱oax_knud@163.com,资料非无偿,介意慎联系
其他资料参考:西电计算机专业课资料汇总


一、历年考题

1.1 判断题

  1. Answer T/F for the following: (2 * 8 points)
    (1) 5n2 - 2n + 1024 ∈ ∈ O(n)
    (2) 5n2 - 2n + 1024 ∈ ∈ Ω(n)
    (3) 5n2 - 2n + 1024 ∈ ∈ Θ(n2)
    (4) The array A 87 85 72 84 79 75 70 55 68 forms a max-heap.
    (5) If a sorting algorithm is NOT stable, then the output of the algorithm may be NOT in correctly sorted order.
    (6) In Dynamic Programming strategy, optimal substructure means that an optimal solution to the problem contains within it an optimal solution to subproblems.
    (7) Greedy strategy can be used to obtain an optimal solution of the 0-1 knapsack problem by choosing the most value/ weight per unit in descending order.
    (8) 3-COLOR problem is an NP-Complete problem.

1.2 单选题

2 . Single Choice (2*10 points)
(1) The average-case running time of Insertion Sort is ( )
A. Θ(n 2 ) B. Θ(nlgn) C. Θ(n) D. Θ(n 3 )
(2) The worst-case running time of Merge Sort is ( )
A. Θ(n 2 ) B. Θ(nlgn) C. Θ(n) D. Θ(n 3 )
(3) The worst-case running time of Quick Sort is ( )
A. Θ(n 2 ) B. Θ(nlgn) C. Θ(n) D. Θ(n 3 )
(4) Which of the following sorting algorithm is NOT stable ( )
A. Heap Sort B. Merge Sort
C. Insertion Sort D. Counting Sort
(5) Which of the following sorting algorithm is NOT in place ( )
A. Quick Sort B. Bucket Sort
C. Heap Sort D. Insertion Sort
(6) Which designing strategy is used in Quick Sort ( )
A. Divide and conquer B. Dynamic programming
C. Greedy D. Brute Force
(7) Which designing strategy is used in Assembly-Line Scheduling problem ( )
A. Divide and conquer B. Dynamic programming
C. Greedy D. Brute Force
(8) Which designing strategy is used in Activity Selection problem ( )
A. Divide and conquer B. Dynamic programming
C. Greedy D. Brute Force
(9) In the DP recursive equation used for Longest Common Subsequence problem,
c[i,j] represents the ( ) of x[1…i] and y[1…j], it’s the ( ) of the problem.
A. longest common subsequence B. length of longest common subsequence
C. optimal solution D. value of optimal solution


1.3 复杂度计算

  1. Evaluate the following recursions using the Master Method (3 * 4 points)
    (1) T(n) = 5T(n/2) + n 2
    (2) T(n) = 4T(n/2) + n 2
    (3) T(n) = 3T(n/2) + n 2



1.4 分治

  1. Divide and Conquer Strategy (12 points)
    (1) Describe the 3 steps used in Divide and Conquer strategy to solve a problem.
    (2) Given the following array A to be sorted using Quick Sort as following:10 9 8 5 4 11 7 6
    using the last element (6) as pivot, give the result of the total array after the first partition.
    (3) Mark the two sub-problems remained in question (2), describe the following
    steps in Quick Sort for this instance.


1.5 算法设计(01背包,最短路径)

  1. Design Strategies(16 points)
    Answer the following questions briefly.
    (1) To calculate the optimal solution for Fractional Knapsack problem and 0-1
    Knapsack problem, which problem can solved using Greedy strategy? Which
    problem can be solved using Dynamic Programming strategy? Describe the main
    idea of the two corresponding algorithms.
    (2) When solving the Single-Source Shortest Path problem, there may be negative
    edge(s) or not, in which case Greedy strategy (Dijkstra) can be used to get the
    optimal solution? Describe the main idea of Dijkstra algorithm. How to calculate
    the length of the shortest paths in the other case?



1.6 最大子数组问题

  1. Maximum Subarray Problem (16 points)
    Maximum Subarray Problem means to find the subarray indexed from i to j
    which maximize the sum of A i ~A j . You should notice that there may be negative
    ones but not all in the input array A[1…n].
    (1) Give an algorithm to calculate the maximum subarray in O(n 2 ) time, using Brute-Force or Divide and Conquer strategy as you like.
    (2) How to solve the problem in O(n) time using Dynamic Programming strategy?
    Give and describe the recursive equation used in the optimal substructure of the DP algorithm.
    (3) Given the following input array as following, used the algorithm in step (2) to
    calculate the maximum subarray.8 -5 -4 10 -1 7 -3 12 -20 18

答案以后再补充~

1.7 算法设计(最长回文串)

  1. Algorithm Design(8 points) Design an algorithm to find the longest palindrome( 回 文 ) subsequence for a given string S. A subsequence is a sequence that can be derived from a string by deleting some chars without changing the order of the remaining ones. A palindrome is a symmetrical string, that is, a string read identically from left to right as well as from right to left. For example, one longest palindrome subsequence of string “DABBEAF” is “ABBA”, whose length is
    ( NOTICE: You’re NOT allowed to use the algorithm for Longest Common Subsequence problem! )

答案以后再补充~


二、核心考点

2.1 概述部分考点

2.1.1 循环不变式loop-invariants

1、初始化:在循环第一次迭代前为真
2、维护:如果在循环的一次迭代前为真,则在下一次迭代之后保持为真
3、终止:当循环终止时,循环不变量提供一个属性表明算法是否正确。

2.1.2 RAM模型

1、指令一个接一个执行,无并发操作
2、程序中每一条指令均为原子操作,包括算术运算,逻辑运算,数据移动,控制运算【无嵌套指令和中断】
3、每一种指令执行时间固定
4、内存容量足够大

2.2 分治算法

分治算法主要包括了如下部分的内容:

2.2.1 分治算法求解方法

分:将问题分解为若干较小规模的子问题,子问题相互独立,与原问题形式相同。
治:递归求解每个子问题。
合:将子问题的解合并,得到原问题的解。

2.2.2 快速排序,归并排序,堆排序

需要掌握快速排序,归并排序,堆排序的详细计算过程以及时间复杂度。

2.2.3 主定理

对于T(n)=aT(n/b)+f(n)

2.3 线性时间排序算法

线性时间排序算法主要包括如下内容:

掌握以上排序算法的原理,计算过程,时间复杂度,使用场景,是否稳定。
对比各种算法。

2.4 动态规划

动态规划主要包括了如下部分的内容:

很多问题可以同时通过分治算法和动态规划两种方法进行解决,在学习过程中最好掌握多种方法,在考场中可以随机选择喜欢的方法进行伪代码书写。

2.4.1 动态规划求解步骤

(1)分析最优解的性质,并刻画其结构特征(最优子结构)。
(2)递归的定义最优解。
(3)以自底向上或自顶向下的记忆化方式(备忘录法)计算出最优值
(4)根据计算最优值时得到的信息,构造问题的最优解

2.4.2 动态规划要素

1、最优子结构
(1)、定义:一个问题的最优解包含子问题的最优解
(2)、差异性:一个问题包含了多少个子问题;最优解中使用了哪些子问题
2、重叠子问题overlapping subproblems
(1)、若在代码中直接使用递归会出现重复子问题的情况

3、重构最优解:通过一个和存储最优解的值相同结构的数据结构记录子问题的最优解,通过子问题的最优解重构问题的最优解。

2.4.3 动态规划具体求解问题

装配线调度问题,矩阵链乘,最长公共子序列,01背包问题,最大子数组问题,最长公共子串,活动选择问题。需要完全掌握以上问题的求解思路以及计算过程,时间复杂度。
以装配线调度问题为例进行分析。
1、问题重述

2、核心思路
(1)、最优子结构:
首先划分子问题,由于站点S[1][j]和S[2][j]分析过程相同,在这里选择S[1][j]进行分析。对于站点S[1][j]来说,若j=1,则其最短工作时间仅考虑e1;若j>1,则其最短工作时间有两种可能:
任务直接从上一个站点S[1][j-1]交付至S[1][j],所花费的时间为任务到在站点S[1][j-1]为止花费的时间加上站点S[1][j]工作时间。
任务从站点S[2][j-1]经过转移时间t[2][j-1]到达S[1][j],然后在进行巩固走,所花费的时间为任务到在站点S[2][j-1]为止花费的时间,站点S[1][j]工作时间,任务转移时间t[2][j-1]。
可以认为S[1][j]的最短工作时间是取这两种可能中的最短工作时间。
(2)、递归式:f[i][j]表示i工作先第j个站点工作后所需要的最短工作时间,由最优子结构可以得到如下递归式:

(3)、最优解:

(4)、构造最优解:采取与f相同的数据结构d[i][j]记录在最短工作时间的情况下,站点S[i][j]的上一个工作站来源于第i条工作线。

3、伪代码书写

4、具体计算题分析

2.5 贪心算法

贪心算法覆盖的内容包括:

2.5.1 贪心算法求解步骤

1、建立数学模型来描述问题;
2、把求解的问题分成若干个子问题;
3、对每一子问题求解,得到子问题的局部最优解;
4、把子问题的解局部最优解合成原来解问题的一个解

2.5.2 贪心算法要素

1、贪心选择【贪心算法与动态规划算法的主要区别】
贪心选择是指所求问题的整体最优解可以通过一系列局部最优的选择来达到。贪心选择是采用从顶向下、以迭代的方法做出相继选择,每做一次贪心选择就将所求问题简化为一个规模更小的子问题。

2、最优子结构
当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。运用贪心策略在每一次转化时都取得了最优解。
贪心算法的每一次操作都对结果产生直接影响,而动态规划则不是。贪心算法对每个子问题的解决方案都做出选择,不能回退;动态规划则会根据以前的选择结果对当前进行选择,有回退功能。动态规划主要运用于二维或三维问题,而贪心一般是一维问题

2.5.3 贪心算法具体问题求解

活动选择问题,分数背包问题,哈夫曼算法,最短路径问题。需要掌握核心原理,伪代码,时间复杂度等相关知识。
这里以活动选择问题进行分析
1、问题重述

2、核心原理
首先,按照活动的结束时间顺序进行升序排序,然后对于活动i到活动j最多可以选择多少不冲突的活动这个问题,将其划分为两个子问题进行考虑。首先选择活动k作为子问题划分的断点,k满足:

活动i到活动j之间最多不冲突活动数目等于活动i到k之间最多不冲突活动数目+活动k到j之间最多不冲突活动数目。
根据贪心原理,选择sij中最早结束的活动作为k最问题进行划分,由于k为最早结束的活动,因此在k之前的活动不存在,所以子问题的个数减少为1个。仅需求活动k到j之间最多不冲突活动数目即可·。

3、代码

2.6 搜索算法和NP问题



对于DFS和BFS了解基本原理即可。
对于第七章了解NP问题基本知识,并举例具体的样例。

西电算法分析与设计核心考点汇总(期末真题,教材算法导论)相关推荐

  1. 西电数据库简答题核心考点汇总(期末真题+知识点)

    文章目录 前言 一.关系代数 1.1 真题一 1.2 真题二 二.SQL语句 2.1 真题一 2.2 真题二 三.事务 3.1 真题一 四.关系理论 4.1 真题一 4.2 真题二 五.数据库设计 5 ...

  2. 西电机器学习简答题核心考点汇总(期末真题,教材西瓜书)

    文章目录 前言 一.机器学习和深度学习区别以及原因 二.卷积核,池化层作用 三.SVM转化为对偶问题的优点 四.核函数的作用 五.特征的相似度定义,性质 六.预剪枝与后剪枝优缺点 七.密度直接可达,密 ...

  3. 2019西电复试计科,软件机试真题

    Problem 1 查找不同的连续数字串个数,比如输入1 2 2 3 8 9,总共有1,2,3,8,9五种数,输出5 再例如输入1 5 5 3 9 5 5 0 9 9 9,总共有1,5,3,9,5,0 ...

  4. 综合素质计算机考点,教师资格证小学综合素质考点及考试真题:信息处理能力...

    小学综合素质考点及考试真题--信息处理能力 大纲要求: 具有运用工具书检索信息.资料的能力. 具有运用网络检索.交流信息的能力. 具有对信息进行筛选.分类.存储和应用的能力. 具有运用教育测量知识进行 ...

  5. ★核心关注点_《信息系统项目管理师考试考点分析与真题详解》

    ★核心关注点_<信息系统项目管理师考试考点分析与真题详解> 真诚感谢你选用<信息系统项目管理师考试考点分析与真题详解>作为高级项管的辅导用书.对于使用该书的读者们,在备考201 ...

  6. 传感器原理及应用期末复习汇总(附某高校期末真题试卷)

    文章目录 一.选择题 二.填空题 三.简答题 四.计算题 五.期末真题 一.选择题 1.下列哪一项是金属式应变计的主要缺点(A) A.非线性明显 B.灵敏度低 C.准确度低 D.响应时间慢 2.属于传 ...

  7. 勘误表《网络规划设计师考试考点分析与真题详解》

    <网络规划设计师考试考点分析与真题详解>勘误表 首先,对本书在编写.校对.排版.印刷环节中的错漏,而给各位读者带来不便之处,深表最诚挚的歉意!也恳请各位专家.读者在使用过程中多提宝贵意见及 ...

  8. 新书预告《网络规划设计师考试考点分析与真题详解》

    新书预告<网络规划设计师考试考点分析与真题详解> 一年前,出版社有意与我约<网络规划设计师考试考点分析与真题详解>稿件,鉴于网络规划设计师是一门刚开考的考试科目,从一个事物的生 ...

  9. 数据库原理及应用期末复习汇总(附某高校期末真题试卷)

    文章目录 <数据库原理及应用>试题1 一.选择题 二.填空 三.简答题 四.T-SQL综合题 五.综合应用题 <数据库原理及应用>试题2 一.选择题 二.填空 三.简答题 四. ...

最新文章

  1. 2.1.5 编码与调制
  2. 026_html表单
  3. 【深入Java虚拟机JVM 06】垃圾收集概述
  4. Android开发(五)——计时器
  5. Windows下有关信息收集的命令
  6. c语言朋友,[原创]写给初学 c语言的朋友
  7. Oracle数据库安装图文操作步骤
  8. idea解决tomcat控制台中文乱码问题
  9. php代码连接mysql数据库,php连接mysql数据库代码
  10. java适配器模式 场景_详解Java适配器模式
  11. 106.比特率和波特率
  12. linux 设置unix格式化,linux格式化
  13. 软件-xyplorer
  14. MPI 之 点对点通信的一个实例
  15. 《秘密》读后感之秘密的揭露和法则
  16. java 生成格林威治时间
  17. SN/CF 5W-40含义
  18. PlaySound函数以及sndPlaySound函数用法总结
  19. cad lisp 两侧偏移并删除_cad lisp 两侧偏移并删除_CAD中级进阶必备,这10个技巧让你轻松再升一级...
  20. 华中农业大学教务系统自动评教脚本

热门文章

  1. 发票认证系统服务器调用失败,发票认证平台登录显示不成功怎么办
  2. 如何写出优雅的 Go 语言代码
  3. 重磅!顶尖AI学者全职回国,拟加入清华大学
  4. png/jpg/vsd转eps格式
  5. 计算机辅助设计与制造的应用,计算机辅助设计与制造(UG)
  6. 计算机辅助模具设计实训心得6,模具设计毕业设计总结范文
  7. 基于微信小程序的电影院订票选座小程序 系统的设计与实现 开题报告和效果图
  8. codevs——T3111 CYD啃骨头
  9. 如何成为一名优秀的软件测试人员,如何成为一名杰出的软件测试人员
  10. 英语口语整理,灵活运用了,口语基本就没问题了。