一、度量复杂性

语言:A={0k1kk0}A=\{0^k1^k | k\ge 0\},显然该语言可判定

  • M1M1:单带图灵机
  • M2M2:更快的单带图灵机
  • M3M3:双带图灵机

时间复杂度定义:令M是一个在所有输入上都停机的确定型图灵机,f(n)是M在所有长度为n的输入上运行时所经过的最大步数,若f(n)是M的运行时间,则称M在时间f(n)内运行,M是f(n)时间图灵机,n是输入长度。

时间复杂性类定义:时间复杂度类TIME(t(n))TIME(t(n))为由O(t(n))O(t(n))时间的图灵机判定的所有语言的集合。

由恒等式n=2log2nn=2^{log_2^n}可得nc=2clog2nn^c=2^{clog_2^n},故而可以得到2O(logn)2^{O(logn)}表示ncn^c的一个上界。

M1M1

对于输入串ww

  • 1.扫描带子,如果在1的右边发现0,就拒绝
  • 2.如果带子上既有0也有1,就重复下一步
  • 3.扫描带子,删除一个0和一个1
  • 4.如果删除所有1后还有0或者删除所有0后还有1,就拒绝,否则接收

AA语言在M1M1ATIME(n2)A \in TIME(n^2),
时间复杂度:O(n2)O(n^2)

M2M2

对于输入串ww

  • 1.扫描带子,如果在1的右边发现0,就拒绝
  • 2.只要带子上还有0和1,就重复下面步骤
  • 3.扫描带子,检查剩余的0,1的总数是偶数还是奇数,若是奇数则拒绝
  • 4.再次扫描带子,从第一个0开始,隔一个删除一个0;然后从第一个1开始,隔一个删除一个1
  • 5.如果袋子上不再有0和1,接收;否则拒绝

AA语言在M2M2ATIME(nlogn)A \in TIME(nlogn),
时间复杂度:O(nlogn)O(nlogn)

$M3$

对于输入串ww:

  • 1.扫描带子,如果在1的右边发现0,就拒绝
  • 2.扫描带子1上的0,直到抵达第一个1时停止,同时将0复制到带子2上
  • 3.扫描带子1上的1直到输入的末尾,每次从带子1上读到1个1,就在带子2上删除一个0,如果读完1之前所有的0都被删除,则拒绝
  • 4.如果所有的0都被删除,则接受,如果还有0剩下,则拒绝

AA语言在M2M2ATIME(n)A \in TIME(n),
时间复杂度:O(n)O(n)

\quad可以得到,A语言在单带图灵机上时间复杂度为O(nlogn)O(nlogn),在双带图灵机上时间复杂度为O(n)O(n)。由此可以得到:A的复杂度与选择的计算模型有关

二、模型间的复杂性关系

\quad考察三种计算模型:单带图灵机、多带图灵机和非确定型图灵机。
定理:设t(n)t(n)是一个函数,t(n)nt(n)\geq n。则每一个t(n)t(n)时间的多带图灵机都和某个O(t2(n))O(t^2(n))时间的单带图灵机等价。
定义:设NN是一个非确定型图灵机,并且是个判定机,则其运行时间f(n)f(n)是在任何长度为n的输入上所有计算分支中的最大步数。
定理:设t(n)t(n)是一个函数,t(n)nt(n)\geq n。则每一个t(n)t(n)时间的非确定型单带图灵机都和某个O(2O(t(n)))O(2^{O(t(n))})时间的确定型单带图灵机等价。

三、P类

定义:PP是确定型单带图灵机在多项式时间内可判定的语言类:P=UkTIME(nk)P=U_k TIME(n^k)
举例:判断两个数是否是互素、寻找有向图是否存在一条从s到t的路径,这类问题属于P。
定理:每一个上下文无关语言都是P的成员

四、NP类

定义:NP是具有多项式时间验证机的语言类。
验证机定义:语言A的验证机是一个算法V,这里A={wc,V<w,c>}A=\{w|对某个字符串c, V接受<w,c>\}。因为只根据ww的长度来度量验证机的时间,所有多项式时间验证机在ww的长度的多项式时间内运行。若A有一个多项式时间验证机,则称A语言多项式时间可验证。
定理:一个语言在NP中,当且仅当它能被某个非确定型多项式图灵机判定
定义:NTIME(t(n))={LLO(t(n))}NTIME(t(n))=\{L|L是一个被O(t(n))时间的非确定型图灵机判定的语言\}
推论:NP=UkNTIME(nk)NP=U_kNTIME(n^k)
NP问题举例:团问题、子集和问题。注意这些问题的补集不是很明显的属于NP,比如,验证某个图中不存在k个点的团,好像比验证它存在更困难。我们定义另外一个复杂类coNPcoNP,它包括NP中的语言的补语言。目前还不知道coNPcoNP是否与NP不同

P与NP问题

  • P=可以多项式时间判定的语言类
  • NP=可以多项式时间验证的语言类

\quadP=NP?这个问题是目前最大的未解决的问题之一。目前已知最好的判定语言是NP的确定型方法是使用指数时间,既可以证明:NPEXPTIME=UkTIME(2nk)NP \subseteq EXPTIME = U_kTIME(2^{n^k})。但是,不知道NP是否包含在更小的确定型时间复杂度类。

五、NPC问题

\quad定义:NP问题中存在一类问题,这类问题中任何一个存在多项式时间算法,那么所有的NP问题都是多项式时间可解。这类问题称为NP完全问题。
举例:SAT问题(第一个被证明的NPC问题,COOK),团问题,顶点覆盖问题,哈密尔顿路径问题,子集和问题。
定理:SATPP=NPSAT \in P,当且仅当P=NP

六、多项式时间可归约性

\quad多项式时间规约:语言A可多项式时间规约到B,记为ApBA \le_pB,若存在多项式时间可计算函数ff,对于每一个ww,有:wA    f(w)Bw\in A \iff f(w)\in B,函数ff称为A到B的多项式时间规约。
定理:ApBBPAP若A\le_pB且B\in P,则A\in P
证明:N=w:1.f(w);2.f(w)MMN=对输入w: 1.计算f(w);2.在输入f(w)上运行M,输出M的输出。
上面两步都是多项式时间可计算的,两个多项式的合成还是多项式,故而APA\in P

一个规约问题的示例:3SATp3SAT \le_p 团问题

计算复杂性第七章——时间复杂性

NP完全性的定义和定理

定义:如果语言B满足下面两个条件,则称B是NP完全的:

  • 1.B属于NP
  • 2.NP中每个A都可以多项式时间可规约未B

当只满足条件2时称B是NPH问题。
定理:若BNPCBPP=NPB\in NPC且B\in P,则P=NP
证明:B是NPC的,故BNPB\in NP且NP中每个A都可以归约到B,又因为BPB \in P,故而APA \in P,故而P=NPP=NP
定理:若BNPCBpCCNPB\in NPC且B\le_p C且C\in NP,则CNPCC\in NPC
证明:核心目的在于证明NP中每个A都可以多项式归约到C。根据可规约性的等价关系,即A可多项式规约到B,B可多项式规约到C,故而A可多项式规约到C,又因为C是NP问题,故而C是NP完全的。

相关文章: