第 4-13 章习题课

42
第 4-13 第第第第 2007 第 12 第 6 第

description

第 4-13 章习题课. 2007 年 12 月 6 目. 第 4 章 贪心算法. 贪心算法的基本思想 通过一系列小的步骤来建立一个解 , 在每一步根据局部情况选择一个决定使得某些主要的指标能得到优化 . 贪心算法的求解结果 近似解 ( 经常比较理想 ) 最优解 ( 给出严格证明 ). 第 4 章 贪心算法 ( 续 1). 证明贪心算法获得最优解的方法 算法领先 贪心算法的每一步都做得比任何其它算法好 . 区间调度和最短路径 ( 用归纳法来证明每一步都领先 ). 交换论证 - PowerPoint PPT Presentation

Transcript of 第 4-13 章习题课

Page 1: 第 4-13 章习题课

第 4-13 章习题课2007 年 12 月 6 目

Page 2: 第 4-13 章习题课

2

第 4 章 贪心算法 贪心算法的基本思想

通过一系列小的步骤来建立一个解 , 在每一步根据局部情况选择一个决定使得某些主要的指标能得到优化 . 贪心算法的求解结果

近似解 ( 经常比较理想 ) 最优解 ( 给出严格证明 )

Page 3: 第 4-13 章习题课

3

第 4 章 贪心算法 ( 续 1) 证明贪心算法获得最优解的方法

算法领先 贪心算法的每一步都做得比任何其它算法好 . 区间调度和最短路径 ( 用归纳法来证明每一步都领先 ).

交换论证 考虑对这个问题的任何一个最优解 , 逐渐把它转换成由贪心算法找到的解且不损害它的质量 . 最小延迟调度和最小生成树

其它方法 区间划分 ( 调度所有的区间 ): 直接证明不会有区间在结束时没有标签以及没有两个重叠的区间被分给相同的标签 .

Page 4: 第 4-13 章习题课

4

第四章 习题 习题 1:

Yes( 应用 MST 性质 ) 习题 2:

(a) 真 ( 应用 MST 性质 ) (b) 假

s

t

a

1

2/3

2/3

Page 5: 第 4-13 章习题课

5

第四章 习题 ( 续 1) 习题 3:Yes( 算法领先证明 , 归纳法证明 )

证明 : 设贪心算法用的卡车集合 A={A1,A2,…}, 最优算法用的卡车集合 O={O1,O2,…}, 箱子集合 B={B1,B2,…}. Step1: 显然 A1 中最后一个箱子的编号不小于 O1 中最后一个箱子的编号 . Step2: 假设 Ak 中最后一个箱子的编号不小于 Ok 中最后一个箱子的编号 , 则 Ak+1 中最后一个箱子的编号也不会小于 Ok+1 中最后一个箱子的编号 ( 反证法 ). Step3: 归纳证明结束 . Step4: 证明 |O|=|A|( 反证法 ).

k K+1A

O k K+1

Page 6: 第 4-13 章习题课

6

第四章 习题 ( 续 2) 习题 4:

算法 :i=j=1;while (i<=n and j<=m) if(si==s’j){i=i+1; j=j+1; kj=i; } else i=i+1;if(j==m+1) return K1,k2,…km; else return “NO” 时间复杂度 :O(m+n)

1S

S’1 m

n

j

ik1,…km

Page 7: 第 4-13 章习题课

7

第四章 习题 ( 续 3) 证明 ( 算法领先证明 , 归纳法证明 )

设存在一个 S 的子序列 Sl1,Sl2,…Slm 等于 S’, 则算法一定能够找到子序列 Sk1,Sk2,..Skm 且 kj<=lj (1<=j<=m). Step1:j=1 时显然成立 . Step2: 设下标为 j-1 时成立 , 即 kj-1<=lj-1 成立 ,则下标为 j 时也成立 ( 反证法 ). Step3: 归纳证明结束 . 1

Snkj

ljkj-1

lj-1

