计算复杂性——第七章

时间复杂性

问题:一个单带图灵机 M 1 M_1 M1多少时间能够判决一个输入是否满足语言 A = { 0 k 1 k ∣ k ≥ 0 } A=\{0^k1^k|k\geq0\} A={0k1kk0}

一种语言:可以看作一类判决问题(其他问题可以转化为判决问题)

Solution 1:(单带图灵机)

  1. 从左到右扫描,如果0出现在1的右边,则拒绝该输入为语言 A A A
  2. 循环步骤1,直至扫描完毕,仍无法判决。
  3. 继续扫描,每遇到一个0就相应删除一个1
  4. 如果最终0和1都被删除,则接受该输入为语言 A A A,否则拒绝该输入为语言 A A A

上述方案的时间复杂度
我们用 n n n表示输入的长度
Note:在渐近分析中,我们只考虑表达式的最高阶项作为算法的运行时间,而忽略了该项的系数和任何低阶项
O O O表示小于等于, o o o表示严格小于
T I M E ( t ( n ) ) TIME(t(n)) TIME(t(n))表示图灵机能够在 O ( t ( n ) ) O(t(n)) O(t(n))时间内可判决的语言(问题)集合。
上述方案的瓶颈在步骤3,复杂度为 O ( n 2 ) O(n^2) O(n2)

Solution 2:(单带图灵机)

  1. 从左到右扫描,如果0出现在1的右边,则拒绝该输入为语言 A A A
  2. 循环步骤1,直至扫描完毕,如仍无法判决,执行步骤3.4。
    1. 从左至右,检查1和0的总数。如果为奇数则拒绝该输入为语言 A A A,如果为偶数则进行步骤4.
    2. 每隔一个0删除一个,每隔一个1删除一个
  3. 经过上述循环后,如果没有0或1在带子上

上述方案的时间复杂度
T I M E ( n l o g n ) TIME(nlogn) TIME(nlogn),步骤4规模每次以2倍的速度减少,每次扫描时间为 O ( n ) O(n) O(n),因此是 ( n l o g n ) (nlogn) (nlogn)

Solution 3:(双带图灵机)

  1. 从左到右扫描,如果0出现在1的右边,则拒绝该输入为语言 A A A
  2. 将带子1中的0拷贝到带子2中,然后从带子1中的第一个1开始,带子2从第一个0开始。
  3. 每读带子1中一个1,则删除带子2中一个0。
  4. 重复步骤3的操作,最后如果带子1中的1和带子2中的0同时不存在,则接受该输入为语言 A A A,否则拒绝该输入为语言 A A A

上述方案的时间复杂度 O ( n ) O(n) O(n)

计算模型的选择如何影响语言的计算复杂性

