期末考试形式全为大题,重点在于概念的掌握和方法的描述,所以再根据考点进行比较概念层面的复习

第一章

1、算法具有四个属性:

有输入,有输出,确定性,有穷性

第二章

一、分治法

> 分治法的设计思想: 将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。

> 分治法能解决问题的特征

该问题的规模缩小到一定的程度就可以容易地解决;

该问题可以分解为若干个规模较小的相同问题,即该问题具有最优
子结构性质

利用该问题分解出的子问题的解可以合并为该问题的解;(重要条件!)

该问题所分解出的各个子问题是相互独立的,即子问题之间不包含公共的子问题。

二、递归

> 直接或间接地调用自身的算法称为递归算法。用函数自身给出定义的函数称为递归函数

> 每个递归函数必须有非递归定义的初始值

> 边界条件递归方程是递归函数的二个要素,递归函数只有具备了这两个要素,才能在有限次计算后得出结果

三、二分搜索(找出中间元素比对,二分搜索数组)

> 算法复杂度分析:每执行一次算法的while循环, 待搜索数组的大小减少一半。因此,在最坏情况下,while循环被执行了O(logn) 次。循环体内运算需要O(1) 时间,因此整个算法在最坏情况下的计算时间复杂性为O(logn)

四、快速排序

> 最坏时间复杂度: O(n2). 平均时间复杂度: O(nlogn). 辅助空间: O(n)或O(logn)

第三章

一、动态规划

> 动态规划算法的基本要素最优子结构重叠子问题

> 动态规划算法思想:与分治法类似,其基本思想也是将待求解问题分解成若干个子问题

二、矩阵连乘

> 计算量: A[i:k]的计算量加上A[k+1:j]的计算量,再加上A[i:k]和A[k+1:j] 相乘的计算量

m[i,j] = m[i,k] + m[k+1,j] + p^(i-1)p^kp^j

> 特征:计算A[i:j]的最优次序所包含的计算矩阵子链 A[i:k]和A[k+1:j]的次序也是最优的。矩阵连乘计算次序问题的最优解包含着其子问题的最优解。这种性质称为最优子结构性质。

> 算法复杂度分析:算法matrixChain的主要计算量取决于算法中对r,i和k的3重循环。循环体内的计算量为O(1),而3重循环的总次数为O(n3)。因此算法的计算时间上界为O(n3)。算法所占用的空间显然为O(n2)

三、0-1背包(动态规划)

> 算法复杂度分析: O(nc).改进后算法的计算时间复杂性为O(2^n)

四、最优二叉树

> 定义:

(1)若它的左子树不空,则左子树上所有
   节点的值均小于它的根节点的值;
(2)若它的右子树不空,则右子树上所有
   节点的值均大于它的根节点的值;
(3 它的左、右子树也分别为二叉排序树

> 时间复杂度:O(n2)

五、贪心算法

> 定义:贪心算法总是作出在当前看来最好的选择。也就是说贪心算法并不从整体最优考虑,它所作出的选择只是在某种意义上的局部最优选择

> 性质:贪心选择性质和最优子结构性质。

> 和动态规划的区别:动态规划算法通常以自底向上的方式解各子问题,而贪心算法则通常以自顶向下的方式进行

第四章

一、哈夫曼编码

> 定义:给出现频率高的字符较短的编码,出现频率较低的字符以较长的编码,可以大大缩短总码长。

> 时间复杂度:为O(nlogn) 。

二、 最小生成树

1、Prim算法

> 定义:根据已更新的数据选取最短路径

> 时间复杂度: O(n^2)

2、 Kruskal算法

> 定义:选择最小的边,但是不成圈

> 时间复杂度:当图的边数为e时,Kruskal算法所需的计算时间是O(eloge) 。

第五章

一、回溯法(深度优先搜索策略)

> 解空间:对于问题的一个实例,解向量满足显式约束条件的所有多元组,构成了该实例的一个解空间。


n=3时的0-1背包问题用完全二叉树表示的解空间

> 定义:具有限界函数的深度优先生成法称为回溯法

> 剪枝函数:用约束函数在扩展结点处剪去不满足约束的子树;用限界函数剪去得不到最优解的子树。

二、N后问题

> 定义:在n×n格的棋盘上放置n个皇后,任何2个皇后不放在同一行或同一列或同一斜线上

解向量:(x1, x2, … , xn)
显约束:xi=1,2, … ,n
隐约束:
1)不同列:xixj
2)不处于同一正、反对角线:|i-j||xi-xj|