Page 8: 第 4-13 章习题课

8

第 5 章 分治策略 分治策略的基本思想

Divide Conquer combine 分解易合并易 : 二分查找 , 整数乘法 分解易合并难 : 归并排序 , 计算逆序 , 最邻近点对 分解难合并易 : 快速排序

Page 9: 第 4-13 章习题课

9

第 5 章 分治策略 ( 续 1) 分治策略的适用范围

分治策略只能把多项式阶降为更低的多项式阶 ,而不能把指数阶降为多项式阶 .动态规划可以将某些问题的指数阶降为多项式阶 . 分治策略复杂度的计算公式

T(n)=kT(n/m)+f(n) T(n)=T(a)+T(b)+f(n), a+b<=n

Page 10: 第 4-13 章习题课

10

第 5 章 习题 习题 1:分析:取数据库 A 中的中位数和数据库 B 中的中位数,然后比较两个中位数的大小。不妨假设 B 中的中位数大于 A 中的中位数,则 A 中比其中位数小的数据 (1.. n/2-) 以及 B 中比其中位数大的数据 (n/2++ 1 .. n) 都不可能是两个数据库中的中位数。因此可以想象成将数据库 A 和数据库 B 的大小各自减少 n/2-.

1 n

B

n

A

11n/2 n/2× ×

Page 11: 第 4-13 章习题课

11

第 5 章 习题 ( 续 1) 习题 2分析:求重要的逆序个数与教材中求逆序个数相似 , 其核心思想都是利用归并排序 . 只是本题中合并算法与重要逆序计数算法分开考虑且重要逆序计数算法与教材的算法略有不同 .

1 k k+1 ni j

B

B(i)<2B(j): j=j-1; if(j==k) return N;B(i)>2B(j): N=N+(j-K); i=i-1; if(i==0) return N;

N=0

Page 12: 第 4-13 章习题课

12

第 6 章 动态规划 动态规划的基本思想An algorithm that employs this technique is not recursive

by itself, but the underlying solution of the problem is usually stated in the form of a recursive function. Unlinke the case in divide-and-conquer algorithms, immediate implementation of the recurrence results in identical recursive calls that are executed more than once. For this reason, this technique resorts to evaluating the recurrence in a bottom-up manner, saving intermediate results that are used later to compute the desired solution.

Page 13: 第 4-13 章习题课

13

第 6 章 动态规划 ( 续 1) 动态规划求解问题的基本性质

只存在多项式个子问题 可以容易地从子问题的解计算初始问题的解 在子问题从最小到最大存在一个自然的顺序 ,与一个容易计算的递推式相联系 , 这个递推式允许人们从某些更小的子问题的解来确定一个子问题的解 . 5

4 3

3 2 2 1

2 1

1 0

1 0 1 0

F(n)=F(n-1)+F(n-2)F(0)=F(1)=0

Page 14: 第 4-13 章习题课

14

第 6 章 动态规划 ( 续 2) 动态规划实现

备忘录方法 子问题迭代

一维数组 : 区间调度 , 分段最小二乘 二维数组 :背包问题 , 序列比对 , 最短路径问题

最优值与最优解 动态规划只能找到最优值 ,如果求解问题的最优解还需要增加一些辅助的工作量 .

Page 15: 第 4-13 章习题课

15

第 6 章习题 习题 1

(a) 3-5-4 (b) 3-2-2-4 (c) OPT(i)=max( OPT(i-1), w(i)+OPT(i-2) ) OPT(0)=0, OPT(1)=w(1)

Page 16: 第 4-13 章习题课

16

第 6 章习题 ( 续 1) 习题 2

(a) low(1)=3, low(2)=4; high(1)=5, high(2)=8 (b) OPT(i)=max( h(i)+OPT(i-2), l(i)+OPT(i-1) ) OPT(1)=max( h(i), l(i) ) OPT(0)=0

Page 17: 第 4-13 章习题课

17

第 6 章习题 ( 续 2) 习题 3