多带图灵机

  1. 每个 t ( n ) t(n) t(n)时间的多带图灵机有一个等效的 O ( t 2 ( n ) ) O(t^2(n)) O(t2(n))的单带图灵机(复杂度至多不超过 t 2 ( n ) t^2(n) t2(n)
  2. 扩展:所有确定图灵机都是多项式等价的

非确定图灵机

  1. 非确定性图灵机的复杂度按最大运行时间分支对应的复杂度来定义
  2. 每个 t ( n ) t(n) t(n)时间的非确定图灵机有一个等效的 2 O ( t ( n ) ) 2^{O(t(n))} 2O(t(n))的确定单带图灵机(复杂度至多不超过 2 O ( t ( n ) ) 2^{O(t(n))} 2O(t(n))

经证明:在量子计算机下,RSA密码系统可以在多项式时间解决

P问题:多项式时间可判决

P是在确定性单带图灵机上可以在多项式时间内确定的语言(问题)类别,确定性多带图灵机可以多项式等价于确定性单带图灵机。
如:
1. 路径问题:有向图中是否存在一条从 s s s t t t的路径。判定性问题
在这里插入图片描述
从s到t进行深度优先搜索(用栈模拟),广度优先搜索(用队列模拟,出队,标记,扩展,入队)
2. 互质问题:两个数是否是互质的
3. 合数问题:判断一个数是否是合数

结论:每种上下文无关的语言都可以在多项式时间判定,即上下文无关语言属于 P P P

NP问题:多项式时间可验证

1. 哈密尔顿路问题:有向图中是否存在经过每个顶点恰好一次的路径(不是哈密尔顿圈不过实际等效,可以不走完所有的边)

找到一个证据 c c c即可
非确定图灵机在多项式时间内确定哈密尔顿问题:
在这里插入图片描述
N T I M E ( t ( n ) ) NTIME(t(n)) NTIME(t(n)):表示非确定图灵机在 O ( t ( n ) ) O(t(n)) O(t(n))时间内可以判定的语言(问题)集合
2.团问题:确定图中是否包含指定大小 k k k的集团
3. 子集和问题:集合中是否存在一个子集,该子集内所有元素之和为 t t t

NP问题一定能在指数时间内判定:
在这里插入图片描述

co-NP问题:complement,由NP问题的补问题组成

co-NP问题仍可能为P问题
验证某问题不存在似乎比验证其存在更困难,有可能难度是一样的,比如P问题
1. 哈密尔顿路的补问题:有向图中是否不存在经过每个顶点恰好一次的路径
2. 团问题的补问题
3. 子集和的补问题

NPC问题:NP中最难的一类问题

尽管我们没有证明 P P P是否等于 N P NP NP,但是我们仍相信 P P P是不等于 N P NP NP的,因此我们一旦将一个问题归为NPC问题,那么我们暂且认为该问题没有多项式解法

1. SAT问题:测试布尔公式是否可满足
→ \rightarrow :可以看作电路中的≤符号,满足则为1,否则为0
↔ \leftrightarrow :可以看作两个逻辑同时满足,即相当于 = = =符号

规约: 如果能将 A A A规约到 B B B,则 B B B问题更难,可以用解决 B B B问题的方法解决A问题。
多项式规约: 如果能将 A A A多项式规约到 B B B,记作 A ≤ p B A\leq_p B ApB,则多项式次调用问题 B B B的解决方法就可以解决问题 A A A w ∈ A ↔ f ( w ) ∈ B w\in A \leftrightarrow f(w)\in B wAf(w)B 描述了实例转化的过程。
证明一个问题是NPC问题: 先证明该问题是NP问题,然后将一个现有的NPC问题规约到该问题,因为NPC是最难的了,所以它也是最难的问题,即它是NPC问题。

2. 3SAT问题:
文字,句子,合取范式(CNF),可以多项式时间规约到3SAT问题
在这里插入图片描述
团内互连说明这几种状态可以保证不冲突的条件下,使每一部分都为真。

将SAT多项式时间规约到3SAT,并证明3SAT是NP问题,则可以说明3SAT是NPC的

3. 独立集问题:
是否存在一个大小为 k k k的顶点集合,集合中任意两个顶点之间在原图中不存在边

4.顶点覆盖问题:

是否存在一个大小为 k k k的顶点集合,集合所有顶点覆盖原图中所有的边

举个例子:
在这里插入图片描述

  • 最大独立集:由3个节点构成,249
  • 最大团:由4个节点构成,5689
  • 最小顶点覆盖:与最大独立集互补,由6个节点构成,135678

5. 最大割问题:
无向图中,是否存在一个大小至少为 k k k,使集合分离成两部分

6. 哈密尔顿回路: 图中是否存在一个回路,恰好经过每个顶点一次。
Note: 欧拉回路:图中是否存在一个回路,恰好经过每条边一次。欧拉回路问题是P问题,连通图中,每个顶点的出度和入度相等就存在欧拉回路

7. 着色问题: 相邻节点不能着同样的颜色
如果图中存在一个 k k k团,则要对该图着色至少要 k k k种颜色

8.旅行商问题: 问题基于完全图,找到一个回路,使访问所有顶点的总费用最少

4.其他NPC问题:
在这里插入图片描述

NPH问题

所有NPC问题都可以规约到该问题,但是不要求该问题是NP问题。

庞加莱猜想:任一单连通(没有洞)的、封闭的三维流形与三维球面同胚。
形象理解:如果绳索能收回地球,则宇宙是球形
费马最后定理(费马猜想):当 n > 2 n>2 n>2时,不存在三个正整数满足 a n + b n = c n a^n+b^n=c^n an+bn=cn

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值