计算理论导引 8 空间复杂性
计算理论导引习题答案

什么是时间复杂度?请举例说 明。
时间复杂度是评价算法执行时 间快慢的一个指标,通常用大O 表示法来表示。例如,对于一 个简单的顺序查找算法,其时 间复杂度为O(n),表示随着问 题规模n的增加,算法的执行时 间线性增长。
计算模型习题答案详解
习题1
解释图灵机的基本原理和工作过程。
答案
图灵机是一种理论上的计算模型,由一条无限长的纸带和一个读写头组成。读写头可以读取、写入和移动纸带上 的符号,根据当前状态和读取的符号来决定下一步的动作和状态转移。图灵机的工作过程可以模拟任何计算机程 序的执行过程。
RAM模型的扩展与优化
包括引入并行计算、分布式计算等概念,以 提高RAM模型的计算能力和效率。
其他计算模型
量子计算模型
利用量子力学原理进行计算的模型,具有在某些特定 问题上比传统计算机更高的计算效率。
生物计算模型
模拟生物体内信息处理过程的计算模型,如神经网络、 基因算法等。
光计算模型
利用光学原理进行计算的模型,具有高速并行处理和 低能耗等优点。
形式语言与自动机习题答案详解
习题1
解释什么是形式语言,并给出其定义和性质 。
答案
形式语言是பைடு நூலகம்于描述计算机程序的语法和语 义的一种数学工具。它由一组符号和一组规 则组成,可以表示各种不同类型的数据结构 和算法。形式语言具有确定性、封闭性和可 计算性等性质,这些性质使得我们可以对计
算机程序进行精确的描述和分析。
Python语言基础 掌握Python语言的基本语法、数 据类型、控制结构、函数等,以 及常用的Python库和框架。
其他编程语言 了解其他常见的编程语言,如C#、 JavaScript、Go等,以及它们的 特点和应用场景。
计算复杂性

计算复杂性
计算复杂性理论是理论计算机科学的分支学科,使用数学方法对计算中所需的各种资源的耗费作定量的分析,并研究各类问题之间在计算复杂程度上的相互关系和基本性质,是算法分析的理论基础。
和可计算性一样,复杂性总是对于一个特定的问题类来讨论的,它包括无穷多个个别问题,有大有小。
例如,对矩阵乘法这样一个问题类,相对地说,100阶矩阵相乘是个大问题,而二阶矩阵相乘就是个小问题。
可以把矩阵的阶n作为衡量问题大小的尺度。
又如在图论问题中,可以把图的顶点数n作为衡量问题大小的尺度。
一个问题在计算之前,总要用某种方式加以编码,这个编码的长度n就是衡量问题大小的尺度。
当给定一个算法以后,计算大小为n的问题所需要的时间、空间等就可以表示为n的函数。
这个函数就可作为该算法的时间或空间复杂性的度量。
严格地讲,是这个特定的问题类在某一特定计算模型中某一特定算法的复杂性之度量。
当要解决的问题越来越大时,时间、空间等资源耗费将以什么样的速率增长,即当n趋向于无穷大时,这个函数的性状如何,增长的阶是什么,这就是计算复杂性理论所要研究的主要问题。
第九章、空间复杂性