(a) (b) OPT(i)=max{OPT(j)+1|(j,i)∈E} if顶点 i 的入度为 0, 则 OPT(i)=0

v1 v2 v3 v4 v5

Page 18: 第 4-13 章习题课

18

第 7 章 网络流 流网络

具有下列特征的有向图 每条边关联一个容量 , 它是一个非负的数 ce( 设为整数 ) 存在单一的源点 s(入度为 0 的顶点 ) 存在单一的汇点 t( 出度为 0 的顶点 )

Page 19: 第 4-13 章习题课

19

第 7 章 网络流 ( 续 1) 流

流的定义 s-t流是一个函数 f, 它把每条边 e映射到一个非负实数 ,值 f(e) 直观上表示由边 e携带的流量 .

流的性质 容量条件 : 每条边的流值大于等于 0 且小于等于该边的容量 . 守恒条件 :进入某个顶点的所有边上的流值之和等于离开这个顶点的所有边上的流值之和 .

Page 20: 第 4-13 章习题课

20

第 7 章 网络流 ( 续 2) 割

割的定义 s-t割是顶点集合 V的一个划分 (A,B), 使得源点 s属于集合 A,汇点 t属于集合 B.

割的容量 割 (A,B) 的容量是从 A 出来的所有边的容量之和 .

流与割 最大流等于最小割 ( 最大流 - 最小割定理 )

Page 21: 第 4-13 章习题课

21

第 7 章 网络流 ( 续 3) 计算最大流算法的三个基本概念

剩余图 增广路径 流网络的割

根据最大流求最小割的方法 根据定理 7.11,首先构造最大流对应的剩余图 ,然后从源点 s开始执行宽度优先搜索或深度优先搜索来确定最小割中的 A 和 B.

Page 22: 第 4-13 章习题课

22

第 7 章 网络流 ( 续 4) 网络流的应用

二分匹配问题 不交路径问题

Page 23: 第 4-13 章习题课

23

第 7 章 网络流习题 习题 1:(a): C(A,B)=2, 其中 A=(s),B=(u,v,t). (b): C(A,B)=4, 其中 A=(s,v),B=(u,t).

s

u

v

t

1

1

1

1

1 s

u

v

t

2

4

4

2

6

Page 24: 第 4-13 章习题课

24

第 7 章 网络流习题 ( 续 1) 习题 2:

(a): 这个流的值为 18, 不是这个图中的最大 (s-t)流 . (b):C(A,B)=21, 其中 A=(s,a),B=(b,c,d,t).

s

a

d

b

10

5

3c t

8 8

10

5

35 5

55

8 810 83

3

Page 25: 第 4-13 章习题课

25

第 7 章 网络流习题 ( 续 2) 习题 3:

(a): 这个流的值为 10, 不是这个图中的最大 (s-t)流 . (b):C(A,B)=11, 其中 A=(s,a,b,c),B=(d,t).

习题 4:否 (图 7.26就是反例 ). 习题 5:否 (如下图所示 )

0

1

2

3 t4s

1

11

1

1

1

Page 26: 第 4-13 章习题课

26

第 8 章 NP与计算的难解性 多项式时间归约

如果能够用多项式个标准的计算步骤加多项式次调用解决问题 Y 的黑盒子来解决 X的任意实例 , 则称 X可以归约到Y(记作X≤pY). 基本的归约策略

等价规约 (独立集和顶点覆盖 ) 归约到更一般的情况 (顶点覆盖归约到集合覆盖 ) 使用“零件”归约 (3-SAT 归约到独立集 )

Page 27: 第 4-13 章习题课

27

第 8 章 NP与计算的难解性 ( 续1) 判定问题

判定问题就是该问题的答案不是“是”就是“否”的问题 . 理论上 , 所有的组合优化问题都可以转化为判定问题 . 有效验证程序

验证程序 B是有两个输入变量 s 和 t 的多项式时间算法 . 存在多项式 p 使得对每一个输入串 s, s∈X当且仅当存在证书 t 使得 |t|≤p(|s|) 且 B(s,t)=Yes.

