江苏大学 程序设计与算法/算法设计与分析/数据结构与算法/程序设计与数据结构 期末/考研复试复习

简介: 江苏大学 程序设计与算法/算法设计与分析/数据结构与算法/程序设计与数据结构 期末/考研复试复习

考试范围

1.问答题

2.根据代码写时间复杂度

3.0-1背包问题的分支限界法/回溯法计算实例

4.正确性证明(lcs,不相交区间)

5.动态规划填表(lcs,背包,矩阵)

6.算法设计实践题

一、问答题

 1.什么是最坏情况时间复杂性?什么是平均情况时间复杂性?

最坏情况的时间复杂性是规模为n的所有输入中,基本运算执行次数为最多的时间复杂性。平均时间复杂性是规模为n的所有输入的算法时间复杂性的平均值(假设每种输入情况等概率出现)。

 2.什么是递归算法?什么是递归函数?

 递归:若一个对象部分地包含它自己,或用它自己给自己定义,则称这个对象是递归的。

 递归算法:直接或间接地调用自身的算法。

 递归函数:用函数自身给出定义的函数。

  3.递归函数的二要素是什么?

 边界条件、递归方程。

  4.分治法的设计思想是什么?

 将要求解的较大规模的问题分割成若干个更小规模的子问题。

 对这若干子问题分别求解。如果子问题的规模仍然不够小,则再划分为若干个子问题,如此递归的进行下去,直到问题规模足够小,很容易求出其解为止。

 5.什么叫问题的最优子结构性质?

 最优子结构性质:问题的最优解包含着其子问题的最优解。

 6.动态规划基本步骤是什么?

 分解。将原问题可以分解为若干个规模较小的相同问题。

 递归地定义最优值。(相当于分治法中的合并操作)

 以自底向上的方式计算出最优值。

 根据计算最优值时得到的信息,构造最优解。

 7.动态规划算法的基本要素是什么?举例说明一些可以用动态规划算法解决的问题。

 动态规划算法的基本要素是:最优子结构:问题的最优解包含子问题  的最优解、重叠子问题:每次产生的子问题不是新问题,被反复计算多次。

 矩阵连乘、最长公共子序列、0-1背包问题

 8.说明分治法与动态规划法的相同点和不同之处?

 与分治法类似,动态规划法也是把问题一层一层地分解为规模逐渐减小的同类型的子问题。动态规划法与分治法的一个重要的不同点在于,用分治法分解后得到的子问题通常都是相互独立的,而用动态规划法分解后得到的子问题很多都是重复的。因此,对重复出现的子问题,只是在第一次遇到时才进行计算,然后把计算所得的结果保存起来;当再次遇到该子问题时,就直接引用已保存的结果,而不再重新求解。

 9.贪心算法的两个重要要素是什么?举例说明一些可以用贪心算法解决的问题。

 两个重要要素:贪心选择性质:所求的问题的整体最优解可以通过一系列局部最优的选择达到、最优子结构性质:问题最优解包含子问题最优解。

 活动安排问题、最优装载问题、单源最短路径问题

 10.什么叫贪心选择性质?

 所求问题的整体最优解可以通过一系列的局部最优选择来得到,即贪心选择来达到。

 11.贪心算法与动态规划算法的的相同点和不同之处?

 相同点:都具有最优子结构性质,都用来求解最优化问题。

 不同点:贪心算法具有贪心选择性质,局部最优解能得到整体最优解。动态规划具有重叠子问题性质。

  12.背包问题与0-1背包问题有何区别?

 0-1背包问题物品有两种选择,要么放进去要么不放进去,而背包问题可以放部分,重量的选择可以是非整数

 13.回溯法与分支限界法之间的相同点是什么?不同之处在哪些方面?

 回溯法和分支限界法都需要隐式地构造解空间树并对其进行搜索。回溯法以深度优先的顺序进行搜索,避免不必要的搜索。分支限界法则以广度优先或最小耗费(最大效益优先)的方式搜索解空间树。

  14.分支限界法基本思想是什么?

 分支限界法以广度优先或以最小耗费(最大效益)优先的方式搜索解空间树。扩展子结点时,一次性生成它的所有孩子结点,舍弃不可能导致可行解或最优解的子结点,其余节点进入队列。

 15.常用的剪枝函数有哪两类?

 约束函数剪枝和限界函数剪枝。

  16.约束函数的功能是什么?

 在扩展节点处剪去不满足约束的子树,保留可行解点。

 17.限界函数的功能是什么?

 剪去可行但得不到最优解的子树。

  18.常见的两种分支限界法是什么?

 (1)队列式(FIFO)分支限界法

