算法分析与设计总复习
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
28 of 158
活动安排: 问题描述
个活动集E={1,2,…,n}使用同一资 有n个活动集 个活动集 使用同一资 源,而同一时间内同一资源只能由一 个活动使用。 个活动使用。每个活动的使用时间为 [si, fi) i=1,…,n,si为开始时间,fi为 i=1,…,n, 为开始时间, 结束时间, )不相交 结束时间,若[si, fi) 与[sj, fj)不相交 称活动i和活动 是相容的。 和活动j是相容的 称活动 和活动 是相容的。 问题:选出最大的相容活动子集合。 问题:选出最大的相容活动子集合。
2011-3-22
2 3 4 5 6 3 0 5 3 5 5 6 7 8 9 a5 a6 a7 a8 a9 a10 a11
7 8 9 6 8 8 10 11 12
10 2 13
11 12 14
相容活动: 相容活动:{a3, a9, a11},
{a1,a4,a8,a11}, {a2,a4,a9,a11}
time a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 a11 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
32 of 158
有限期的任务安排问题
用贪心法求解有限期的任务安排问题:假 用贪心法求解有限期的任务安排问题: 设只能在同一台机器上加工n个任务 个任务, 设只能在同一台机器上加工 个任务,每 个任务i完成时间均是一个单位时间 完成时间均是一个单位时间。 个任务 完成时间均是一个单位时间。又 设每个任务i都有一个完成期限 都有一个完成期限d 设每个任务 都有一个完成期限 i>0,当且 当且 仅当任务i在它的期限截止以前被完成时 在它的期限截止以前被完成时, 仅当任务 在它的期限截止以前被完成时, 任务i才能获得 的效益, 才能获得p 任务 才能获得 i的效益,每个任务的期限 从整个工序的开工开始计时, 从整个工序的开工开始计时,问应如何安 排加工顺序,才能获得最大效益? 排加工顺序,才能获得最大效益? n=6,(p1,p2,p3,p4,p5,p6)=(5,25,20,30,10,15),( d1,d2,d3,d4,d5,d6)=(1,5,2,3,3,2)
2011-3-22 27 of 158
n=3, M=20 , (v1, v2, v3) =(25,24,15) (w1 , w2 , w3)=(18,15,10) 按vi/wi的非增次序将物品依次放入背 包 (x1,x2,x3) Σwixi Σvixi 20 31.5 (0,1,1/2)
2011-3-22
2011-3-22 20 of 158
例 算法A 例:算法 1,A2的时间复杂性分别是 n,2n,设100µs是一个单位时间,求 是一个单位时间, 设 是一个单位时间 A1,A2在1s内能处理的问题规模。 内能处理的问题规模。 内能处理的问题规模 已知lg2=0.301 已知 T(n) = n T(n)*10-4 = 1 即 n*10-4 = 1 所以 n = 104
2011-3-22 4 of 158
P类问题
如果对某个判定问题Π 如果对某个判定问题Π,存在着一 个非负整数k,对输入规模为n的实 个非负整数 ,对输入规模为 的实 能够以O(nk)的时间运行一个确 例,能够以 的时间运行一个确 定性的算法,得到yes或no的答案, 的答案, 定性的算法,得到 或 的答案 则该判定问题Π是一个P类判定问题 类判定问题。 则该判定问题Π是一个 类判定问题。 P类问题:多项式(polynomial)时间
2011-3-22
29 of 158
贪心策略 将各活动按结束时间 排序f ≤…≤f 排序 1≤f2≤…≤ n,先选出活动 1,然后按活动编好从小到大的次 , 序依次选择与当前活动相容的活动。 序依次选择与当前活动相容的活动。
注:这种策略使剩余的可安排 时间极大化, 时间极大化,以便于安排尽可 能多的相容活动。 能多的相容活动。
2011-3-22 6 of 158
NP类问题举例:哈密顿回路问题
1.非确定(猜测)阶段 2.确定(验证)阶段 首先判断猜测阶段所产生的输出是否 具有正确形式。 若具有正确形式,则继续检查是否是 问题的解。
2011-3-22 7 of 158
P类问题:可以用多项式时间的确定性 类问题: 类问题 算法来进行判定或求解; 算法来进行判定或求解; NP类问题:可以用多项式时间的确定 类问题: 类问题 性算法来检查和验证在推测阶段产生 的答案。 的答案。
最优化证明( 最优化证明(略) 算法正确性证明
2011-3-22
Biblioteka Baidu
也就是贪心
30 of 158
void ActivitySelection(int n,s[],f[], bool a[])
选择
{//f[]已排序,a[]记录选择的活动,即a[i]=true表示活动 已 已排序, 记录选择的活动 记录选择的活动, 表示活动i已 已排序 表示活动 a[1]=true; int j=1; for(int i=2; i<=n; i++) if(s[i]>=f[j]) { a[i]=true; j=i;} else a[i]=false; } T(n)=O(nlogn) {
2011-3-22 5 of 158
NP类问题
NP类问题:非多项式 (non polynomial)时间 NP类问题:非确定的多项式时间 (nondeterministic polynomial-time) 存在以多项式时间运行的非确定性算法。 1.非确定(猜测)阶段 非确定性算法 2.确定(验证)阶段
2011-3-22
24 of 158
算法设计的基本方法
贪心法(贪婪法)
背包问题
已知一个容量大小为M重量的背包和 种 已知一个容量大小为 重量的背包和n种 重量的背包和 物品,物品i的重量为 假定物品 的重量为w 假定物品i的一部 物品,物品 的重量为 i,假定物品 的一部 放入背包会得到v 这么大的收益, 分xi放入背包会得到 ixi这么大的收益, 这里,0≤xi≤1,vi>0。采用怎样的装包方 这里, ≤1, >0。 法才会使装入背包的物品总效益最大? 法才会使装入背包的物品总效益最大? 例:考虑以下情况下的背包问题 n=3, M=20 , (v1, v2, v3)=(25,24,15) (w1 , w2 , w3)=(18,15,10)
2011-3-22 3 of 158
标准复杂性函数的比较
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
多项式时间阶
指数时间阶
注意:1)不能划等号 2)以下若无特殊声明, 注意: ) )以下若无特殊声明, log是以 为底的对数 是以2为底的对数 是以 3)上式只有在 较大的时候成立 )上式只有在n较大的时候成立 O(1)的含义? 的含义? 的含义 计算时间由一个常数(零次多项式) 计算时间由一个常数(零次多项式)来限界
2011-3-22 21 of 158
递归方程及其求解
特征方程 xk-a1xk-1-a2xk-2-…-ak=0 特征方程无重根: 如果递归关系的k 特征方程无重根: 如果递归关系的 个特征根q 互不相等, 个特征根 1,q2,…,qk互不相等,则 T(n) =A1q1n+ A2q2n +…+Akqkn是递归 关系的通解。其中A 关系的通解。其中 1,A2,…Ak为任意 常数。 常数。
NP完全
NP
P
2011-3-22
10 of 158
NP完全(NPC)问题举例
SAT问题(Boolean Satisfiability Problem) 旅行商问题(Traveling Salesman Problem) 0-1背包问题( 0-1 Knapsack Problem) 子集和问题(Sum of Subset Problem) 哈密顿回路问题(Hamiltonian Cycle Problem)
符号 一、符号说明 1.取整函数 . x :小于等于 的最大整数 小于等于x的最大整数 x :大于等于 的最小整数 大于等于x 性质 x-1 < x ≤ x ≤ x < x+1 2. 对数
2011-3-22 16 of 158
符号
二、阶乘
n n 1 n! = 2πn ( ) (1 + Θ( )) e n n! = o(nn)
2011-3-22
8 of 158
P类问题是NP类问题的一个子集合 尚无法证明: P=NP还是P是NP的真子集? NP完全问题:除非P=NP,否则不可 能找到多项式时间的确定性算法的一 类问题
2011-3-22 9 of 158
尽管理论上没有证明,但大量研究表明, P似乎不等于NP,所以,一旦一个问题 被证明是NP完全的,则基本可以断定, 它不可能在多项式时间内求解
2011-3-22
11 of 158
第一章 绪言 一、算法设计与分析的研究对象 非数值问题 二、什么是算法 用欧几里德(Euclid)算法求最大公因子 用欧几里德 算法求最大公因子 正整数m,n 输入 正整数 输出 m和n的最大公因子 和 的最大公因子
2011-3-22
12 of 158
S1 求余数 除以 令r是所得的余数,转 求余数:m除以 除以n,令 是所得的余数 是所得的余数, S2 S2 判断余数 若r=0,则输出 的当前值,算 判断余数:若 则输出n的当前值 则输出 的当前值, 法结束,否则转S3 法结束,否则转 S3 代替 代替:m←n,n←r,转S1 转 三、算法的五个特征 1)有穷性 2)确定性 ) ) 3)输入 4)输出 5)可行性 ) ) ) 例如: 例如:当m=0.7 n=0.35时,执行欧几里 时 德算法, 德算法,请讨论其可行性
2011-3-22
}
31 of 158
活动安排: 计算示例
11个活动已按结束时间排序,用贪心算法求解: 11个活动已按结束时间排序,用贪心算法求解: 个活动已按结束时间排序
i 1 start_timei 1 finish_timei 4 time a1 a2 a3 a4 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
2011-3-22
19 of 158
指数时间 一个算法的时间复杂性如果是O(2n),则称 , 一个算法的时间复杂性如果是 此算法需要指数时间。 此算法需要指数时间。 多项式时间 一个算法的时间复杂性如果是O(nk)(k为有 一个算法的时间复杂性如果是 为有 理数),则称此算法需要多项式时间。 ),则称此算法需要多项式时间 理数),则称此算法需要多项式时间。 有效算法 以多项式时间为限界的算法称为有效算法。 以多项式时间为限界的算法称为有效算法。
n! = ω(2n) log n! = Θ(n log n)
2011-3-22
17 of 158
符号
三、求和 等比级数的求和公式
−1 ∑ x = x −1 k =0
n k
x
n +1
2011-3-22
18 of 158
O、o、Ω、ω、Θ第二种理解方法
求复杂性函数阶的极限方法
f ( n) =s 若 lim n →∞ g ( n) 当s ≠ 0时, f (n)和g (n)同阶, f = θ ( g ); 说明 则 当s = 0时, f (n)比g (n)的阶低, f = O( g ); 说明 则 当s=∞时, f (n)比g (n)的阶高, f = Ω( g ); 说明 则
2011-3-22 13 of 158
四、评价算法的标准 算法执行的时间短(时间复杂性) 1)算法执行的时间短(时间复杂性) 算法需要的存储空间小(空间复杂性) 2)算法需要的存储空间小(空间复杂性) 3)正确性 4)可读性 5)最优性 6)精确性
2011-3-22 14 of 158
算法的复杂性
算法分析与设计总复习
计算机学院 林永钢
绪言
标准复杂性函数的比较
O(1)<O(logn)<O(n)<O(nlogn)<O(n2)<O(n3)<O(2n)<O(n!)<O(nn)
多项式时间阶
指数时间阶
一个算法的时间复杂性如果是O(n )(k为有 一个算法的时间复杂性如果是O(nk)(k为有 理数),则称此算法需要多项式时间。 ),则称此算法需要多项式时间 理数),则称此算法需要多项式时间。 有效算法 以多项式时间为限界的算法称为有效算法
2011-3-22
23 of 158
求递归关系T(n) = 5T(n–1) –6T(n–2) (n≥2) 例 求递归关系 满足初始条件T(0) =0, T(1) =1的解 满足初始条件 的解 解 此递归关系的特征方程为 x2–5x+6=0 即(x–2)(x–3) =0 所以,特征根为x 所以,特征根为 1= 2, x2=3 因此递归关系的通解为T(n) = A12n+A23n 因此递归关系的通解为