9.1 萨维奇定理-1 萨维奇定理萨维奇定理说明确定型机器可以令人吃惊地以非常少的空间模拟 非确定型机器。对于时间复杂性,这种模拟似乎需要指数倍地增 加时间。 定理9.5 定理9.5 萨维奇定理 对于任何函数f:N→N,其中f(n)≥n, NSPACE(f(n)) ⊆ SPACE(f2(n)) 证明思路 我们需要确定地模拟一个f(n)空间的NTM。简单的方 法是一个一个地试遍NTM的所有计算分支。由定义9.1可知, f(n)是NTM在任何长为n的输入上,在任何计算分支上所扫描的 带方格的最大数。设带字符数为b,那么NTM的格局数可能的最 大数为bf(n)=2(log b)f(n)=2O(f(n)),所以消耗f(n)空间的一个分支 可能运行2O(f(n))步。
计算理论导引
9.1 萨维奇定理-5 萨维奇定理证明(继续)现在定义M来如下模拟N。首先修改N,使得当接受 证明(继续) 时,它把带子清空,把读写头移到最左边的单元,从而进入称为 caccept的格局。令cstart是N在w上的起始格局。选一个常数d,使 得N在f(n)空间上的格局数不超过2df(n),其中n是w的长度。2df(n) 是N在w上的所有分支的运行时间的上界。 M=“对输入w: 1) 输出CANYIELD(cstart,caccept,2df(n))的结果。” 算法CANYIELD显然求解了可产生性问题,因此M正确地模拟N。 需要分析M,证明它在O(f2(n))空间内运行。 1) 每次CANYIELD递归地调用自己时,它都把c1,c2和t的值 存储在栈中,以便这些值在从递归调用返回时能够得以恢复。 因此递归的每一层需要补充O(f(n))空间。
计算理论导引
9.1 萨维奇定理-2 萨维奇定理证明思路(继续) 给出一个确定的递归算法 确定的递归算法来求解可产生性问题。它的运算过程为: 寻找一个中间格局cm,递归地检查c1能否在t/2步内到达cm,以 及cm能否在t/2步内到达c2。重用两次递归检查的空间就可以显著 c t/2 c 地节省空间开销。 该算法需要空间来存储递归栈,递归的每一层需要O(f(n))空间来 存储一个格局。递归的深度是log t,这里t是非确定型机器在所有 分支上可能消耗的最大时间。有:t=2O(f(n)),所以log t= O(f(n))。因此确定的模拟过程需要O(f2(n))空间。
第一讲:计算复杂性理论

大多数研究者认可 的包容关系
L m
计算复杂度的影响因素
简化模型:模型2
计算复杂度的影响因素
简化模型:模型3。
计算复杂度的影响因素
建模假设 例:高空抛球的运动轨迹。 ----抛物线模型 假设1.没有空气阻力; 假设2.地面是平面。 ----椭圆模型
计算复杂度的影响因素
探索空间1 探索空间1---解的近似度、满意度
例:0—10之间的整数解:1-9共9个可行解(一维) 0—10之间的实数解:精确到小数点后6位 共有107个可行解(一维); 107n个可行解(n维)
n! 10141世紀 → 10120世紀 102551世紀 → 102530世紀
问题与算法
每个問題都可能有多个算法存在. 每个算法的计算量(速度)都不同。 例: 赝品金币問題: 问题:9個外观完全一样的金币.,有一个是假的 (重量轻). 提问:用天秤来鉴别真伪,天秤需要使用几次?
贋品金币問題算法 問題算法
优化技术与方法
計算量(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)算法.
尚未确信能否用多項式時間算法求解的问题的 集合称为NP (non-deterministic polynomial)问题 某一个问题不属于NP问题的証明 如能够找到一个多項式時間算法 (簡単) 某一个问题属于NP问题的証明 可以归结为某一类既知的NP类问题(现阶段7类))
计算机科学中的计算复杂性理论

计算机科学中的计算复杂性理论计算复杂性理论是计算机科学中的一个重要分支,研究的是计算问题的算法复杂性和计算机问题的可解性。
它帮助我们理解计算问题是否有高效的解决方法,为设计和分析算法提供了基础。
一、引言计算复杂性理论涉及到算法的效率和计算问题的可解性,对计算机科学和信息技术具有重要意义。
本文将首先介绍计算复杂性理论的起源和发展,然后重点讨论几个计算复杂性理论中的重要概念和问题。
二、计算复杂性理论的起源和发展计算复杂性理论起源于20世纪60年代,由对计算问题的可解性进行研究逐渐演化而来。
该理论的研究者,如图灵奖得主阿隆佐·邱奇、史蒂芬·库克等,提出了多个理论模型和概念,奠定了计算复杂性理论的基础。
三、计算复杂性理论的重要概念1. P问题和NP问题在计算复杂性理论中,P问题指的是可以在多项式时间内解决的问题,而NP问题则是指可以在多项式时间内验证给定解是否正确的问题。
其中,P问题是NP问题的一个子集,即P⊆NP。
2. NP完全性NP完全性是计算复杂性理论中的一个重要概念。
一个问题是NP完全的,意味着它是NP问题中最难的一类。
如果我们能够找到一个多项式时间内解决NP完全问题的算法,那么可以得出P = NP的结论,这是计算机科学中的一个重大问题。
3. 计算复杂性度量计算复杂性理论通过引入时间复杂性和空间复杂性度量来衡量算法的效率。
其中,时间复杂性度量算法执行所需的时间步数,空间复杂性度量算法所需的存储空间。
这些度量帮助我们选择具有高效率的算法,提高计算问题的解决速度。
四、计算复杂性问题的研究方法计算复杂性理论研究问题的方法主要有两种:证明方法和求解方法。
证明方法通过证明某个问题是NP完全的来研究问题难度;而求解方法则是通过设计高效的算法来解决问题。
1. 证明方法证明方法是计算复杂性理论中常用的方法之一,它使用约简技术将一个已知的NP完全问题转化为待研究问题,从而证明待研究问题也是NP完全的。
浅谈计算复杂性理论