按照队列先进先出(FIFO)原则选取下一个节点为扩展节点。

  (2)优先队列式分支限界法

按照优先队列中规定的优先级选取优先级最高的节点成为当前扩展节点。

  19.什么是P问题和NP问题?

 如果一个问题可以找到一个能在多项式时间里解决它的算法,那么这个问题就属于P问题。

 NP问题不是非P类问题,是多项式复杂程度的非确定性问题。 是指可以在多项式的时间里验证一个解的问题。

 20.回溯法中剪枝函数有哪几类?各有何用途?

 约束函数:用约束函数在扩展结点处剪去不满足约束的子树,保留可行节点;

 限界函数:用限界函数剪去得不到最优解的子树。

 21.什么是NP完全问题?

  NP完全问题又叫NPC问题。同时满足下面两个条件的问题就是NPC问题。

 第一条,它是一个NP问题;

 第二条,所有的NP问题都可以约化到它。

  22.子集树和排列树。

 都是回溯法的状态空间树。

 子集树:从n个元素组成的集合S中找出S满足某种性质的子集时,相应的解空间树。

 排列树:当所给问题是确定n个元素满足某种性质的排列时,相应解空间树为排列数。

二、时间复杂度计算

1.动态规划、贪心:

最内层循环次数。

image.png


5.递归

image.png


三、证明:

活动安排问题

image.png


最长公共子序列问题


image.png

四、动态规划填表:

最长公共子序列:

从左至右、从上往下更新。

0-1背包:

从左至右、从下往上更新。w为重量/体积,v为价值。

image.png


矩阵连乘:

image.png

五、实践题

1.棋盘覆盖

算法设计与分析/数据结构与算法实验1:棋盘覆盖问题

2.循环赛安排

算法设计与分析/数据结构与算法实验2:循环赛安排问题

3.矩阵连乘

算法设计与分析/数据结构与算法实验3:矩阵连乘问题

4.添加括号数目问题

算法设计与分析/数据结构与算法实验4:添加括号数目问题

5.找新数

算法设计与分析/数据结构与算法实验5:找新数最小的删除方案

6.0-1背包问题(回溯法)

算法设计与分析/数据结构与算法实验6:0-1背包问题(回溯法)

7.0-1背包问题(分支限界法)

算法设计与分析/数据结构与算法实验7:0-1背包问题(分支限界法)


目录
相关文章
|
23天前
|
并行计算 算法 测试技术
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面
C语言因高效灵活被广泛应用于软件开发。本文探讨了优化C语言程序性能的策略,涵盖算法优化、代码结构优化、内存管理优化、编译器优化、数据结构优化、并行计算优化及性能测试与分析七个方面,旨在通过综合策略提升程序性能,满足实际需求。
54 1
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
数据结构与算法系列学习之串的定义和基本操作、串的储存结构、基本操作的实现、朴素模式匹配算法、KMP算法等代码举例及图解说明;【含常见的报错问题及其对应的解决方法】你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找等具体详解步骤以及举例说明
|
1月前
|
算法 安全 搜索推荐
2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第2.3章之IKUN和I原达人之数据结构与算法系列学习x单双链表精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
存储 Web App开发 算法
2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构之单双链表按位、值查找;[前后]插入;删除指定节点;求表长、静态链表等代码及具体思路详解步骤;举例说明、注意点及常见报错问题所对应的解决方法
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构王道第3章之IKUN和I原达人之数据结构与算法系列学习栈与队列精题详解、数据结构、C++、排序算法、java、动态规划你个小黑子;这都学不会;能不能不要给我家鸽鸽丢脸啊~除了会黑我家鸽鸽还会干嘛?!!!
|
1月前
|
算法 安全 NoSQL
2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
顺序表的定义和基本操作之插入;删除;按值查找;按位查找习题精讲等具体详解步骤以及举例说明
|
1月前
|
存储 算法 安全
2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
数据结构的基本概念;算法的基本概念、特性以及时间复杂度、空间复杂度等举例说明;【含常见的报错问题及其对应的解决方法】
|
2月前
|
并行计算 算法 IDE
【灵码助力Cuda算法分析】分析共享内存的矩阵乘法优化
本文介绍了如何利用通义灵码在Visual Studio 2022中对基于CUDA的共享内存矩阵乘法优化代码进行深入分析。文章从整体程序结构入手,逐步深入到线程调度、矩阵分块、循环展开等关键细节,最后通过带入具体值的方式进一步解析复杂循环逻辑,展示了通义灵码在辅助理解和优化CUDA编程中的强大功能。

热门文章

最新文章