P问题、 EXP问题和 NP问题 P问题 : 能够在多项式时间内求解的判定问题 . EXP问题 : 能够在指数时间内求解的判定问题 . NP问题 : 能够在多项式时间内得到验证的判定问题 .

Page 28: 第 4-13 章习题课

28

第 8 章 NP与计算的难解性 ( 续2) NP完全问题的定义(1) 问题 X 属于 NP(2) NP中的所有问题都可以归约到 X称这样的 X 是 NP完全问题 P=NP? NP完全问题的证明方法

根据定义证明 (电路可满足性问题就是根据定义证明的第一个 NP完全问题 ) 根据定理 8.14 证明 (如果 Y是一个任意的 NP完全问题 ,X 属于 NP且 Y 归约到 X, 则 X 是 NP完全的 . 这是证明NP完全问题的通用策略 )

Page 29: 第 4-13 章习题课

29

第 8 章 NP与计算的难解性 ( 续3)CIRCUIT-SAT

3-SAT

DIR-HAM-CYCLEINDEPENDENT SET

VERTEX COVER

3-SAT reduces to

INDEPENDENT SET

GRAPH 3-COLOR

HAM-CYCLE

TSP

SUBSET-SUM

SCHEDULINGPLANAR 3-COLOR

SET COVER

Page 30: 第 4-13 章习题课

30

第 8 章 NP与计算的难解性 ( 续4) NP问题和 co-NP问题

NP问题是能够在多项式时间内得到验证的判定问题 . co-NP问题是 NP问题的补问题 . co-NP = NP ? P = co-NP NP ?

Page 31: 第 4-13 章习题课

31

第 8 章 NP与计算的难解性习题 习题 1:

区间调度≤ p顶点覆盖 ? Yes. 顶点覆盖≤ p 区间调度 ? No.

Page 32: 第 4-13 章习题课

32

第 8 章 NP与计算的难解性习题( 续 1) 习题 2:

(1)首先证明兴趣互异的子集是 NP的 . 任给一个自然数 k,可以在多项式时间 内进行验证 . (2) 下面证明独立集≤ p兴趣互异的子集 .

构造一个有向图G,G中的顶点对应客户 ,如果两个客户购买了相同的产品 , 则在它们之间添加一条边 . 如果有向图G中存在 k 个顶点的独立集 , 则说明 k 个客户中任意两个客户都没有买过相同的商品 ;如果存在 K 个客户中任意两个客户都没有买过相同的商品 , 则有向图G中必然存在 k 个顶点的独立集 .

2( )kk mO n C C

RajAlanis

Chelsea

啤酒猫用干草

液体清洁剂

Page 33: 第 4-13 章习题课

33

第 9 章 PSPACE: 一个超出 NP的问题类 PSPACE问题

可以用具有多项式空间复杂度的算法解决的问题 . P=PSPACE? NP=PSPACE? PSPACE完全问题的定义(1) 问题 X属于 PSPACE(2) PAPACE中的任何一个问题 Y 都可归约到问题 X则称问题 X是 PSPACE完全的 . NP-Hard 问题

NP中的所有问题都可以归约到 X,则 X是 NP-Hard 问题。

PSPACE

Co-NPNP

PNPC

Page 34: 第 4-13 章习题课

34

第 9 章 PSPACE: 一个超出 NP的问题类习题 习题 1:( 在多项式时间内可解 )

(1) 首先将QSAT( 量化的 3-SAT) 的实例视为是 CSAT(竞争的 3-SAT) 的实例 , 即第一个玩家控制奇数下标的变量 , 第二个玩家控制偶数下标的变量 . (2) 如果任意子句中都出现奇下标的变量 , 则第一个玩家可以赢 ,当且仅当将所有的奇下标变量设置为 1. (3)如果存在子句中没有出现奇下标的变量 , 则第二个玩家可以赢 ,当且仅当将所有的偶下标变量设置为 0.

