XJTUSE-算法-串讲知识点梳理

前言

10道选择

第一章-算法概述

12~13分,1-2选择,1简答

基本概念

考选择

1.算法:输入、输出、有限性、确定性

2.复杂性:

空间复杂度:不涉及太难的,只考典型的,比如dp的空间

时间复杂度:最好时间复杂度、最差时间复杂度、平均时间时间度

3.P和NP:

P:确定性计算模型定义的(多项式时间)

NP:非确定性模型定义的,有一个预言机制。(多项式时间)

P和NP相等或者不相等的说法都是错的!(注意多种说法)

P属于NP是对的!

NPC:核心部分,映射

渐进

渐进关系(几个符号):考证明(书上的6个O的性质)(7分)

数学证明掌握!

o,w用比值来证明

习题1-11重要!

abf540ddd9da49478d7f8073b3a415c4.png

第二章-递归分治

基本概念

1.递归概念:

优点:

缺点:效率低,占用较多时间空间

2.分治

代码框架(必会):

一定要有:

  1. 问题小到一定规模可解
  2. 问题可以拆解成同构的小问题
  3. 子问题合起来

3.求解递归(必考必考必考)(他视频里面说了三遍)

  1. 主方法:3种情况
  2. 递归树法:包含拆分代价和叶节点代价

4.根据代码判断复杂度:

  1. if-else
  2. while
  3. for
  4. 递归

具体算法

1.二分搜索:边界

2.大整数乘法:知道拆分方法

3.strassen矩阵乘法:不深入要求,利用结论即可,记结论

4.棋盘覆盖

5.最接近点对问题:伪码和递推式要串联起来!(根据伪码写出递推式,然后求解递推式!!)

6.归并排序:理解渐进最优(比较排序)(选择)

7.快速排序:重点掌握!!!!!!!!!!!!!!!!!

8.线性时间选择:重点掌握!!!!!

7、8的两种考法:

  1. 根据伪码求递归,求解递归
  2. 结合第七章的知识点进行考察

第三章-动态规划

与分治法异同

相同:拆分问题,小到一定规模可解

不同:动态规划子问题不独立,有重叠性,用空间换时间。

解题步骤

最优子结构性质(反证法)

找出递推式

边界条件

基本要素

重叠子问题

最优子结构(选择)

基本形态

动态规划

备忘录方法

例题(搞懂背熟)

拆分类:矩阵连乘、切钢管、游乐园(作业题)

移界类:最长公共子序列(背熟)、字段和问题、图像压缩、背包问题:物品数,背包容量

图像类:多段有向图(不在书上但要看)。

第四章-贪心算法

大题不好考,10-12分

概念

贪心选择性质

最优子结构性质

例题

活动安排问题

装载问题

作业的加油问题

01背包的不可行证明,给出反例即可(送分题)

相关算法

选择、简答题出

哈弗曼编码(一步一步来)

Dij

Prim(基于点)

kruskal(基于边)

第五章-回溯法

考试方法就是画个解空间树,用语言描述搜索过程,完全按照书上的方法。

框架(背熟)

必考,默写,7分!!!!!!!!!!!!!语言不限C++,JAVA均可

  1. 递归回溯
  2. 迭代回溯
  3. 子集树算法框架
  4. 排序树算法框架

基本概念

1.深度优先:三种节点:死节点、扩展节点、活结点

2.回溯法的效率:...

3.重排原理:先分还是后分。原则:靠上的分支尽量少,剪枝好!

递归回溯

图m着色问题

n后问题

迭代回溯

n后问题

子集树框架

装载问题:剩余价值估算

背包问题

(这两个算法不断优化的方法,即剪枝的过程)

(约束函数的不断进化)

排序树框架

TSP问题

圆排序问题

电路板问题

总结

四个框架

活结点,死节点,拓展节点

排序树框架的swap

子集树的剪枝

重排原理

算法分析题5-6(重点)(找出更加高效的上界函数)

