计算理论基础
内容
- 形式语言与自动机:正则语言、上下文无关语言、图灵机
- 可计算性:可判定、可归约
- 计算复杂性:时间、空间、难解性
正则语言
确定有穷自动机DFA:$M=<Q,\Sigma,\delta,q_0,F>,\delta:Q\times\Sigma\rightarrow Q$
- M 接受字符串:$w=w_1...w_n,\exists q_0...q_n,\delta(q_i,w_{i+1})=q_{i+1},q_n\subset F$
- 正则语言:A={w|w被一个 DFA接受}
- 正则表达式:$a\in E, R_1R_2\in E, (R_1|R_2)\in E, R_1^*\in E\,if\,R_1\in E,R_2\in E$
非确定有穷自动机NFA:$M=<Q,\Sigma,\delta,q_0,F>,\delta:Q\times\Sigma\rightarrow P(Q)$
- 任意 NFA,存在一个等价DFA
- 正则语言$\Leftrightarrow$正则表达式
- 每个正则表达式存在一个 NFA 识别,或者一个 DFA识别,即正则语言
- 每个正则语言可用正则表达式定义
- $DFA\Rightarrow GNFA\Rightarrow$正则表达式
- 利用泵引理,证明一个语言不是正则的$\{1^n0^n\}$
- 设 A 是一个正则语言,则存在一个数 p(泵长度),使得A中长度不小于 p 的字符串 s=xyz,$\forall i\geqslant 0,xy^iz\in A,|y|>0,|xy|\leqslant p$
上下文无关语言
- 上下文无关文法CFG:$<V,\Sigma,R,S>,R:V\rightarrow (V\bigcup\Sigma)^*$
- 下推自动机PDA:$M=<Q,\Sigma,\Gamma,\delta,q_0,F>,\delta:Q\times\Sigma\times\Gamma\rightarrow P(Q,\Gamma)$
- 上下文无关语言$\Leftrightarrow$被下推自动机识别
- 判定上下文无关语言的泵引理,反例$\{2^n1^n0^n\}$
- 设 A 是一个上下文无关语言,则存在一个数 p(泵长度),使得A中长度不小于 p 的字符串 s=uvxyz,$\forall i\geqslant 0,uv^ixy^iz\in A,|vy|>0,|vxy|\leqslant p$
图灵机
- 图灵机:$M=<Q,\Sigma,\Gamma,\delta,q_0,q_{acc},q_{rej}>,\delta:Q\times\Gamma\rightarrow Q\times\Gamma\times\{L,R\},\Sigma\subset\Gamma$
- 每个非确定的图灵机都有一个等价的确定图灵机
- Church-Turing假设:算法的直觉概念$\Leftrightarrow$图灵机算法
- 线性界限图灵机:LBA 纸带长度等于输入个数
可判定
- 可判定:存在一个图灵机,对一个语言的任何输入都能停机(接受或者拒绝),该语言是图灵可判定$\Leftrightarrow$图灵可识别 and 补图灵可识别。
- 可判定语言:$A_{DFA}, A_{NFA}, A_{REX}, EMPTY_{DFA}, EQUAL_{DFA}, A_{CFG}, EMPTY_{CFG}, A_{LBA}$
- 停机问题:$ATM=\{<M,w>|M\,is\,a\,TM,accept\,w\} $可识别,不可判定
- 对角线方法:假设一个可数序列,其始终与第n行、第n列上的不一致。
- 存在图灵不可识别语言:图灵机集合是可数的,语言集合是不可数,因此语言与图灵机不可能一一对应。
- 不可判定:$EMPTY_{TM}, HALT_{TM}, EQUAL_{TM}, EMPTY_{LBA} 采用归约函数证明
可归约
- 函数$r:\Sigma^*\rightarrow\Sigma^*$可计算,如果有图灵机M,在每个输入 w 上,M 停机,此时只有 r(w)出现在纸带上
- 函数$T:N\rightarrow N$,如果M在任意输入x上计算最多只需要$T(|x|)$个步骤,则称M在$T(n)$时间内计算 r。
- 语言 A 映射可归约到语言 B 如果存在可计算函数 f, $,\forall w,w\in A\Leftrightarrow f(w)\in B$,记为$A\leqslant_m B$
- 此时,如果B可判定,则A也可判定;如果B图灵可识别,则A也图灵可识别。
时间
- 复杂度:函数$f,g:N\rightarrow N,f(n)=O(g(n)),if\,f(n)\leqslant C*g(n);f(n)=o(g(n)),if\,f(n)<C*g(n);$。
- 时间复杂类:$DTIME(t(n))=\{L|L $是确定型图灵机$O(t(n))$时间判定的语言$\},NTIME(t(n))=\{L|L $是非确定型图灵机$O(t(n))$时间判定的语言$\},where\,t:N\rightarrow N$
- P类:$\bigcup_kTIME(n^k)$
- NP类:$\bigcup_kNTIME(n^k)$,或者可用确定型图灵机在多项式时间内验证。
- EXP类:$\bigcup_kTIME(2^{n^k})$
- 归约:语言 A 可多项式时间归约到B,记为$A\leqslant_p B$,如果存在多项式时间可计算函数$f:\Sigma^*\rightarrow \Sigma^*,\forall w,w\in A\Leftrightarrow f(w)\in B$。
- NP完全类:$B\in NP \wedge \forall A\in NP, A\leqslant_p B$。SAT是NP完全的。
空间
- 空间复杂度:函数$T:N\rightarrow N$,如果 M 在任意输入x上计算最多只需要$T(|x|)$个方格,则称M在空间$T(n)$内计算。
- $SPACE(f(n))$:可用确定型图灵机在f(n)空间内判定。$PSPACE=\bigcup_kSPACE(n^k)$
- $NSPACE(f(n))$:可用确定型图灵机在f(n)空间内验证。$NSPACE=\bigcup_kNSPACE(n^k)$
- 萨维奇定理:任何函数$f:N\rightarrow N,f(n)\leqslant n, NSPACE(f(n))\subseteq SPACE(f^2(n))$
- $P\subseteq NP\subseteq PSPACE=NPSPACE\subseteq EXPTIME$
- PSPACE完全类:$B\in PSPACE \wedge \forall A\in PSPACE, A\leqslant_p B$。
- TQBF 问题:TQBF={$<\phi>|\phi$是真的全量词化布尔表达式} PSPACE 完全。
- $L=SPACE(\log n),NL=NSPACE(\log n),coNL=NL\subseteq P$
- NL完全性:$B\in NL \wedge \forall A\in NL, A\leqslant_LB$
难解性
近似算法 概率算法 交互式证明系统 并行计算 密码学
参考文献
- Michael Sipser,Introduction to the Theory of Computation,Course Technology, 2005
- Sanjeev Arora, Boaz Barak, Computational Complexity, an modern approach, Cambridge University Press, 2015.11