Page 35: 第 4-13 章习题课

35

第 10-13 章 NP-Hard 问题求解 NP-Hard 问题的求解策略

求解 NP-Hard 问题的特例 (CH10) 求解 NP-Hard 问题的近似算法 (CH11) 求解 NP-Hard 问题的局部搜索算法 (CH12) 求解 NP-Hard 问题的随机算法 (CH13)

Page 36: 第 4-13 章习题课

36

第 10-13 章 NP-Hard 问题求解( 续 1) NP-Hard 问题的求解策略

求解 NP-Hard 问题的特例 (CH10) 找小的顶点覆盖 在树上 (具有特殊结构 ) 求 NP-Hard 问题 ( 树上的独立集的贪心算法和树上的最大权独立集的动态规划算法 )

求解 NP-Hard 问题的近似算法 (CH11) 求解 NP-Hard 问题的局部搜索算法 (CH12) 求解 NP-Hard 问题的随机算法 (CH13)

Page 37: 第 4-13 章习题课

37

第 10-13 章 NP-Hard 问题求解( 续 2) NP-Hard 问题的求解策略

求解 NP-Hard 问题的特例 (CH10) 求解 NP-Hard 问题的近似算法 (CH11)

贪心算法 (负载均衡问题和中心选址问题 ) 定价法 线性规划和舍入技术

求解 NP-Hard 问题的局部搜索算法 (CH12) 求解 NP-Hard 问题的随机算法 (CH13)

Page 38: 第 4-13 章习题课

38

第 10-13 章 NP-Hard 问题求解( 续 3) NP-Hard 问题的求解策略

求解 NP-Hard 问题的特例 (CH10) 求解 NP-Hard 问题的近似算法 (CH11) 求解 NP-Hard 问题的局部搜索算法 (CH12)

梯度下降法或爬山法 模拟退火算法 禁忌搜索算法

求解 NP-Hard 问题的随机算法 (CH13)

Page 39: 第 4-13 章习题课

39

第 10-13 章 NP-Hard 问题求解( 续 4) NP-Hard 问题的求解策略

求解 NP-Hard 问题的特例 (CH10) 求解 NP-Hard 问题的近似算法 (CH11) 求解 NP-Hard 问题的局部搜索算法 (CH12) 求解 NP-Hard 问题的随机算法 (CH13)

数值概率算法 舍伍德算法 拉斯维加斯算法 蒙特卡罗算法

Page 40: 第 4-13 章习题课

40

第 10 章 扩展易解性的界限习题 习题 1:

任选一个集合 Bi={x1,x2,…xc}For 集合 Bi 中的每一个元素 xi 分别从集合 B1,B2,…Bm, H中除去元素 xi形成一个简化实例并进行递归调用判断该简化实例是否存在大小为 k-1 的击中集 .EndFor如果存在某个简化实例返回“真” , 则算法返回“真” ,否则算法返回“假” .

Page 41: 第 4-13 章习题课

41

第 10 章 扩展易解性的界限习题( 续 1) 时间复杂度分析 :

T(m,k)=cT(m,k-1)+O(cm)=>T(m,k)=O(mck).

H

B1 B2 Bi Bm

h1 h2 hi hk… …

Page 42: 第 4-13 章习题课

42

第 11 章 近似习题 习题 1:

(a): 设集装箱的重量为W={1,4,6,9}, 每辆卡车的载重量为 k=10, 则本题贪心算法共需要 3辆卡车 ,而最优解需要 2辆卡车 . (b): 证明该贪心算法的近似比为 2.设贪心算法的解需要 2q+1(2q 证明更容易 )辆车 ,连续两辆卡车的载重之和一定大于 K,因此W一定大于 qK.最优解至少需要W/K+辆车 , 即至少需要 q+1辆车 ,而不等式 (2q+1)/(q+1)<2 成立 ,因此该贪心算法的近似比为 2.