第六章-分支限界法

解题也是画一个树,文字描述。区别是要有活结点列表,不过要根据题目的要求先进先出还是优先级。

这章代码不好考!!

基本概念

每个活结点只有一次机会成为拓展节点,活结点一旦成为拓展节点,就一次性产生所有儿子结点。

活结点列表(先进先出,优先级....)

关于优先级的活结点列表,即优先队列,如何放入取出的堆等数据结构无需复习。

三个重要例题

TSP

01背包

作业分配问题(搞懂)

第七章-概率算法

只出简答,选择题

关于四种算法概念一定有一道选择题

当数据量大的时候,随机投点法的模拟效果更好

跳跃表:学会时间和空间复杂度即可

拉斯维加斯算法:框架记住;了解时间的公式

n后问题:全回溯(太乐观),全随机(太悲观),回溯+随机(会考代码填空)

蒙特卡洛算法:了解基本概念,即偏真,偏假,优势...

第八章-线性规划和网络流 

如果考网络流,只考网络流概念题

核心为单纯形法

一般出计算题,双变量,出小于等于约束。考试一定要用单纯形法(2~3次变化就可以做出)。不能用图解法,不过可以用图解法验证!!!!!!!!(12-13分)

基本概念

线性规划问题的基本表示(化标准型)

松弛变量...

 

考前大胆预测

2023-12-10 10:45 考前5h编写,仅供娱乐

我直接开始预言家模式

10道选择,一道2分,20分

5道简单,一道8分,40分

3道大题,一道13-14分,40分

 

选择题型如下:

1.算法概述的基本概念:P与NP,算法的特点..

2.递归的基本概念:优缺点

3.动态规划(不知道怎么考)

4.贪心(可能就是书上的题目,考察一些知识点)

5.回溯法(结点的概念,重排原理,约束函数,上界函数)

6.分支限界法(队列?)

7.概率算法:四个概率算法的基本概念,其他琐碎的知识点(跳跃表的复杂度之类的...)。

8.线性规划与网络流(不知道怎么考),要考应该也只靠线性规划部分吧....

 

简答:

1.要么直接给递推式,要么给简单的伪代码自己写递推式。然后重头戏为递归的求解,主方法or递归树。都到这个地步了,我就大胆猜测,必定是伪码,而且一定是最多6个步骤,标号序的伪码。

2.框架默写(递归分治的框架or回溯法4种框架之一)我觉得应该就考回溯法了,都猜到这个地步了,我不妨再猜一下应该考排序树的算法框架,因为两个swap函数很有含金量(好做考点)。

3.代码填空(估计就是动态规划/贪心/概率三种里面挑一个或者结合起来)不过既然都预测了,大胆一点,我盲猜是概率的代码填空。上难度就结合动态规划或者回溯,大概难度最难就是快速排序or N后问题 or 线性时间 的难度。不上难度就来个拉斯维加斯算法/蒙特卡洛算法的代码填空,然后稍微求解一下概率啥的。

4.贪心算法:Dij,Prim,哈夫曼编码,Kruakal的实际应用 

5.不知道会是什么了...不过都预测了,我大胆点猜测,应该是第一章的一些证明题目,比如O(f)O(g) = O(fg)。或者角度刁钻一些,考一个o(f)的相关证明, 就看你有没有用比值的方法证明。或者第一章的课后题目的一些相关知识(求解O啊,平均时间的定义啊....)

 

大题:

1.回溯or分支限界法:画解空间树,然后进行描述。回溯就是深度搜索,主要有返回的过程。分支限界法,主要是队列的形式,是FIFO还是优先级。不过不管怎么描述,都离不开活结点,死结点,拓展结点的说法。不妨再大胆猜测,我盲猜要么给约束/上界函数,要么让我们自己想一个,这颗解空间树不超过3层,起码能剪枝减去百分之40。