> 注意:解空间存在4^4种可能的解!必须使用剪枝函数

三、0-1背包(回溯法)

> 解空间:子集树.上界函数:cp+rbestp

四、旅行售货员问题(回溯法)

> 解空间:排列树

> 复杂度分析:整个算法的计算时间复杂性为O(n!)。

五、回溯法效率分析

> 回溯算法的效率在很大程度上依赖于以下因素:

(1)产生x[k]的时间;
(2)满足显约束的x[k]值的个数;
(3)计算约束函数constraint的时间;
(4)计算上界函数bound的时间;
(5)满足约束函数和上界函数约束的所有x[k]的个数。

> 在选择约束函数时通常存在生成结点数与约束函数计算量之间的折衷

第六章

一、分支限界法

> 定义:

(1)求解目标:回溯法的求解目标是找出解空间树中满足约束条件的所有解,而分支限界法的求解目标则是找出满足约束条件的一个解,或是在满足约束条件的解中找出在某种意义下的最优解。

(2)搜索方式的不同:回溯法以深度优先的方式搜索解空间树,而分支限界法则以广度优先或以最小耗费优先的方式搜索解空间树。

> 常见的两种分支限界法:

(1)队列式(FIFO)分支限界法(队列先进先出(FIFO))
(2)优先队列式分支限界法(选取优先级最高的节点成为当前扩展节点)

二、0-1背包(分支限界法)

> 首先,要对输入数据进行预处理,将各物品依其单位重量价值从大到小进行排列。节点的优先级由已装袋的物品价值加上剩下的最大单位重量价值的物品装满剩余容量的价值和。

三、旅行售货员(分支限界法)

> 定义:算法开始时创建一个最小堆,用于表示活结点优先队列。堆中每个结点的子树费用的下界lcost值是优先队列的优先级。接着算法计算出图中每个顶点的最小费用出边并用minout记录。如果所给的有向图中某个顶点没有出边,则该图不可能有回路,算法即告结束。如果每个顶点都有出边,则根据计算出的minout作算法初始化。

第七章

一、随机化算法

> 定义:允许算法在执行过程中随机选择下一个步骤,不做最优决策。复杂度低。

二、随机数(线性同余法)

> 定义:在现实计算机上无法产生真正的随机数,因此在随机化算法中使用的随机数都是一定程度上随机的,即伪随机数。

数值随机化算法(求圆周率、定积分)

double Darts(int n) {//用随机投点法计算π值static RandomNumber dart;int k = 0;for (int i = 1; i <= n; i++) {double x = dart.fRandom();double y = dart.fRandom();if ((x*x + y*y) <= 1) k++;}return 4 * k / double(n);
}double Darts(int n) {//用随机投点法计算定积分static RandomNumber dart;int k = 0;for (int i = 1; i <= n; i++) {double x = dart.fRandom();double y = dart.fRandom();if (y <= f(x)) k++;}return k / double(n);
}

