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

news2024/11/24 20:08:26

文章目录

  • 前言
  • 一、历年考题
    • 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问题基本知识,并举例具体的样例。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383892.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

绪论 基本概念

数据结构 第一章 绪论 概念 数据data:是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(data element:是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。 数据对象(data …

软件测试面试题和简历模板(面试前准备篇)

一、问题预测 1、让简单介绍下自己(这个不用说了每次面试开场) 面试官,你好,我叫xxx,xx年本科毕业,从事软件测试将近3年的时间。在此期间做过一些项目也积累过一些经验,能够独立地完成软件测试…

经典的卷积神经网络(VGG,GoogLeNet等)

LeNet LeNet原文地址:https://ieeexplore.ieee.org/abstract/document/726791 Lenet是一个 7 层的神经网络(不包含输入层),包含 3 个卷积层,2 个池化层,2 个全连接层。它的网络结构图如下所示&#xff1a…

广州华锐互动:VR虚拟课件互动教学平台在学校教育中的影响和作用

VR虚拟课件互动教学平台是广州华锐互动为各大高校开发的一款基于VR虚拟现实技术的教学工具,VR虚拟课件互动教学平台中包含了各类VR互动课件以及相关教学资源,学生可以自主进入平台汇总进行沉浸式的学习体验,帮助学生更好地理解学习相关教学内…

自动化实战-对个人博客系统实现web自动化测试

基于selenium和JUnit5实现的自动化测试用例 一、使用脑图编写web自动化测试用例 下图就是根据博客系统创建的自动化测试用例脑图 二、创建自动化项目,根据用例来实现脚本 Common包底下放着的是所有测试用例共用的方法,公共类; Test包底下就是…

BERT学习

非精读BERT-b站有讲解视频(跟着李沐学AI) (大佬好厉害,讲的比直接看论文容易懂得多) 写在前面 在计算MLM预训练任务的损失函数的时候,参与计算的Tokens有哪些?是全部的15%的词汇还是15%词汇中真…

浅谈babel原理

1. babel简介 Babel 的前身是 6to5,6to5 是 2014 年 发布的,主要功能是 就是 ES6 转成 ES5。后改名babel。 2. Babel用途 转译 esnext、typescript 等到目标环境支持的 js 高级语言到到低级语言叫编译,高级语言到高级语言叫转译代码转换 tar…

MySQL 上亿大表如何优化?

背景XX 实例(一主一从)xxx 告警中每天凌晨在报 SLA 报警,该报警的意思是存在一定的主从延迟。(若在此时发生主从切换,需要长时间才可以完成切换,要追延迟来保证主从数据的一致性)XX 实例的慢查询…

李群李代数求导-常用求导公式

参考 A micro Lie theory for state estimation in robotics manif issues 116 常用求导公式 Operation左雅克比右雅克比X−1\mathcal{X}^{-1}X−1JXX−1−I\mathbf{J}_{\mathcal{X}}^{\mathcal{X}^{-1}}\mathbf{-I}JXX−1​−IJXX−1−AdX\mathbf{J}_{\mathcal{X}}^{\mathc…

Go中sync 包的 Cond 使用

文章目录背景Cond 简介使用示例Signal的使用场景Broadcast的使用场景注意事项背景 编写代码过程中, 通常有多个主协程和多个子协程进行协作的过程,比如通过 WaitGroup 可以实现当所有子协程完成之后, 主协程再继续执行, 具体可参…

【ns-3】VS Code开发环境配置

文章目录前言1. 安装VS Code2. 安装CMake和C插件3. 配置环境3.1 配置代码智能提示3.2 配置build3.3 配置gdb调试后记参考文献前言 正所谓“工欲善其事必先利其器”,本篇总结一下ns-3在VS Code开发环境下的配置。 版本信息如下: Ubuntu 22.10ns-3.37VS…

用户难增,广告营收下跌,微博还能“高飞”吗?

微博2022年的业绩再次“变脸”。 图源:微博 2023年3月1日,微博公布了2022年Q4及全年财报。2022年营收18.4亿美元,剔除汇率因素同比下跌15%;2022年Q2以来,微博坚持降本增效策略,提升了运营效率,…

Jquery实现增删改除

文章目录一.关于增加部分区别:二.关于删除部分关于在表格中实现增删改1.首先我们需要创建基本的HTML项目2.相关的css和js的引用3.呈上源代码(1).HTML源代码(2).js源代码(自己创建的)3.效果图&am…

大数据技术——Scala语言基础

Scala基础知识控制结构if条件表达式有一点与Java不同的是&#xff0c;Scala中的if表达式的值可以赋值给变量while循环for循环基本语法其中,“变量<-表达式”被称为“生成器(generator).”“守卫(guard)"的表达式:过滤出一些满足条件的结果。基本语法:for (变量<-表达…

Sandstorm 建设者亮点——2023 年 2 月

隆重推出 Sandstorm 建设者亮点——2023 年 2 月版&#xff0c;这是由最厉害的 Sandstorm 社区制作的独一无二的 NFT 系列。 从突破性的兔子机器人到神奇的蒸汽朋克海盗船&#xff0c;Sandstorm 建设者亮点 NFT 系列展示了一系列独一无二的创作。 19 项新资产将添加至 Sandstor…

提升内部客户服务的 13 个最佳实践攻略!

客户服务包含两个方面的内容&#xff1a;一个是内部服务&#xff1b;一个是外部服务。每一个企业在发展过程中都有内部客户和外部客户&#xff0c;内部服务是针对内部客户的&#xff0c;自己公司的部门与部门之间互为内部客户&#xff1b;外部服务是针对公司之外的外部客户的。…

MySQL数据库存储引擎【InnoDB/MyISAM/MEMORY 】

1.InnoDB存储引擎InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全。在MySQL从3.23.34a开始包含InnnoDB。它是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务处理的能力&#xff0c;也是其他存储引擎不能比拟的。靠后版本的MySQL的默认存…

你没用过工业智能网关?它已经在远程监控行业很热门了,足不出户远程控制设备。

一、项目背景 钢铁企业作为一个能量消耗比较大&#xff0c;污水排放比较多的工业&#xff0c;只有对技术进行不断的改革才能够实现节能减排的目的。这就需要相应的钢铁企业厂能够应用新的技术&#xff0c;实现污水的安全无污染处理&#xff0c;不断地改善环境&#xff0c;提高相…

卡特兰数及常见模型

卡特兰数 英文名Catalan number&#xff0c; 是组合数学中一个常出现在各种计数问题中出现的数列。其前几项为: 1 1 2 5 14 42 132 429 1430 4862 16796 58786 208012 742900 2674440 9694845 35357670 129644790 477638700 1767263190 6564120420 24466267020 91482563640 343…

苹果电脑怎么截屏?图文教学,包教包会

苹果电脑是很多设计师和程序员们所钟爱的电脑品牌&#xff0c;但是在使用过程中&#xff0c;有些小功能操作并不是那么容易掌握。比如&#xff0c;苹果电脑怎么截屏呢&#xff1f;如果您是新手&#xff0c;可能会感到有些困惑。别担心&#xff0c;下面我们将为您详细介绍如何在…