2.动态规划给个题目,要求给出算法。应该就是14分的题目。找出+证明最优子结构6分,给出递推式3-5分(注意递推式要有边界),代码/伪代码/手工推答案符合要求/完成任务满分。既然都预测了,不妨猜个难度,我盲猜难度最难就是作业题的数字三角形。算法复杂度我都猜好了,一般就是时间空间都为O(n^2)。

3.线性规划的单纯形法。应该就是给(有可能要自己写)两个不等式(2-3分),加入两个松弛变量y1,y2,把不等式化为约束标准型(3-5分)。然后求解,求解过程要画矩形(一个矩形3分)。盲猜就生产计划决策的题目难度,运气好正好就两次矩阵变换就能求解完成。

 

要是压中了80分以上,晚上就是买彩票!!!

 

后记

好消息是压中不少题目,坏消息是考试脑子有点抽筋,犯了不少计算错误(不过人非圣贤孰能无过....)

学弟学妹们记得感谢@AD_Endr这位学长考场手抄的试题

学弟学妹们记得感谢@AD_Endr这位学长考场手抄的试题

学弟学妹们记得感谢@AD_Endr这位学长考场手抄的试题

(嗯,重要的事情说三遍)

9c219772786d475188a82775079dbfb4.jpeg

be8dd2f3f9ca44448a263d424d2712b2.jpeg

 


2023-12-14 南门彩票店购买10r刮刮乐,痛失十元,家人们,赌狗行为不可取(/_\)大怨种

 

### 关于西安交通大学算法设计与分析课程考试的复习资料 针对西安交通大学(XJTUSE算法设计与分析课程考试,准备充分且有效的复习材料至关重要。对于有本科基础的学生而言,快速回顾相关知识点并集中精力在王道或天勤辅导书籍以及历年真题上是明智的选择[^1]。 对于跨专业的考生,则推荐深入学习《程序设计与C语言》,完成书中所有的练习题目来夯实编程能力的基础后再转向上述参考资料和过往考题的学习。特别需要注意的是像大Θ表示法这样的核心概念,即使不在主要备考指南内也应掌握其精确含义及其应用场景,因为这些内容有可能成为高分值试题的一部分[^2]。 #### 利用历年真题提升实战技巧 从大约十月起着手处理往年的考试题目是一个不错的时间节点。尽管部分年份的记忆版本可能存在些许偏差,在解答过程中保持批判性思维有助于识别潜在错误的同时加深理解。最近数年的试卷尤其宝贵,它们能够帮助学生超越常规教材所设定的知识边界,培养更加灵活的数据结构思维方式[^3]。 #### 构建稳固的知识体系 除了依赖特定出版物外,还应当重视课堂笔记的价值——这不仅是教师授课要点的集合,往往还包括额外拓展的信息。初次浏览时务必澄清每一个疑问之处;随后通过浓缩提炼的方式进一步加工整理成易于记忆的形式,特别是那些关键性的算法逻辑,最好能做到闭卷重现的程度。任何难以消化的概念都值得被标记出来以便后续重点攻克[^4]。 #### 综合运用理论联系实际项目经验 面对综合性强的应用型考核,比如要求依据给定情境独立完成整个系统的规划与实现过程,不仅考验对数据库规范化原理、面向对象设计理念等方面的理解程度,同时也检验能否有效地将抽象的技术要素转化为具体的解决方案。因此平时多加留意课堂教学期间涉及的实际案例研究,并尝试对比不同设计方案之间的优劣差异,甚至探索改进的可能性,都是提高应对这类挑战的有效途径之一[^5]。 ```python # Python代码示例:计算斐波那契序列第n项(动态规划解法) def fibonacci(n): if n <= 0: return "输入正整数" elif n == 1 or n == 2: return 1 fib = [0, 1, 1] for i in range(3, n + 1): next_value = fib[i - 1] + fib[i - 2] fib.append(next_value) return fib[n] print(fibonacci(10)) # 输出结果为55 ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值