《算法设计与分析》期末复习精简版相关推荐

  1. 算法设计与分析--期末复习重点总结

    目录 一.算法概述 1.算法的定义与特性 2.数学证明法 3.算法复杂性分析方法 4.渐进分析 二.递归与分治策略 1.递归概念 2.递归算法设计示例 3.递归算法分析 4.分治基本思想 5.分治算法 ...

  2. 哈工大2019年春算法设计与分析期末复习

    本文原载于我的博客,地址:https://blog.guoziyang.top/archives/22/ 第二章 算法分析的数学基础 2.1 复杂性函数的阶 阶为复杂性函数的主导项. 如函数 T ( ...

  3. 算法设计与分析期末复习不挂科

    算法的基本概念 算法概念 通俗讲:算法是解决问题的一种方法或一个过程 严格讲:算法是解某一特定问题的一组有穷规则的集合 且满足以下性质: 有限性:算法在执行有限步之后必须终止 确定性:算法的每一个步骤 ...

  4. 山东大学软件学院算法设计与分析期末考试回忆版

    文章目录 一.考试时间 二.考试题目 2.1 第一大题 2.2 第二大题 2.3 第三大题 2.4 第四大题 三.总结 一.考试时间 2021年12月13日上午10:10-12:10 本次考试是山东大 ...

  5. 山东大学 研一 高级算法设计与分析期末考试回忆版

    新鲜出炉

  6. 国科大计算机算法设计与分析陈玉福,中科院陈玉福计算机算法设计与分析期末简答题答案.pdf...

    中科院陈玉福计算机算法设计与分析期末简答题答案 1. 贪心算法和动态规划算法有什么共同点和区别?它们都有那些优势和劣势? 共通点:动态规划和贪心算法都是一种递推算法 ,均有局部最优解来推导全局最优解 ...

  7. 算法设计与分析课程复习笔记11——单源最短路径

    算法设计与分析课程复习笔记11--单源最短路径 单源最短路径 最短路径问题 输入:有权有向图G=(V,E) 路径p={ v 0 , v 1 , . . . , v k v_0, v_1, . . . ...

  8. 2020-2021中科院陈玉福算法设计与分析期末考试

    2020-2021中科院陈玉福算法设计与分析期末考试 中科院沈阳计算所 时文康 于2020.12.31 一.(20 分)简答题 1,陈述算法在最坏时间下的时间复杂度和平均时间复杂度:这两种评估算法复杂 ...

  9. 计算机算法设计与分析(第4版) 王晓东 著 2012.2 笔记(这本书还不错,偏实用、有难度)

    计算机算法设计与分析(第4版) 目录 1 算法概述 2 递归与分治策略 3 动态规划 4 贪心算法 5 回溯法 6 分支限界法 7 随机化算法 8 线性规划与网络流 算法概述 复杂性分析 NP-完全性 ...

  10. 计算机算法设计与分析(第5版)PDF

    <计算机算法设计与分析(第5版)>是2018年电子工业出版社出版的图书,作者是王晓东. 整本书的结构是:先介绍算法设计策略思想,然后从解决经典算法问题来学习,通过实践的方式去学习算法. 网 ...

最新文章

  1. SuperVoxel:PCL中点云的超体素
  2. 微型计算机系统采用三级存储器组织结构,微型计算机原理07级试卷B.doc
  3. golang中的测试命令
  4. 纯javascript 幻灯片
  5. Python3学习笔记2:简易Web爬虫
  6. Tomcat配置虚拟主机的两种方式
  7. 2021年安徽普通高考考试成绩查询,安徽省教育招生考试院:2021年安徽高考查分入口、查分系统...
  8. 使用计算机画画需要什么软件,专业电脑绘画用的是什么工具?
  9. ionic 1页面跳转登录页面后,返回按钮处理
  10. vs2012中对于entity framework的使用
  11. 启发式算法、寻路算法A*算法
  12. 【Linux】linux查看GPU信息
  13. 【爆肝帝,花费3个月整理】金九银十面试季,2020-2021字节跳动所有,软件测试面试题拿走不谢!(附详细答案解析)
  14. 植物大战僵尸的简单修改
  15. JavaScript hash 与 history 实现客户端路由的原理
  16. CF949D Curfew solution
  17. python中调用adb命令来控制手机
  18. Java回炉学习(三)
  19. 办公最常用哪个邮箱?怎么申请商务邮箱?
  20. 电影《T-34坦克》

热门文章

  1. 经营好你的人际关系网
  2. JAVA计算两条直线的交点(判断两条线段相交)
  3. 经典BBS语录100条
  4. 黄巢的菊花,非常喜欢,贴出来共享一下
  5. 跨模态行人重识别研究综述
  6. CVPR2017-如何在无标签数据集上训练模型
  7. phpcms v9 栏目伪静态完全自定义为栏目英文目录名
  8. magic mesh文胸尺码表
  9. 用来判断当前python语句在分支结构中是_【单选题】哪个选项是用来判断当前 Python 语句在分支结构中?...
  10. 新人学习java导论