浅谈计算复杂性理论
计算复杂性理论是计算机科学中一个重要的领域,它有助于我们理解
计算机如何工作,帮助我们知晓如何使用计算机以有效的方式来解决各种
问题。
而在过去的几十年里,人们研究了计算机的性能,从而开发出有用
的表示,以及有效地分类计算机上的问题,这就是计算复杂性理论。
计算复杂性理论被用来表示计算机程序的复杂性以及它们的处理效率。
它不仅可以度量一个问题的复杂度,还可以度量一系列问题的复杂度,以
及不同的处理器在处理不同问题时所花费的时间。
它还可以用来分析算法
的有效性,以及在最佳的情况下使用不同算法的优劣。
计算复杂性理论目前分为不同的分支,如理论计算机科学、算法分析、最优性和可实现性。
理论计算机科学主要研究计算机能够处理任何问题的
理论基础,包括计算机中可用的空间和时间复杂度等。
算法分析是指利用
不同的技术指标,比如时间和空间复杂度,来评估算法性能的过程。
最优
性跟理论计算机科学相关,它研究给定问题的最优解,并将其复杂度限制
在最低要求。
而可实现性则专注于研究计算机中实现这些最佳解的方法和
算法。
计算复杂性理论的研究是一个新兴的研究领域。
计算机算法与复杂性理论
计算机算法与复杂性理论计算机算法与复杂性理论是计算机科学领域中至关重要的一门学科。
本文将介绍计算机算法与复杂性理论的基本概念、原理以及在计算机科学中的应用。
一、算法的定义与分类算法是指解决问题的一系列有限指令的集合。
它根据输入数据,经过有限的计算步骤,得到期望的输出结果。
算法可以分为确定性算法和非确定性算法。
确定性算法是指在给定输入后,每一步都有确定性的处理过程,最后得到确定的输出结果。
而非确定性算法则存在多种可能的计算路径和输出结果。
二、复杂性理论与问题的可计算性复杂性理论是研究算法运行时间与所处理问题规模之间关系的学科。
它主要关注的是问题的难解性及其可计算性。
根据问题的可计算性,可以将问题分为可解问题和不可解问题。
可解问题指能找到一个算法来解决,而不可解问题则是指不存在算法能够解决。
三、时间复杂性和空间复杂性时间复杂性是指算法在解决问题时所需的时间代价。
空间复杂性则是指算法在解决问题时所需的额外存储空间。
这两个复杂性指标直接影响着算法的效率和资源利用情况。
在算法设计中需要综合考虑时间复杂性和空间复杂性,寻找一个合适的平衡点。
四、常见的算法与复杂性理论问题在实际应用中,有一些常见的算法与复杂性理论问题需要重点研究和解决。
比如最短路径问题、图着色问题、背包问题等。
这些问题涉及到的算法设计和复杂性分析都具有一定的挑战性,但它们的解决对于解决实际问题非常重要。
五、应用领域计算机算法与复杂性理论在各个领域都有广泛的应用。
在人工智能领域中,算法的设计与分析是实现智能决策和优化的基础。
在网络安全领域中,复杂性理论可以帮助研究者理解和分析密码学算法的安全性。
在金融领域中,高效的算法可以提高交易速度和准确性。
此外,在计算机图形学、数据挖掘等领域中也都有广泛的应用。
六、发展趋势与挑战随着计算机科学的不断发展,计算机算法与复杂性理论也面临着一些新的挑战。
例如,随着大数据时代的到来,处理大规模数据的算法效率需要进一步提升。
计算机算法复杂性理论
计算机算法复杂性理论计算机算法复杂性理论是计算机科学的重要分支之一,着重研究算法在解决问题时所需的计算资源的使用情况。
通过对算法的复杂性进行分析,可以评估算法解决实际问题的效率和可行性,并提供指导原则来选择合适的算法。
一、算法复杂性的定义和表达方式算法复杂性理论主要关注算法在最坏情况下的行为,而不是其平均行为。
为了研究算法的复杂性,一般采用大O表示法来表示算法的运行时间或空间消耗。
大O表示法给出了算法运行时间或空间消耗与问题规模的增长趋势。
例如,如果一个算法的运行时间为O(n),表示算法的运行时间随问题规模的增加而线性增长。
二、算法复杂性的分类常见的算法复杂性分类包括时间复杂性和空间复杂性。
1. 时间复杂性时间复杂性是衡量算法运行时间消耗的指标。
常见的时间复杂性包括:- O(1):常数时间复杂性,表示算法的运行时间不随问题规模的增加而增加。
- O(log n):对数时间复杂性,表示算法的运行时间随问题规模的增加而增加,但增长速度相对较慢。
- O(n):线性时间复杂性,表示算法的运行时间随问题规模的增加成线性增长。
- O(nlog n):线性对数时间复杂性,表示算法的运行时间随问题规模的增加成线性对数增长。
- O(n^k):多项式时间复杂性,表示算法的运行时间随问题规模的增加成多项式增长。
- O(2^n):指数时间复杂性,表示算法的运行时间随问题规模的增加成指数增长。
2. 空间复杂性空间复杂性是衡量算法空间资源消耗的指标。
常见的空间复杂性与时间复杂性类似,也使用大O表示法来表示。
三、算法复杂性的分析方法算法的复杂性分析可以通过以下几种方法进行。
1. 渐进分析渐进分析是最常用的算法复杂性分析方法,通过关注算法在问题规模无限增长时的行为来评估其复杂性。
渐进分析的关键是确定算法运行时间或空间消耗的增长趋势。
2. 最坏情况分析最坏情况分析是一种悲观的算法复杂性评估方法,认为算法在最坏情况下的表现是最能代表其复杂性的。
计算理论导引总结分章节版
定义概念题目:第三章:1. 图灵机:是一种精确的通用计算机模型,能模拟实际计算机的所有计算行为,它的核心是转移函数δ,它说明了机器如何从一个格局走到下一个格局。
对于图灵机,δ的形式如下:Q×Γ→Q×Γ{L,R},图灵机是一个7元组(Q,∑,Γ,δ,q 0,q accept,q reject).其中Q,∑,Γ都是有穷集合,并且1)Q是状态集;2)∑是输入字母表,不包括特殊空白符号凵,3)Γ是带字母表,其中凵∈Г,∑∈Г4)δ2. 格局:图灵机的计算过程中,当前状态,当前内容和读写头当前位置组合在一起。
例如:1011q701111:当前状态q7,当前读写头位置在第二个0上。
定义3.2 如果一个语言能被某一个图灵机识别,则称该语言是图灵可识别的(递归可枚举语言)定义3.2 如果一个语言能被某一个图灵机判定,则称该语言是图灵可判定的简称可判定的(递归语言)3.图灵机的变形:多带图灵机、非确定型图灵机、枚举器。
每个4.枚举器:他是图灵机的一种变形,是带有打印机的图灵机,图灵机把打印机当作输出设备,从而可以打印串,每当图灵机想在打印序列中增加一个串时,就把此串送到打印机。
一个语言是图灵可识别的,当且仅当有枚举器枚举它。
5.图灵机的术语:形式化描述,实现描述,高水平描述。
第四章:1.可判定的语言有:(A DFA、A NFA、A REX、E DFA、EQ DFA 是正则语言)、(A CFG、E CFG 是上下无关语言)❶每个上下文无关语言都是可判定的。
2.不可判定的语言有::EQ CFG、A TM 、停机问题、HALT TM 、E TM、REGULAR TM 、EQ TM 、 E LBA 、ALL CFG 、PCPA TM ={<M,ω>|M是TM,ω是串,M接受ω}是不可判定的。
证明:假设证A TM 是可判定的,下面将由之导出矛盾。
设H是A TM 的判定器。
令M是一个TM,ω是一个串。
计算复杂性-资料搜集
计算复杂性一、引言计算问题,应该是一种从人类有文明起便一直纠缠着人类的问题;为了解决这些问题,人类需要进行计算,需要设计算法。
显然,如果时间是无限的,计算机器性能也是无比的,那么选择什么算法并不是问题;但这不可能。
人类计算的时间是有限的,人类的计算设备也不是万能的。
因此,我们需要评判一种算法的复杂性。
那么,计算复杂性到底是什么,它的意义是什么,它的进展如何,应用如何,本文试图进行一部分回答。
二、相关概念1.计算复杂性、时间复杂性、空间复杂性:计算复杂性包括两个方面:时间复杂性,空间复杂性。
时间复杂性反映了问题计算所需的时间耗费, 一般是用计算的运算次数来衡量。
空间复杂性则代表进行计算需要耗费的存储空间。
例如,我们C语言作业的在线测评系统之中,会有内存和用时的要求;这两个方面分别体现了空间复杂性和时间复杂性。
2.多项式时间、指数时间:多项式时间指的是一种算法的时间复杂度可以用含有n的一个多项式表示。
这种情况下一般把操作数作为时间复杂度的衡量标准。
而指数时间指的是一种算法的时间复杂性不能够用多项式进行表示。
指数时间的算法效率较低,而且随着n的增大用时显著增加,被认为是相当于不存在的算法。
3.确定性图灵机、非确定性图灵机:两者都为图灵机模型;但是确定性图灵机在一定的条件下,只会选择一种操作;而非确定性图灵机则会根据生成的(伪)随机数在多种方法中选择一种进行。
4.P问题、NP问题、NPC问题:NP是指“在非确定性图灵机上有多项式时间算法的问题”的集合,而P是指“在确定性图灵机上有多项式时间算法的问题”的集合。
另外一种表述是,P问题在多项式时间内可以解决,而NP问题在多项式时间内可以得到检验。
P问题是NP问题的特例,而往往NP问题都被视作【但未被证明为】“不可”解决的问题。
经过多项式变换能够变成所有NP问题的问题称为NPC问题。
三、特色思想进行问题求解时,人们往往会关心:1.这个问题能否被算法求解;2.求解问题的过程需要消耗什么?而这正是计算复杂性研究的内容。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TQBF 问题
量词: 、 对于自然数,语句 x [ x+1>x ] 为真。 y [ y+y=y ]为假。 辖域:量词的作用范围。 前束范式: 形如 = Q1x1 Q2 x2 … Qk xk B, Qi 为或 量词化布尔公式:带量词的布尔公式(必须是前束范式)。 全量词化:公式中的每个变量都出现在某一量词的辖域中。 TQBF 问题就是要判定一个全量词化的布尔公式是真是假。 TQBF={< >| 是真的全量词化的布尔公式}
主要内容
8.1 萨维奇定理
8.2 PSPACE 类
8.3 PSPACE 完全性
8.3.1 TQBF 问题
8.3.2 博弈的必胜策略
8.3.3 广义地理学
8.4 L 类 NL 类 8.5 NL 完全性 8.6 NL 等于 coNL
11
PSPACE 类
定义 8.6 PSPACE 是在确定型图灵机上、在多项式空间内可 判定的语言类。换言之, PSPACE =∪k SPACE(nk) PSPACE 类的非确定型版本 NPSPACE,可以类似地用 NSPACE 类来定义。 然而,任何多项式的平方仍是多项式,根据萨维奇定理,则 NPSPACE = PSPACE 。
2)
计算 在该真值赋值下的值。
3) 若 的值为 1,则接受;否则拒绝。” 显然机器 M1 是在线性空间内运行,因为每一次循环都可以复 用带子上的同一部分。该机器只需存储当前的真值赋值,这只 需消耗 O(m) 空间。因为变量数 m 最多是输入长度 n,所以该 机器在空间 O(n) 内运行。
例:语言的非确定性空间复杂性
N=“对于输入 <M>,M 是 NFA: 1) 置标记于 NFA 的起始状态。
2) 重复执行下面的语句 2q 次,这里 q 是 M 的状态数。
3) 非确定地选择一个输入符号并移动标记到 M 的相 应状态,来模拟读取那个符号。 4) 如果步骤 2 和 3 表明 M 拒绝某些字符串,即如果在某一时刻所有标 记都不落在 M 的接受状态上,则接受;否则拒绝。”
考察 PSPACE 与 P 和 NP 的关系。 显而易见,P PSPACE,因为运行快的机器不可能消耗大量 的空间。更精确地说,当 t(n)≥n 时,由于在每个计算步上 最多能访问一个新单元,因此,任何在时间 t(n) 内运行的 机器最多能消耗 t(n) 的空间。 类似地,NP NPSPACE ,所以 NP PSPACE 。 反过来,根据图灵机的空间复杂性可以界定它的时间复杂性。 对于 f (n )≥n ,通过简单推广引理5.7 的证明可知,一个消耗 f(n) 空间的 TM 至多有 f(n)2O(f(n)) 个不同的格局,也必定在 时间 f(n)2O(f(n)) 内运行,得出: PSPACE EXPTIME = ∪k TIME(2nk)
萨维奇定理的证明
现在定义 M 来模拟 N。首先修改 N,当它接受时,把带子清空并把读写头 移到最左边的单元,从而进入称为 caccept 的格局。 令 cstart 是 N 在 w 上的起始格局。选一个常数 d,使得 N 在 f(n) 空间上的 格局数不超过 2df(n) ,其中 n 是 w 的长度。 2df(n) 是 N 在所有分支上的运行 时间的上界。 M=“对输入 w: 1) 输出 CANYIELD (cstart, caccept,2df(n) )的结果。” 算法 CANYIELD 显然求解了可产生性问题,因此 M 正确地模拟 N。 下面需要分析 M,确信它在 O(f(n))空间内运行。 CANYIELD 在递归调用自己时,它都把所处的步骤号、c1、c2 和 t 的都存 储在栈中,所以递归调用时返回时能恢复这些值。因此在递归的每一层需 要增加 O(f(n)) 空间。 此外,递归的每一层把 t 的值减小一半。开始时 t 等于2df(n) ,所以递归的 深度是 O(log 2df(n)) 或 O(f(n)) ,因此共消耗空间是 O(f2(n)) 。
TQBF 问题
下面,证明 TQBF 是 PSPACE 难的。 设 A 是一个由 TM M 在 nk 空间内判定的语言,k 是某个常数。 下面给出一个从 A 到 TQBF 的多项式时间归约。该归约把字符串 w 映射为一 个量词化的布尔公式 , 为真当且仅当 M 接受 w。 为了说明怎样构造 ,需解决一个更一般的问题。利用两个代表格局的变量 集合 c1 和 c2 及一个数 t >0,构造一个公式 c1, c2 , t。如果把 c1 和c2 赋为实际的 格局,则该公式为真当且仅当 M 能够在最多 t 步内从 c1到达 c2。然后,可以 令 是公式 cstart , caccept, h,其中 h= 2df(n) ,d 是一个选取的常数,使得 M 在 长为 n 的输入上可能的格局数不超过 2df (n) 。这里,令f(n)=nk。为了方便,假 设 t 是 2 的幂。 类似库克-列文定理的证明,该公式对带单元的内容编码。对应于单元的可能 设置,每个单元有几个相关的变量,每个带符号和状态有一个变量。每个格 局有nk个单元,所以用 O(nk) 个变量编码。
例:语言的非确定性空间复杂性
如果 M 拒绝某个字符串,则它必定拒绝一个长度不超过 2q 的字符串,因 为在任何被拒绝的更长的字符串中,上面算法中所描述的标记的位置分布 必定重复出现。介于两次重复出现之间的那一段字符串可以删去,从而得 到更短的被拒绝的字符串。所以 N 可判定 ALLNFA 的补。 该算法仅需要的空间是用来存放标记的位置和重复计数器,这在线性空间 就可以得到解决。因此,该算法在非确定的空间 O(n) 内运行。
7
萨维奇定理
定理 8.5
对于任何函数 f : NR+ ,其中 f(n) n,
NSPACE( f(n) ) SPACE( f 2(n) )
给定 NTM 的两个格局 c1 和 c2,以及一个整数 t,要求判定该NTM 能否在 t 步内从 c1 变到 c2,称该问题为可产生性问题。 如果 c1 是起始格局,c2 是接受格局,t 是非确定型机器所使用的最大步数, 那么通过求解可产生问题,就能够判断机器是否接受输入。 可以用一个确定的递归算法求解可产生问题。运算过程如下: 寻找一个中间格局 cm,递归地检查 c1 能否在 t/2 步内到达 cm, cm 能否在 t/2 步内到达 c2,重复使用两次递归检查的空间可节省空间开销。 递归的每一层需要 O(f(n))空间来存储一个格局。递归的深度是 log t,t 是非 确定型机器在所有分支上可能消耗的最大时间,t=2O(f(n)),log t = O(f(n))。 因此模拟过程需要 O(f 2(n))。
例8.4 令 ALLNFA = { <A> | A 是一个 NFA 且 L(A) = * } 首先给出非确定型线性空间算法来判定该语言的补 ALLNFA 。 算法的思想是利用非确定性猜测一个被 NFA 拒绝的字符串,然后用线性空间 跟踪该 NFA,看它在特定时刻处在什么状态。
需要注意的是,此时还不知道该语言是否在 NP 或 coNP 中。
P NP PSPACE=NPSPACE EXPTIME
主要内容
8.1 萨维奇定理
8.2 PSPACE 类
8.3 PSPACE 完全性
8.3.1 TQ义地理学
8.4 L 类 NL 类 8.5 NL 完全性 8.6 NL 等于 coNL
14
PSPACE 完全性
萨维奇定理的证明
设 N 是在空间 f(n) 内判定语言 A 的 NTM。
构造一个判定 A 的确定型 TM M。机器 M 利用过程 CANYIELD,该过程 检查 N 的一个格局能否在指定的步数内产生另一个格局。 设 w 是输入到 N 的字符串。对于 N 在 w 上的格局 c1、c2 以及整数 t,如果 从格局 c1 出发,N 有一系列非确定的选择能使它在 t 步内进入格局 c2 ,则 CANYIELD (c1 , c2 , t) 输出接受,否则,CANYIELD 输出拒绝。 CANYIELD = “对输入 c1, c2 和 t: 1) 若 t=1,则直接检查是否有 c1=c2 ,或者根据 N 的规则检查 c1 能否 在一步内产生c2。如果其中之一成立,则接受;如果两种情况都不 成立,则拒绝。 2) 若 t >1,则对于 N 在 w上消耗空间 f(n) 的每一个格局cm: 3) 运行 CANYIELD (c1 , cm , t /2 )。 4) 运行 CANYIELD (cm , c2 , t /2 )。 5) 若第 3 和第 4 步都接受,则接受。 6) 若此时还没有接受,则拒绝。”
如果 M 是对所有输入在所有分支上都停机的非确定型图灵机, 则定义它的空间复杂度 f (n) 为 M 在任何长为 n 的输入上,在 任何计算分支上所扫描的带方格的最大数。 通常用渐进记法估计图灵机的空间复杂度。
空间复杂性类
定义 令 f : NR+是一个函数,空间复杂性类 SPACE(f(n)) 8.2 和 NSPACE(f(n))定义如下:
TQBF 问题
首先,给出一个判定 TQBF 的多项式空间算法: T = “对输入 < >, 是一个全量词化的布尔公式: 1) 若 不含量词,则它是一个只有常数的表达式。计算 的值,若为 真,则接受;否则,拒绝。 2) 若 等于 x ,在 上递归地调用 T,首先用 0 替换 x,然后用 1 替换 x。只要有一个结果是接受,则接受;否则,拒绝。 3) 若 等于 x ,在 上递归地调用 T,首先用 0 替换 x,然后用 1 替换 x。若两个结果都能接受,则接受;否则,拒绝。” 算法 T 显然判定 TQBF 。 空间复杂性:它递归的深度最多等于变量的个数。在每一层只需存储一个 变量的值,所以全部空间消耗是 O(m),其中 m 是 中出现的变量的 个数。因此 T 在线性空间内运行。