第一讲:计算复杂性理论
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多项式时间算法的计算时间
100MIPS(million instructions per second) 计算机的情形
问题规模 計算時間
n
10 20 30 40 50 100 1000 10000
nlog2 n
1×10−7 秒
2×10−7 秒 3×10−7 秒 4×10−7 秒 5×10−7 秒 1×10−6秒 1×10 秒
探索空间2 探索空间2---解空间大小 例:桌子上有6根火柴,要求构建出4个三角形。
计算复杂度的影响因素
探索策略的选取
计算复杂度的影响因素
问题本身 P问题 NP问题(NP-hard,NP困难问题) NP完全问题
优化问题的分类( )(根据算法) )(根据算法 优化问题的分类(1)(根据算法) P class problem:
1×10−4秒
−5
3.32×10−7 秒 1×10−6秒 8.64×10−7 秒 4×10−6 秒 1.47×10−6 秒 2.13×10−6秒 9×10−6 秒 1.6×10−5秒
n
2
1×10−5秒 8×10−5秒 2.7×10−4 秒
n
3
n
5
0.0015秒 0.032秒 0.243秒
6.4×10−4秒 1.02秒
n!的Stirling近似公式
n n!= 2πn e
≈
n
1 1 139 1 1+ 12n + 288n2 − 51840n3 + O n4
n
n 2πn e
Big Oh 記法
4 関数1/ n 的定数倍的大小可以忽略
旅行商问题的计算量( ) 旅行商问题的计算量(2)
O(n10) 100 107 126 158 200 251 316 398
平行(并列)計算的场合 平行(并列)計算的场合
0.5 cm 见方小碎片,覆盖地球表面需要 2.0×1019個. 与100MIPS的单个計算機相比,能加速多少? n 100 1,000 . 2n 1014世紀 → 0.85 秒 10284世紀 → 10263世紀
2.0×10-5 5.1×10-3 2.6×100 1.3×103 6.9 ×105 3.5 ×108 1.8 ×1011 9.2×1013 4.7 ×1016 2.4 ×1020
计算量的膨胀(2) 计算量的膨胀
100MIPS (mega instructions per second)
– –
1秒間100万回的計算=1step 用 10-6秒 光速 3.0×1010cm/秒 (10-6秒 行进300m)
计算机速度增加的效果( ) 计算机速度增加的效果(1)
10秒間的計算量? 100MIPS 10倍 100倍 1000倍 n 107 108 109 1010 n2 3千 1万 3万 10万 n3 215 462 1千 2千 2n 23 27 30 33 n! 10 11 12 13 1000倍⇒ 1step 用 10-9秒 ⇒ 10-9秒 光可以行进30cm
根据Stirling公式 以及O()表示法
O( nn )
排序问题的计算量 (1): ):
排序問題:S={a1, a2,..., an},n個整数列, 按数值大小排列 data S 输入 需O(n) 時間; 可能的排列種類数 n!种; 算法中每一个比較,都增加 2倍的情形数 2分树的高度 n!种可能的排列 (比较的次数), log2 (n!)=O(n log n)
有下式成立:
g(n)< cf(n)
计算量的表示法——例 例 计算量的表示法
n2+1000n→O(n2) log n+n3+1000n2 →O(n3) 判断: n! → O(nn)? 10n2 → O(n3)? log n → O(n)? 思考: n是奇数时 1,
g ( n) = 2 n , n是偶数时
集合NP中的問題=NP問題 如果某个NP問題能够求解,则因 所有NP問題都可以经过归结,转 化为该问题,从而可以求解所有 NP問題。 这样的NP問題=NP完全問題 ——集合NP中的最难的问题= NP完全问题
P、 NP、 NP完全的包容关系 、 、 完全的包容关系
NP NP完全
旅行商問題 背包問題 。。。
2.82×10−6 秒 2.5×10−5秒 1.25×10−3秒 6.64×10−6 秒 1×10−4秒 9.97×10−5秒 1×10−2秒
1.33×10−3秒
3.13秒 1.67分
0.01秒 10秒
115 日
31世紀
1秒
2.78時間
指数时间算法的计算时间
100MIPS(million instructions per second) 计算机的情形
計算時間 问题 规模 10 20 30 40 50 100
2.1×10 秒 0.001 秒 1.05×10−2 秒 4.19 秒 10 秒
2
n
−5
n2
2
n
3
n
n!
0.036秒
5.9×10−4 秒
34.9秒
771年
5.61×106宙齢 1.72×1022宙齢 6.42×1038宙齢 1.77×10132宙齢
计算量的膨胀(1) 计算量的膨胀
10行×10列棋盘上米粒的数量 (第1格内放1粒米,以后每格顺次增加1倍……)
格序号 米粒数 重量 (kg)
1 9 18 27 36 45 54 63 72 81
1 256 131072 67108864 34359738368 17592186044416 9007199254740992 4611686018427387904 2361183241434822606848 1208925819614629174706176 2.4×108亿吨
L m
计算复杂度的影响因素
简化模型:模型2
计算复杂度的影响因素
简化模型:模型3。
计算复杂度的影响因素
建模假设 例:高空抛球的运动轨迹。 ----抛物线模型 假设1.没有空气阻力; 假设2.地面是平面。 ----椭圆模型
计算复杂度的影响因素
探索空间1 探索空间1---解的近似度、满意度
例:0—10之间的整数解:1-9共9个可行解(一维) 0—10之间的实数解:精确到小数点后6位 共有107个可行解(一维); 107n个可行解(n维)
使用2次天秤,就可以鉴别出假币.
1 2 3
4 7 8 9
5
6
右边軽
左边軽
平衡
1 2 3 中有偽币 1
左边軽
7 2 3
平衡 右边軽
8
9
4
5
6
中有偽币
中有偽币
1
3
2
7
8
9
4
5
6
计算量的表示法: 计算量的表示法 上界值表示法
O記号:(Big O Notation)
•定義: O(f(n)) 读作order f(n), 或阶 f(n) 即: g(n)=O(f(n)) –表示对于任意定数c 和 m,以及对所有 n>m,
大多数研究者认可 的包容关系
优化技术与方法
計算量(1) 計算量
+,-,×,÷ 比較:≠,≤,≥,<,> 5种基本演算都是用1step 可以实现. 実際上,×比+多占用時間. 「四舍五入」不算基本演算.
計算量(2) 計算量
{a1, a2,..., an}:n個整数 Q1. 求和(1): a1+a2+・・・+an. 1 + +a n-1 steps → O(n)算法. Q2. 求和(2): (1) 2×a1+・・・+ 2×an , 2n-1 steps→ O(n)算法. (2) 2×(a1+・・・+an) , n steps→ O(n)算法.
O()?
优化问题的规模
表示优化問題大小的参数 Input Size 例如: 旅行商问题:都市的个数; 背包问题:物品的个数 注:参数的个数并不仅限于1个
多项式时间算法与指数时间算法
指数時間算法 = 用问题规模的指数函数来表示計算時間的算法 非有效算法的代名詞 多項式時間算法 = 能用问题规模的多项式函数来表示計算時間的算法 高效率算法的代名詞
n! 10141世紀 → 10120世紀 102551世紀 → 102530世紀
问题与算法
每个問題都可能有多个算法存在. 每个算法的计算量(速度)都不同。 例: 赝品金币問題: 问题:9個外观完全一样的金币.,有一个是假的 (重量轻). 提问:用天秤来鉴别真伪,天秤需要使用几次?
贋品金币問題算法 問題算法
x>y? > no
yes
排序问题计算量( ) 排序问题计算量(2) data S 输入 時間(或赋值时间):O(n)
比较时间: O(n log n)
上位 取整
总计算时间的复杂性: O(n log n)
计算量的确定
例:背包问题的贪婪算法(greedy algorithm) 的计算量确定
计算的复杂度
计算机速度增加的效果( ) 计算机速度增加的效果(2)
计算速度
1 2 10 100 1000 10000
100000 1000000
O(2n) 100 10பைடு நூலகம் 103 107 110 113 117 120
1秒可以求解问题的规模 O(n) O(n2) O(n5) 100 100 100 200 141 115 1000 316 158 10000 1000 251 100000 3162 398 1000000 10000 631 10000000 31623 1000 100000000 100000 1585
n n n2 n3 2n n!
10 100 1,000 10,000 10-5秒 10-4秒 10-3秒 0.01秒 10-4秒 0.01秒 1秒 100秒 0.001秒 1秒 16.6分 277時間 0.001秒 1014世紀 10284世紀 0.036秒 10141世紀 102551世紀 宇龄: 宇宙的年齢 1.5×108 世紀 (150億年)
2.68時間
23.8 日
3.86世紀
3.05時間
204 日
893年
130 日
26798 宙齢
0.015宙齢
2.68×108宙齢 1.09×1022宙齢
1宙齢=150億年
旅行商问题的计算量( ) 旅行商问题的计算量(1)
n個都市訪問的可能的巡回路线:
(n −1)×(n − 2)×L×3×2×1= (n −1)!
尚未确信能否用多項式時間算法求解的问题的 集合称为NP (non-deterministic polynomial)问题 某一个问题不属于NP问题的証明 如能够找到一个多項式時間算法 (簡単) 某一个问题属于NP问题的証明 可以归结为某一类既知的NP类问题(现阶段7类))
优化问题的分类( )(根据算法) )(根据算法 优化问题的分类(3)(根据算法) NP-complete problem:
計算量(3) 計算量
Q3. 計算:a1b1+・・・+anbn. 2n-1 steps. Q4. 2个n×n阶矩阵相乘. n2(2n-1) steps( n2(n+n-1)).
計算量(4) 計算量
Q5. {a1, a2,..., an}:n個整数 求其和为最大的部分集合. 所有的部分集合的和进行比較 2n (n-1) +(2n-1) → O(n2n)算法.
时间复杂度: 计算量:计算各基本操作的实行回数 (time complexity) 空间复杂度 各计算时点内存中保持数据个数的最大值 (space complexity)
两者的总称: 两者的总称:
计算的复杂度
计算复杂度的影响因素
简化模型 例:
R T 1/2 r
3
计算复杂度的影响因素
简化模型:模型1.
第一讲: 计算复杂性理论 (Complexity Theory) 计算量的概念 计算量的表示 算法与计算量 计算复杂性 影响计算复杂性的因素
优化问题及其计算的复杂性 例:
1 2 3 4 5 3 4 5 6 7 9 3
0 1 2
组合优化问题: 組合数虽然有限,但因其数量太多,寻找最优解很难。 背包问题(knapsack problem): n个物品, 2n实行可能解。 旅行商问题(traveling salesperson problem): 都市n个, (n‐1)!实行可能解。 用有限時間可以求解,但计算时间太长,成本太高
能用多項式時間算法求解的问题的 集合称为P (polynomial)问题 某一个问题属于P问题的証明 如能够找到一个多項式時間算法 (簡単) 某一个问题不属于P问题的証明 不存在?没找到?(困难)
优化问题的分类( )(根据算法) )(根据算法 优化问题的分类(2)(根据算法) NP class problem: