《算法基础》复习提纲

  • 格式:doc
  • 大小:53.00 KB
  • 文档页数:5

《算法基础》复习提纲

1 引言(ch1)

1.什么是算法及其特征

2.问题实例和问题规模

2 算法初步(ch2)

1.插入排序算法

2.算法复杂性及其度量

(1)时间复杂性和空间复杂性;

(2)最坏、最好和平均情形复杂性;

3.插入排序的最坏和平均时间

4.归并排序算法及其时间复杂性

3函数增长率(ch3)

1.渐近记号O、Ω、θ的定义及其使用

2.标准复杂性函数及其大小关系

3.和式界的证明方法

4 递归关系式(ch4)

1.替换法

(1)猜测解数学归纳法证明;

(2)变量变换法;

2.迭代法

(1)展开法;

(2)递归树法;

3.主定理

5 概率分析(ch5)

1..序列随机排列的两种方法及其复杂性 6 堆排序(ch6)

1堆的概念和存储结构

2.堆的性质和种类

3.堆的操作:建堆;整堆;

4.堆排序算法和时间复杂性

5.优先队列及其维护操作

7 快速排序(ch7)

1.快速排序算法及其最好、最坏时间和平均时间

2.随机快速排序算法及其期望时间

8 线性时间排序(ch8)

1.基于比较的排序算法下界:Ω(nlogn)

2.计数排序适应的排序对象、算法和时间

3.基数排序适应的排序对象、算法和时间

4.桶排序适应的排序对象、算法和时间

9 中位数和顺序统计(ch9)

1.最大和最小值的求解方法

2.期望时间为线性的选择算法

3.最坏时间为线性的选择算法及其时间分析

10 红黑树(ch13)

1.红黑树的定义和节点结构

2.黑高概念

3.一棵n个内点的红黑树的高度至多是2log(n+1)

4.左旋、右旋算法

5.插入算法、时间、至多使用2次旋转

6.删除算法、时间、至多使用3次旋转

11 数据结构的扩张(ch14)

1.动态顺序统计:

扩展红黑树,支持①选择问题(给定Rank求相应的元素),②Rank问题(求元素x在集合中的Rank) (1)节点结构的扩展;

(2)选择问题的算法;

(3) Rank问题的算法;

(4)维护树的成本分析;

2.如何扩张一个数据结构:扩张的步骤;扩张红黑树的定理

3.区间树的扩张和查找算法

12 递归与分治法

1. 递归设计技术

2. 递归程序的非递归化

3. 算法设计

(1) 最近点对; (2) 生成全排列;

(3) 大整数乘法; (4) Stranssen矩阵乘法;

13 动态规划(ch15)

1.方法的基本思想和基本步骤

2.动态规划和分治法求解问题的区别

3.最优性原理及其问题满足最优性原理的证明方法

4.算法设计

(1) 多段图规划; (2) 矩阵链乘法;

(3) 最大子段和; (4) 最长公共子序列;

(5) 0-1问题求解;

14 贪心算法(ch16)

1.方法的基本思想和基本步骤

2.贪心算法的正确性保证:满足贪心选择性质

3.贪心算法与动态规划的比较

4.两种背包问题的最优性分析:最优子结构性质和贪心选择性质

5.算法设计

(1)小数背包; (2) 活动安排;

(3)找钱问题; (4) 最优装载问题;

(5)单源最短路径;

15 回溯法

1.方法的基本思想和基本步骤

2.回溯法是一种深度遍历的搜索

3.术语: 三种搜索空间, 活结点, 死结点, 扩展结点, 开始结点, 终端结点

4.两种解空间树和相应的算法框架 5.算法设计:

(1) n后问题; (2) 0-1背包;

(3) 排列生成问题; (4) TSP问题;

(5) 符号三角形问题; (6) 图的m着色问题;

16 分支限界法

1方法的基本思想和基本步骤

2.与回溯法的区别

3.活结点的两种扩展方式

4.0-1背包问题的搜索: FIFO队列和优先队列

5.算法设计

(1)0-1背包问题; (2)装载问题

(3)单源最短路径问题;

1.

算法基础 考试题型

一、填空题 (选择题)

1. 给定一个由11个活动组成的活动集合,各个活动的起始时间和结束时间如下表所示,则该活动集合中最大兼容活动子集的元素个数为 ;

i 1 2 3 4 5

6 7 8 9 10

11

si 1 3

0 5 3 5 6 8 8 2

12

fi 4 5 6 7 8 9 10 11 12 13

14

2. 任意一个比较排序算法在最坏情况下都需要做 次比较。由于堆排序和合并排序的运行时间上界是 ,所以它们都是渐近最优的比较排序算法;

3. 分治法是一种常用的算法设计策略,包括 、 、 三个步骤。基于分治法设计得到的两个n位大整数的乘法运算的算法运算时间为 ;

4. 基数排序算法是一种按位排序算法,它按 进行排序,并且要求按位排序算法是稳定的。给定n个d位数,每一个数位可以取k种可能的值,则基数排序算法能以 的时间正确地对这些数进行排序;

5. 有4个算法的时间复杂度分别为O(n2)、O(nlgn)、O(nn)、O(n),则它们之间的大小关系为 ;

6. 可以利用动态规划法求解的问题必须满足两个性质:

和 。

二、简答题(25分)

1. 对于0-1背包问题和小数背包问题,什么问题可以用贪心法求解?其贪心策略是什么?

2. 计数排序算法的输入需要满足什么条件?桶排序算法的输入需要满足什么条件呢?它们的时间复杂度是多少?

3. 如下图所示,给定一棵二叉查找树,请:画出对结点x进行左旋操作得到的新二叉查找树

三、计算证明题

1. 求出下面各题运行时间T(n)的渐近阶:

nnTnT)2/(4)(

四、综合题

1. 设X[1..n]和Y[1..n]为两个数组,每个都包含n个已排好序的数。给出一个求数组X和Y中所有2n个元素的中位数的、O(lgn)时间的算法。

2. 给定一个数组A = <5, 1, 3, 2, 16, 10, 12, 15, 9, 8>,

(1) 请画出该数组的二叉树表示形式;

(2) 利用建堆算法BUILD-MAX-HEAP把数组A造成一个最大堆,其时间复杂度多大?请画出最大堆的二叉树表示形式;

(3) 结点10在大根堆中的高度是多少?

x

y 11

9 18

14

12 17 19

22

20