- 英文标题:Regular Languages are Testable with a Constant Number of Queries
- 中文标题:正则语言是可检测地
- 免费下载链接:Citeseer
序言
最近在赶很多事情,忙的确实不可开交,还是抽了一天时间把这篇paper过了主体部分(前三节),本文是Property Testing一文中 4.2 4.2 4.2节检验正则语言的一个延申,主要是笔者试图实现该检验算法时发现前者的表述很不完整,而且有不少错误,于是还是去翻了一下原作者的文章(即本文的参考paper),发现确实有很多细节被忽略了。
主要笔者决定以正则语言的可检验性作为汇报内容,主要原因是觉得这个话题会比较有趣,而且能展开讲的内容比较丰富,本来看了那篇slide觉得这个检验算法也不难实现,然后着手却重重受阻,只得费功夫从头搞清楚这个检验算法的原理了。本文主要是对前两节的内容的翻译与笔注,基本上算是弄明白算法的思想了,实话说妙不可言,但是像里面一些细节,如分量图的算法实现笔者现在还是不太能搞得明白,论文中也没有讲得这么细,之后如果成功实现了这个算法,会将代码一并附在本文末尾,实现不了就算了,这些内容差不多也够讲了。
PS:
最近笔者找到了对彼此都有所情愫的人,确定了关系,于是断更了自己的日志,然后发现仍然有很多话不能写,也说不出来,就有点难受。而且她也是那种挺宅的,似乎都不太喜欢逛街,而且不知道为何笔者总是觉得她似乎在回避,其实我觉得过去如何都无所谓的,笔者也不过一介布衣,她能来到这里已经是我最大的幸运了。虽然我觉得从普通朋友做起,大家都有时间就去图书馆学习,吃吃饭也没什么不好,但是总是觉得会有些隔阂,笔者是那种遇到能够信任的人就会说出很多心里话的人,但是得不到对方回应就会有些失落。可能恋爱这种事情对于笔者这种理想主义来说还是过于困难了…
我想也许以后更新的频率会越来越低,因为笔者能留给这里的时间会越来越少,笔者想或许该跟这个博客说再见了,但是笔者大约还是会不定期做一些更新,因为有些话,写出来,总是会让我好受一些。
也许我们确实已经过了那种缠绵的年纪了,三分热情,七分平淡,方为如今的生活。约莫如此罢…
文章目录
摘要 Abstract
- 本文是对参考文献
[7]
工作的延续; - 本文的主题是检验正则语言;
- 本文的主要结果如下:
- 对于一种正则语言 L ∈ { 0 , 1 } ∗ L\in\{0,1\}^* L∈{0,1}∗,以及一个整数 n n n,存在一种随机算法(randomized algorithm),该算法接受(accept)每一个属于 L L L且长度为 n n n的单词 w w w,并且以高概率拒绝(reject)那些与 L L L中每一个单词都有至少 ϵ n \epsilon n ϵn位字节不相同的单词;该算法需要查询输入长度为 n n n的单词 w w w的 O ~ ( 1 / ϵ ) \tilde O(1/\epsilon) O~(1/ϵ)位字节,且这种查询复杂度(a factor of poly-logarithmic in 1 / ϵ 1/\epsilon 1/ϵ)的最优性已经得到证明;
- 本文还讨论了更多复杂语言的可检验性,特别地,我们指出针对上下文无关语言(context-free languages)检验的查询复杂度无法被限制在任意只与 ϵ \epsilon ϵ相关的函数内;
- 关于正则语言的检验问题的研究,是探索那些通过逻辑方法(logical means)定义的性质可检验性的一种通用方法(general approach);
1 引入 Introduction
-
正则语言的性质检验(Property testing)概述:
-
P P P是一种性质,比如是一族非空的二进制单词构成的集合;
-
定义:称长度为 n n n的单词 w w w距离满足 P P P是 ϵ \epsilon ϵ-far,若任意长度为 n n n、且与 w w w在至多 ϵ n \epsilon n ϵn个对应字节位上取值相异的单词 w ′ w' w′都不能满足性质 P P P;换言之, ∀ w ′ ∈ { w ∈ P : ∣ w ′ ∣ = n } \forall w'\in \{w\in P:|w'|=n\} ∀w′∈{w∈P:∣w′∣=n}, w ′ w' w′与 w w w的汉明距离(Hamming distance)大于 ϵ n \epsilon n ϵn;
-
定义:称随机算法 A A A是关于性质 P P P的一个 ϵ \epsilon ϵ-test,若给定正整数 n n n以及一个可以用于查询 w w w任意字节位取值的预言机器(oracle),随机算法 A A A总是能够以至少 2 3 \frac23 32的概率去区分如下两种不同情形:
- w ∈ P w\in P w∈P;
- w w w距离满足 P P P是 ϵ \epsilon ϵ-far;
-
定义:称性质 P P P是可检验的(testable),若对于每一个固定的 ϵ > 0 \epsilon>0 ϵ>0,都存在一个查询复杂度(即所需要的查询次数)限制在只与 ϵ \epsilon ϵ有关的某个函数内的 ϵ \epsilon ϵ-test;
-
备注:
查询复杂度只与 ϵ \epsilon ϵ有关,主要是指与输入单词 w w w的长度(即 ∣ w ∣ = n |w|=n ∣w∣=n)是无关的;
-
-
-
性质检验的相关研究:
- 性质检验的概念首次在参考文献
[7]
中定义(启发于参考文献[13]
),性质检验的相关研究融合了概率近似正确学习(PAC learning),程序检查(program checking,参考文献[6,3,10,13]
),概率可检测证明(probabilistically checkable proof,参考文献[2]
)以及近似算法(approximation algorithm,参考文献[7]
); - 参考文献
[7]
中作者证明了一些图性质是可检验的,如二分性的可检验性(只需要查询与 1 ϵ \frac1\epsilon ϵ1相关的多项式数量的边即可得到可行的一个 ϵ \epsilon ϵ-test);
- 性质检验的概念首次在参考文献
-
本文的研究内容:
-
本文强调正式语言的可检验性(formal languages,参考文献
[8]
中有关于此概念的确切定义); -
一种语言 L ⊆ { 0 , 1 } ∗ L\subseteq\{0,1\}^* L⊆{0,1}∗是一种性质,这种性质通常可视为是一系列的布尔函数 f n : { 0 , 1 } n → { 0 , 1 } f_n:\{0,1\}^n\rightarrow\{0,1\} fn:{0,1}n→{0,1},满足 f n − 1 ( 1 ) = L ∩ { 0 , 1 } n = L n f^{-1}_n(1)=L\cap\{0,1\}^n=L_n fn−1(1)=L∩{0,1}n=Ln;
-
本文主要的结果是证明了正则语言(regular languages)是可检验的(在查询复杂度仅为 O ~ ( 1 / ϵ ) \tilde O(1/\epsilon) O~(1/ϵ)的情形下),且查询复杂度已经达到最优;
原文:
… We also show that this complexity is optimal up to a factor poly-logarithmic in 1 / ϵ 1/\epsilon 1/ϵ …
-
然而上述这种极好的性质无法推广到上下文无关的(context-free)语言中,因为可以很容易的举出不可检验的简单反例;
-
-
本文研究的意义:
-
正则语言是二阶单体逻辑(second order monadic logic)刻画的一种性质,因此可以推出很多其他性质是可检验的;
-
如在参考文献
[1]
中我们给出了一种可检验的图性质,这种图性质也是通过逻辑方法(logical means)描述得到的; -
这些结果表明可检验性与逻辑之间存在较强的关联性性;
-
-
本文一些符号的设定:
- n n n是一个充分大的正整数, ϵ \epsilon ϵ是一个充分小的正数,所有的对数(logarithms)都是以 2 2 2为底的(binary),除非特殊说明
2 检验正则语言 Testing Regular Languages
-
定义 2.1 2.1 2.1:确定有穷状态自动机(deterministic finite automaton,下简称为DFA) M M M,其状态集合 Q = { q 1 , q 2 , . . . , q m } Q=\{q_1,q_2,...,q_m\} Q={q1,q2,...,qm},由函数 δ : { 0 , 1 } × Q → Q \delta:\{0,1\}\times Q\rightarrow Q δ:{0,1}×Q→Q以及集合 F ⊆ Q F\subseteq Q F⊆Q来给定;其中:
-
q 1 q_1 q1称为初始状态(initial states);
-
集合 F F F中包含的状态称为接受状态(accepting states);
-
δ \delta δ称为转移函数(transition function),满足如下的几条性质:
δ ( ∅ , q ) = q δ ( u 0 , q ) = δ ( 0 , δ ( u , q ) ) δ ( u 1 , q ) = δ ( 1 , δ ( u , q ) ) \begin{aligned} \delta(\emptyset,q)&=q\\ \delta(u0,q)&=\delta(0,\delta(u,q))\\ \delta(u1,q)&=\delta(1,\delta(u,q)) \end{aligned} δ(∅,q)δ(u0,q)δ(u1,q)=q=δ(0,δ(u,q))=δ(1,δ(u,q))
称 M M M接受单词 u u u,若 δ ( u , q 1 ) ∈ F \delta(u,q_1)\in F δ(u,q1)∈F,否则称 M M M拒绝单词 u u u;
称那些被 M M M接受的单词构成的单词集合为 L M L_M LM,即为由DFA M M M确定的语言(lanuages);
-
-
定义 2.2 2.2 2.2:一种语言是正则的(regular),当且仅当存在一个FA接受它;
-
备注:
定义 2.2 2.2 2.2中没有强调说一定是DFA,可能NFA也是可行的,猜测原因是NFA总是可以转换为等价形式的DFA;
我们在本节中将通过自动机 M M M给定的正则语言 L L L表示为 L M L_M LM;
-
-
于是一个长度为 n n n的单词 w = ( w 1 , w 2 , . . . , w n ) w=(w_1,w_2,...,w_n) w=(w1,w2,...,wn)可以定义得到状态序列 ( q i 0 , q i 1 , . . . , q i n ) (q_{i_0},q_{i_1},...,q_{i_n}) (qi0,qi1,...,qin):
q i j = { q 1 j = 0 δ ( w 1 w 2 . . . w j , q 1 ) 1 ≤ j ≤ n q_{i_j}=\left\{ \begin{aligned} &q_1\quad&j=0\\ &\delta(w_1w_2...w_j,q_1)\quad&1\le j\le n \end{aligned} \right. qij={q1δ(w1w2...wj,q1)j=01≤j≤n
该状态序列描述了自动机 M M M在读取 w w w时的一个状态转移轨迹,下文中我们称之为 w w w的遍历路径(traversal path); -
有穷状态自动机 M M M可以对应一个有向图 G ( M ) G(M) G(M),其中 V ( G ( M ) ) = Q , E ( G ( M ) ) = { ( q i , q j ) : δ ( 0 , q i ) = q j } ∪ { ( q i , q j ) : δ ( 1 , q i ) = q j } V(G(M))=Q,E(G(M))=\{(q_i,q_j):\delta(0,q_i)=q_j\}\cup\{(q_i,q_j):\delta(1,q_i)=q_j\} V(G(M))=Q,E(G(M))={(qi,qj):δ(0,qi)=qj}∪{(qi,qj):δ(1,qi)=qj};
有向图 G G G的周期(period) g ( G ) g(G) g(G)定义为 G G G中所有环(cycle)的长度的最大公约数(greatest common divisor,下简称为GCD);
若有向图 G G G中不存在环(acyclic),定义 g ( G ) = ∞ g(G)=\infty g(G)=∞;
-
引理 2.3 2.3 2.3:设 G = ( V , E ) G=(V,E) G=(V,E)是一个强连通的有向图,满足周期 g < ∞ g<\infty g<∞,则一定存在顶点集 V V V的某个分割(partition) V ( G ) = V 0 ∪ V 1 ∪ . . . ∪ V g − 1 V(G)=V_0\cup V_1\cup...\cup V_{g-1} V(G)=V0∪V1∪...∪Vg−1,以及一个常数 m = m ( G ) ≤ 3 ∣ V ∣ 2 m=m(G)\le 3|V|^2 m=m(G)≤3∣V∣2,使得:
- 对于任意 0 ≤ i , j ≤ g − 1 0\le i,j\le g-1 0≤i,j≤g−1,以及任意的 u ∈ V i u\in V_i u∈Vi, v ∈ V j v\in V_j v∈Vj,则图 G G G中每一条 u → v u\rightarrow v u→v的有向路径长度等于 ( j − i ) m o d g (j-i)\mod g (j−i)modg;
- 对于任意 0 ≤ i , j ≤ g − 1 0\le i,j\le g-1 0≤i,j≤g−1,以及任意的 u ∈ V i u\in V_i u∈Vi, v ∈ V j v\in V_j v∈Vj,任意的整数 n ≥ m n\ge m n≥m,若 n = ( j − i ) m o d g n=(j-i)\mod g n=(j−i)modg,则一定存在某条 u → v u\rightarrow v u→v的有向路径,它的长度为 n n n;
引理 2.3 2.3 2.3证明:
-
引理 2.3 2.3 2.3中的第一条性质证明:
固定任意一个顶点 z ∈ V z\in V z∈V,构造 V i V_i Vi( 0 ≤ i ≤ g − 1 0\le i\le g-1 0≤i≤g−1)是这样一类顶点 v v v构成的集合:
-
存在一条长度为 i m o d g i\mod g imodg的有向路径 z → v z\rightarrow v z→v(可以不是简单路径,即路径中可以出现重复的边);
-
注意:这条 v → v v\rightarrow v v→v的有向路径必然被 g g g整除(因为这条路径是一个环),因此这意味着集合 V i ∩ V j = ∅ V_i\cap V_j=\emptyset Vi∩Vj=∅( i ≠ j i\neq j i=j);
否则如果存在某个顶点 w ∈ V i ∩ V j w\in V_i\cap V_j w∈Vi∩Vj( i ≠ j i\neq j i=j),根据 G G G的强连通性必然存在一条 w → z w\rightarrow z w→z的有向路径 p 1 p_1 p1,且根据 V i V_i Vi和 V j V_j Vj的构造定义,存在一条 z → w z\rightarrow w z→w的有向路径 p 2 p_2 p2(长度为 i m o d g i\mod g imodg)与一条 z → w z\rightarrow w z→w的有向路径 p 3 p_3 p3(长度为 j m o d g j\mod g jmodg),则 p 1 ∪ p 2 p_1\cup p_2 p1∪p2与 p 1 ∪ p 3 p_1\cup p_3 p1∪p3都是有向环,但这两个环的长度模 g g g显然不同余,则不可能同时被 g g g整除。矛盾!
-
因此对于任意 u ∈ V i , v ∈ V j u\in V_i,v\in V_j u∈Vi,v∈Vj,只需要构造 z → u z\rightarrow u z→u以及 u → v u\rightarrow v u→v即可得出第一条性质的结论;
显然上述构造得到的 V i V_i Vi( 0 ≤ i ≤ g − 1 0\le i\le g-1 0≤i≤g−1)满足第一条性质;
-
备注:
这里有个很tricky的问题, z → v z\rightarrow v z→v的有向路径当然不止一条,难道需要所有的有向路径藏毒都是 i m o d g i\mod g imodg吗?显然这是正确的,因为 V i ∩ V j = ∅ V_i\cap V_j=\emptyset Vi∩Vj=∅( i ≠ j i\neq j i=j),这意味着不可能存在一个顶点 w w w同时存在两条 z → w z\rightarrow w z→w的有向路径,它们的长度模 g g g不同余,因此推论是完全正确的;
-
-
引理 2.3 2.3 2.3中的第二条性质证明:
第二条性质是第一条性质的反向表述,但是需要一个常数 m < 3 ∣ V ∣ 2 m<3|V|^2 m<3∣V∣2的约束,证明过程比较复杂,涉及多篇不同的参考文献中的结论,本文限于篇幅不再赘述;
特别地,称引理 2.3 2.3 2.3中的常数 m m m为有向图 G G G的可达常数(reachability constant),表示为 m ( G ) m(G) m(G),下文中假设 m m m总是可以被 q q q整除,即 q ∣ m q|m q∣m; ■ \blacksquare ■
-
备注:
m m m的定义有点类似社交网络中六度空间的意思,即任意两个人之间的距离不会超过6个人;
事实上如果随机生成一个强连通的零一DFA对应的有向图,我做了一个实验,从初始状态开始施行BFS算法可以发现,当层数到达某个数值 m m m后,每一层中都包含了所有的顶点(状态),这就意味着对于任意 n ≥ m n\ge m n≥m,都存在一条长度为 n n n的从初始状态到任意其他状态的路径;
引理中的性质似乎相对弱了一些,但是根据第一条性质,似乎 u → v u\rightarrow v u→v的路径长度已经定死成 ( j − i ) m o d g (j-i)\mod g (j−i)modg,而且很tricky的事情是分割 V ( G ) = V 0 ∪ V 1 ∪ . . . ∪ V g − 1 V(G)=V_0\cup V_1\cup...\cup V_{g-1} V(G)=V0∪V1∪...∪Vg−1可能并不唯一,但是 u → v u\rightarrow v u→v的路径长度似乎总是为 ( j − i ) m o d g (j-i)\mod g (j−i)modg,这个可能需要一些实例的验证;
一些比较容易想得到的事情,比如若自动机中存在指向自己的状态,则 g = 1 g=1 g=1,那么就不存在划分(所有状态都属于同一个划分),此时确实是 ∀ n ≥ m \forall n\ge m ∀n≥m时,任意两个状态之间都存在长度为 n n n的有向路径(与上述实验得到的结论是完全一致的);一些比较坏的情况比如 n n n个顶点 n n n条边,刚好构成一个有向环,这时就是每个顶点自己构成一个划分,引理 2.3 2.3 2.3的结论非常显然;
根据引理 2.3 2.3 2.3,给定 n n n就可以很容易的检查语言 L M L_M LM是否包含长度为 n n n的单词(通过计算 n m o d g n\mod g nmodg即可),如果 L M ∩ { 0 , 1 } n = ∅ L_M\cap\{0,1\}^n=\emptyset LM∩{0,1}n=∅,则算法直接拒绝输入即可(平凡),因此我们下面只考虑非平凡的情形,即 L M ∩ { 0 , 1 } n ≠ ∅ L_M\cap\{0,1\}^n\neq\emptyset LM∩{0,1}n=∅;
-
定义 2.3 2.3 2.3:给定单词 w ∈ { 0 , 1 } n w\in\{0,1\}^n w∈{0,1}n,从 w w w的字节位 i i i( 1 ≤ i ≤ n 1\le i\le n 1≤i≤n)开始连续取若干个字节得到 w ′ w' w′,称 w ′ w' w′是 w w w的一个子单词(sub-word,下文与run是同义词);称 w ′ w' w′是对于语言 L M L_M LM是可行的(feasible),若存在某个状态 q ∈ Q q\in Q q∈Q使得存在一条 q 1 → q q_1\rightarrow q q1→q的有向路径(长度位 i − 1 i-1 i−1),并且图 G G G中存在一条路径从 δ ( w ′ , q ) \delta(w',q) δ(w′,q)到某个接受状态;否则,称 w ′ w' w′是不可行的(infeasible);
- 利用引理 2.3 2.3 2.3,我们可以很容易的在 O ( ∣ Q ∣ ∣ w ′ ∣ ) O(|Q||w'|) O(∣Q∣∣w′∣)的时间复杂度内确定子单词 w ′ w' w′是否可行;
-
显然若存在某个不可行的 w ′ w' w′,直接就可以推出 w ∉ L w\notin L w∈/L;
- 我们的目的是证明若给定长度为 n n n的单词 w w w距离 L L L中每一个长度为 n n n的单词都很远(比如 ϵ \epsilon ϵ-far),则一定会有许多短的子单词 w ′ w' w′是不可行的,于是只需要采样少量的随机子单词 w ′ w' w′,即可确定 w w w是否确实存在一个不可行的子单词;
-
引理 2.4 2.4 2.4:令DFA M M M满足如下假定:
-
M M M存在唯一的接受状态 q a c c q_{acc} qacc;
-
状态集合 Q Q Q可以划分为两个部分: C C C和 D D D,其中 C ∩ D = ∅ , C ∪ D = Q C\cap D=\emptyset,C\cup D=Q C∩D=∅,C∪D=Q,满足如下条件(注意集合 D D D可以为空集):
- q 1 , q a c c ∈ C q_1,q_{acc}\in C q1,qacc∈C;
- G ( M ) G(M) G(M)在 C C C上的导出子图是强连通的;
- G ( M ) G(M) G(M)不存在由集合 D D D中的状态指向集合 C C C中的状态的边(当然可以存在由集合 C C C中的状态指向集合 D D D中的状态的边);
设 m m m是 G ( C ) G(C) G(C)的到达常数,假设语言 L = L M L=L_M L=LM包含长度为 n n n的单词;
若一个长度为 n n n的单词 w w w满足 d i s t ( w , L ) ≥ ϵ n {\rm dist}(w,L)\ge\epsilon n dist(w,L)≥ϵn,则存在一个整数 1 ≤ i ≤ log 2 ( 6 m / ϵ ) 1\le i\le \log_2(6m/\epsilon) 1≤i≤log2(6m/ϵ),使得 w w w长度为 2 i + 1 2^{i+1} 2i+1的不可行子单词的数量至少为 2 i − 4 ϵ n m log 2 ( 1 ϵ ) \frac{2^{i-4}\epsilon n}{m\log_2(\frac1\epsilon)} mlog2(ϵ1)2i−4ϵn;
-
备注:
这个数量仍然不是很直观,代入一些具体的数字,比如设定 m = 16 , i = 4 , n = 2 64 , ϵ = 2 − 16 m=16,i=4,n=2^{64},\epsilon=2^{-16} m=16,i=4,n=264,ϵ=2−16,那么长度为 2 i + 1 = 32 2^{i+1}=32 2i+1=32的不可行的子单词至少有 2 40 2^{40} 240个;
其实观察上面的式子, n n n的阶数应当要远大于 1 ϵ \frac1\epsilon ϵ1的阶数,因为一般来说(其实是我做了一些测试下来的感觉) m m m应该是 log ( ∣ Q ∣ ) \log(|Q|) log(∣Q∣)的量级,不会很大,因此 2 i − 4 ϵ n m log 2 ( 1 ϵ ) \frac{2^{i-4}\epsilon n}{m\log_2(\frac1\epsilon)} mlog2(ϵ1)2i−4ϵn的分母基本是一个很正常大小的数字,数量级主要是看 ϵ n \epsilon n ϵn的大小,因为我们只考虑较短的子单词,因此 i i i通常也不会取得太大;
引理 2.4 2.4 2.4证明:这个在我上一篇与Property Testing中关于不可行单词数量的证明是差不多的(但是这里的情况更加具体,给定了子单词的长度),这里大致的思路也是在 [ m + 1 , n − m ] [m+1,n-m] [m+1,n−m]的区间上依次取连续的若干长度最短的不可行子单词,具体取法如下所示:
- 从单词 w w w的第 m + 1 m+1 m+1个字节位往后开始取,直到取到某个字节位 s 1 s_1 s1子单词不再可行(再少取一位就可行),则 R 1 = w m + 1 w m + 2 . . . w s 1 R_1=w_{m+1}w_{m+2}...w_{s_1} R1=wm+1wm+2...ws1;
- 类似的接下来连续不断地取出最短的不可行子单词( R 2 , R 3 , . . . , R h R_2,R_3,...,R_h R2,R3,...,Rh),直到第 n − m n-m n−m个字节位截断(因此最后一个 R h R_h Rh可能是可行的,不过可以忽略它);
最终我们有:
∣ w ∣ = n = 2 m + ∑ j = 1 h ( 1 + ∣ R j ∣ ) |w|=n=2m+\sum_{j=1}^h(1+|R_j|) ∣w∣=n=2m+j=1∑h(1+∣Rj∣)
然后可以证明这样的构造结果是满足引理中的不可行子单词数量下界的(比较复杂,限于篇幅不再赘述); ■ \blacksquare ■ -
-
现在我们的目标是将一般的情况归约到上述描述的情形中:
对于一个给定的DFA M M M以及对应的 G = G ( M ) G=G(M) G=G(M),设 C ( G ) \mathcal{C}(G) C(G)是图 G G G的分量图(graph of components);
-
备注:
定义: C ( G ) \mathcal{C}(G) C(G)的定义似乎比较复杂,首先 C ( G ) \mathcal{C}(G) C(G)也是一个有向图,它的每一个顶点对应图 G G G中的一个强连通分量或一个单一顶点(如果该顶点不属于图 G G G中的任何一个强连通分量);
C ( G ) \mathcal{C}(G) C(G)的构造目的是为了得到一个有向无环图,因为如果 C ( G ) \mathcal{C}(G) C(G)中存在环,那么环上的各个顶点对应的强连通分量或单一顶点在原图 G G G中必然属于一个强连通分量;
所以 C ( G ) \mathcal{C}(G) C(G)的构造就是从这样一个角度看图 G G G,图 G G G必然由若干最大强连通分量或一个单一顶点构成,其中每一个强连通分量都不能再包含更多其他的顶点,每一个单一顶点都不属于任何强连通分量;于是 C ( G ) \mathcal{C}(G) C(G)必然是一个有向无环图;
定义 C ( G ) \mathcal{C}(G) C(G)中顶点集合为 C 1 , C 2 , . . . , C k C_1,C_2,...,C_k C1,C2,...,Ck,即顶点数量为 k k k,并假设原图 G G G中每一个状态都从 q 1 q_1 q1( q 1 ∈ C 1 q_1\in C_1 q1∈C1)出发可达;
则 C ( G ) \mathcal{C}(G) C(G)中从 C 1 C_1 C1出发可以到达每一个其他顶点;
-
-
接下来我们描述长度为 n n n的单词 w ∈ L M w\in L_M w∈LM如何在自动机中移动:
若单词 w ∈ L w\in L w∈L,则它将从 q 1 q_1 q1出发最终落在某个接受状态;对应地, w w w将从 C 1 C_1 C1出发,并最终终止在一个包含接受状态的分量中(component);
以下给出可接受三元组(admissible triplet)的定义: ( A , P , Π ) (A,P,\Pi) (A,P,Π);
定义(admissible path):
- 称 C ( G ) \mathcal{C}(G) C(G)中的一条路径是可接受的(admissible),若它从 C 1 C_1 C1( q 1 ∈ C 1 q_1\in C_1 q1∈C1)出发,最终终止在某个包含接受状态的分量中;
定义(admissible portals):
- 给定一条admissible path
A
=
(
C
i
1
,
C
i
2
,
.
.
.
,
C
i
t
)
A=(C_{i_1},C_{i_2},...,C_{i_t})
A=(Ci1,Ci2,...,Cit),称序列
P
=
(
p
j
1
,
p
j
2
)
j
=
1
t
P=(p_j^1,p_j^2)_{j=1}^t
P=(pj1,pj2)j=1t是可接受序列门控(admissible sequence of portals),若其满足如下若干约束:
- p j 1 , p j 2 ∈ C i j ∀ 1 ≤ j ≤ t p_j^1,p_j^2\in C_{i_j}\quad\forall 1\le j\le t pj1,pj2∈Cij∀1≤j≤t;
- p 1 1 = q 1 p_1^1=q_1 p11=q1;
- p t 2 ∈ F p_t^2\in F pt2∈F;
- ( p j − 1 2 , p j 1 ) ∈ E ( G ) 2 ≤ j ≤ t (p_{j-1}^2,p_j^1)\in E(G)\quad2\le j\le t (pj−12,pj1)∈E(G)2≤j≤t;
- 显然若 C i j C_{i_j} Cij是单一顶点,则 p j 1 = p j 2 p_j^1=p_j^2 pj1=pj2;
定义(admissible partition):
- 给定admissible portals序列
P
P
P,称一个递增的正整数序列
Π
=
(
n
j
)
j
=
1
t
+
1
\Pi=(n_j)_{j=1}^{t+1}
Π=(nj)j=1t+1是可接受的划分(admissible partition),若其满足如下若干约束:
- n 1 = 0 n_1=0 n1=0;
- ∀ 1 ≤ j ≤ t \forall1\le j\le t ∀1≤j≤t,若 C i j C_{i_j} Cij是一个强连通分量的,则必然存在一条路径从 p j 1 → p j 2 p_j^1\rightarrow p_j^2 pj1→pj2,记这条路径的长度为 n j + 1 − n j − 1 n_{j+1}-n_j-1 nj+1−nj−1;
- n t + 1 = n + 1 n_{t+1}=n+1 nt+1=n+1;
- 显然若 C i j C_{i_j} Cij是单一顶点,则 n j + 1 = n j + 1 n_{j+1}=n_j+1 nj+1=nj+1;
- n j n_j nj的含义是当 w w w到达分量 C i j C_{i_j} Cij时已经经过的状态数量,比如在抵达 C i 1 C_{i_1} Ci1时,尚未经过任何状态( n 1 = 0 n_1=0 n1=0),抵达 C i 2 C_{i_2} Ci2时,经历的状态数量( n 2 = N + 1 n_2=N+1 n2=N+1, N N N为 p 1 1 → p 1 2 p_1^1\rightarrow p_1^2 p11→p12路径的长度),这里多一个 − 1 -1 −1的原因是在跨越分量时需要一次转移;
- 总之 w w w在区间 [ n j + 1 , n j + 1 − 1 ] [n_j+1,n_{j+1}-1] [nj+1,nj+1−1]上位于 C i j C_{i_j} Cij中;
- 注意理论上给定 ( A , P ) (A,P) (A,P),有可能不存在 Π \Pi Π与之对应;这个我没搞明白为什么?
至此我们给出了可接受三元组(admissible triplet) ( A , P , Π ) (A,P,\Pi) (A,P,Π)的定义;
我们的目的是基于这样的考察,若 w ∈ L w\in L w∈L,则当然可以找到一个可接受三元组与之对应;否则任意可接受三元组都不能与 w w w对应;
-
我们根据给定的admissible triplet ( A , P , Π ) (A,P,\Pi) (A,P,Π)构建一系列子语言:
-
设 A = ( C i 1 , C i 2 , . . . , C i t ) , P = ( p j 1 , p j 2 ) j = 1 t , Π = ( n j ) j = 1 t + 1 A=(C_{i_1},C_{i_2},...,C_{i_t}),P=(p_j^1,p_j^2)_{j=1}^t,\Pi=(n_j)_{j=1}^{t+1} A=(Ci1,Ci2,...,Cit),P=(pj1,pj2)j=1t,Π=(nj)j=1t+1;
-
∀ 1 ≤ j ≤ t \forall1\le j\le t ∀1≤j≤t,我们定义子语言 L j L_j Lj,根据如下的方式:
-
向 C i j C_{i_j} Cij中新增一个状态 f j f_j fj;
-
定义子自动机 M j M_j Mj,其中 p j 1 p_j^1 pj1为 M j M_j Mj的初始状态, p j 2 p_j^2 pj2为 M j M_j Mj的唯一的接受状态;
-
对于每一个 q ∈ C i j q\in C_{i_j} q∈Cij以及 α ∈ { 0 , 1 } \alpha\in\{0,1\} α∈{0,1},若 δ M ( α , q ) ∈ C i j \delta_M(\alpha,q)\in C_{i_j} δM(α,q)∈Cij,则定义 δ M j ( α , q ) = δ M ( α , q ) \delta_{M_j}(\alpha,q)=\delta_M(\alpha,q) δMj(α,q)=δM(α,q),否则定义 δ M j ( α , q ) = f j \delta_{M_j}(\alpha,q)=f_j δMj(α,q)=fj;
-
δ M j ( 0 , f j ) = δ M j ( 1 , f j ) = f j \delta_{M_j}(0,f_j)=\delta_{M_j}(1,f_j)=f_j δMj(0,fj)=δMj(1,fj)=fj;
-
定义 L j L_j Lj是由 M j M_j Mj接受的语言;
-
-
注意 L j L_j Lj满足引理 2.4 2.4 2.4的条件;
-
-
最后我们定义一系列 w w w( ∣ w ∣ = n |w|=n ∣w∣=n)的子单词 w 1 , w 2 , . . . , w t w^1,w^2,...,w^t w1,w2,...,wt,其中 w j = w n j + 1 . . . w n j + 1 − 1 w^j=w_{n_j+1}...w_{n_{j+1}-1} wj=wnj+1...wnj+1−1,其中 1 ≤ j ≤ t 1\le j\le t 1≤j≤t,标记 ∣ w j ∣ = n j + 1 − n j − 1 |w^j|=n_{j+1}-n_j-1 ∣wj∣=nj+1−nj−1;
上述一堆定义引出接下来一个非常重要的引理:
-
引理 2.5 2.5 2.5:
( A , P , Π ) (A,P,\Pi) (A,P,Π)是一个admissible triplet,其中 A = ( C i 1 , C i 2 , . . . , C i t ) , P = ( p j 1 , p j 2 ) j = 1 t , Π = ( n j ) j = 1 t + 1 A=(C_{i_1},C_{i_2},...,C_{i_t}),P=(p_j^1,p_j^2)_{j=1}^t,\Pi=(n_j)_{j=1}^{t+1} A=(Ci1,Ci2,...,Cit),P=(pj1,pj2)j=1t,Π=(nj)j=1t+1;
设 w w w是长度为 n n n的单词且满足 d i s t ( w , L ) ≥ ϵ n {\rm dist}(w,L)\ge\epsilon n dist(w,L)≥ϵn;
定义子语言序列 ( L j ) j = 1 t (L_j)_{j=1}^t (Lj)j=1t以及子单词序列 ( w j ) j = 1 t (w_j)_{j=1}^t (wj)j=1t;
则存在某个索引 1 ≤ j ≤ t 1\le j\le t 1≤j≤t,满足 d i s t ( w j , L j ) ≥ ϵ n − t t {\rm dist}(w^j,L_j)\ge\frac{\epsilon n-t}t dist(wj,Lj)≥tϵn−t;
-
备注:
我感觉这里的 k k k好像是 t t t,上面是说 k k k是分量图 C ( G ) \mathcal{C}(G) C(G)顶点的数量;
引理 2.5 2.5 2.5证明:(证明很简短)
-
反证法:
若不存在这样的索引 j j j,则 ∀ 1 ≤ j ≤ t \forall1\le j\le t ∀1≤j≤t:
- 若 n j + 1 − n j ≥ 2 n_{j+1}-n_j\ge2 nj+1−nj≥2,令 w j ∗ ∈ L j w^{j*}\in L_j wj∗∈Lj是一个长度为 n j + 1 − n j − 1 n_{j+1}-n_j-1 nj+1−nj−1的单词,其中 d i s t ( w j , w j ∗ ) < ϵ n − k k {\rm dist}(w^j,w^{j*})<\frac{\epsilon n-k}k dist(wj,wj∗)<kϵn−k;
- 若 n j + 1 − n j = 1 n_{j+1}-n_j=1 nj+1−nj=1,设 w j ∗ = ∅ w^{j*}=\emptyset wj∗=∅;
对于 1 ≤ j ≤ t − 1 1\le j\le t-1 1≤j≤t−1,我们选择 α j ∈ { 0 , 1 } \alpha_j\in\{0,1\} αj∈{0,1}使得 δ M ( α j , p j 2 ) = p j + 1 1 \delta_M(\alpha_j,p_j^2)=p_{j+1}^1 δM(αj,pj2)=pj+11,然后通过构造单词 w ∗ = w 1 ∗ α 1 w 2 ∗ . . . α t − 1 w t ∗ ∈ L w^*=w^{1*}\alpha_1w^{2*}...\alpha_{t-1}w^{t*}\in L w∗=w1∗α1w2∗...αt−1wt∗∈L,于是 d i s t ( w , w ∗ ) ≤ t − 1 + ∑ j = 1 t d i s t ( w j , w j ∗ ) ≤ t − 1 + t ( ϵ n − t ) t ≤ ϵ n − 1 {\rm dist}(w,w^*)\le t-1+\sum_{j=1}^t{\rm dist}(w^j,w^{j*})\le t-1+\frac{t(\epsilon n-t)}t\le \epsilon n-1 dist(w,w∗)≤t−1+∑j=1tdist(wj,wj∗)≤t−1+tt(ϵn−t)≤ϵn−1,矛盾! ■ \blacksquare ■
-
备注:
引理 2.5 2.5 2.5的结论非常重要,首先子单词序列 ( w j ) j = 1 t (w_j)_{j=1}^t (wj)j=1t的定义方式其实就是子单词在 C ( G ) \mathcal{C}(G) C(G)中的转移路线构成的admissible triplet,但是单词 w w w并不属于 L L L,于是根据引理 2.5 2.5 2.5可知,这样每个区块的子单词,至少存在某一段满足距离 L L L是 ϵ t \frac\epsilon t tϵ-far;
-
-
于是,通过上述的引理与各个定义,我们得到了正则语言可检验性的一个证明思路:
-
我们的目的是想要检验是否一个长度为 n n n的单词 w w w是否与某个admissible triplet相匹配:
-
若存在这样的匹配(In the positive case),即 w ∈ L M w\in L_M w∈LM,则 w w w在 M M M中的traversal path直接可以定义得到一个 w w w匹配的admissible triplet;
-
若不存在这样的匹配(In the negative case),即 d i s t ( w , L ) ≥ ϵ n {\rm dist}(w,L)\ge\epsilon n dist(w,L)≥ϵn;
则引理 2.5 2.5 2.5指出,任意admissible triplet ( A , P , Π ) (A,P,\Pi) (A,P,Π),至少有一个子单词 w j w^j wj会距离 L j L_j Lj非常的远(其实就是在平均值以上,这个我感觉还是挺显然的);
然后再根据引理 2.4 2.4 2.4可知,这个 w j w^j wj会包含很多短且不可行的子单词(runs);因此只需要采样少量的随机子单词即可证明 w j w^j wj确实不可行;从而证明了 w w w不可行;
-
-
事情看起来似乎非常顺利,然而问题在于admissible triplets的数量很多,而且显然与 n n n是有关的(事实上这个数量是关于 n n n的一个多项式),这样会导致很难遍历所有的admissible triplets来检查 w w w的子单词;
-
于是我们用如下的方式来解决这一难题:
-
We place evenly in 1 , 2 , . . . , n 1,2,...,n 1,2,...,n a bounded number of transition intervals T s T_s Ts of a bounded length and postulate that a transition between components of C ( G ) \mathcal{C}(G) C(G) should happen inside these transition intervals
-
备注:
我是真TM的不知道这句话是什么意思,postulate是假设的意思,我感觉噢,只是感觉,应该意思是说希望找个admissible triplet,其中正整数序列 Π \Pi Π里面的每个数字分布地相对比较均匀,或者换言之, C ( P ) \mathcal{C}(P) C(P)里面各个分量地大小比较均衡,总之就是转移的interval是比较合理的;
-
-
然后我们证明:
若 w ∈ L w\in L w∈L,则可以对 w w w稍作调整即可满足该限制(restriction);(???)
若 d i s t ( w , L ) ≥ ϵ n {\rm dist}(w,L)\ge\epsilon n dist(w,L)≥ϵn,则对于任意这样的admissible triplet, w w w都远远不能与之匹配;
-
于是在这样的制约情形下,admissible triplet的数量会限制在只与 ϵ \epsilon ϵ相关的某个函数之内;
-
-
具体而言,我们做如下的一些标记:
- m = max j ( m ( C j ) ) , l = l c m ( { g ( G ( C j ) ) } ) m=\max_j(m(C_j)),l={\rm lcm}(\{g(G(C_j))\}) m=maxj(m(Cj)),l=lcm({g(G(Cj))}),其中 l c m \rm lcm lcm是最小公倍数, j j j只遍历那些强连通分量(即可以忽略单个顶点,不过好像作者的意思就是 C ( G ) \mathcal{C}(G) C(G)的顶点就完事了);
- 然后就要设定一个非常神奇的数字了: S = 129 k m log ( 1 / ϵ ) / ϵ S=129km\log(1/\epsilon)/\epsilon S=129kmlog(1/ϵ)/ϵ,这里的 k k k是 C ( G ) \mathcal{C}(G) C(G)顶点的数量; S S S是transition intervals的数量;(我怀疑这里的 129 129 129是写错了,根据下面应该是 128 128 128才对)
- 接下来就是将 S S S个transition intervals { T s } s = 1 S \{T_s\}_{s=1}^S {Ts}s=1S均匀的分布在 [ n ] = { 1 , 2 , . . . , n } [n]=\{1,2,...,n\} [n]={1,2,...,n}上,其中每个transition interval T s T_s Ts的大小为 ∣ T s ∣ = ( k − 1 ) ( l + m ) |T_s|=(k-1)(l+m) ∣Ts∣=(k−1)(l+m);
- 最后再定义一组非常神奇的数字: r i = 128 k 2 m log 2 ( 1 ϵ ) 2 i ϵ , 1 ≤ i ≤ log ( 12 k m / ϵ ) r_i=\frac{128k^2m\log^2(\frac1\epsilon)}{2^i\epsilon},1\le i\le\log(12km/\epsilon) ri=2iϵ128k2mlog2(ϵ1),1≤i≤log(12km/ϵ);
备注:
非常的迷,出现了一个未知的变量 T s T_s Ts,~~我理解 T s T_s Ts应该是一些边(即状态转移)的集合;~~我现在觉得可能就是 T s ⊂ [ n ] T_s\subset[n] Ts⊂[n],而已;
按道理说 S ∣ T s ∣ S|T_s| S∣Ts∣的大小应该差不多是 n n n(不是说均匀分布么),但是这边看起来至少没那么显然… 而且我觉得恐怕大概率不会等于 n n n;
最后一个 r i r_i ri事实上可以写成 − k log ( ϵ ) 2 i S -\frac{k\log(\epsilon)}{2^i}S −2iklog(ϵ)S
于是我们给出如下的检验算法:
-
-
检验算法:
算法输入为单词 w w w,其中 ∣ w ∣ = n |w|=n ∣w∣=n;
- 对于每个满足 1 ≤ i ≤ log ( 12 k m / ϵ ) 1\le i\le\log(12km/\epsilon) 1≤i≤log(12km/ϵ)的 i i i,随机采样 r i r_i ri个随机的 w w w子单词 w ′ w' w′, ∣ w ′ ∣ = 2 i + 1 |w'|=2^{i+1} ∣w′∣=2i+1;
- 对于每一个admissible triplet
(
A
,
P
,
Π
)
(A,P,\Pi)
(A,P,Π):
A = ( C i 1 , . . . , C i t ) P = ( p j 1 , p j 2 ) j = 1 t Π = ( n j ) j = 1 t + 1 \begin{aligned} A&=(C_{i_1},...,C_{i_t})\\ P&=(p_j^1,p_j^2)_{j=1}^t\\ \Pi&=(n_j)_{j=1}^{t+1} \end{aligned} APΠ=(Ci1,...,Cit)=(pj1,pj2)j=1t=(nj)j=1t+1
对于每个 j ( 2 ≤ j ≤ t − 1 ) j(2\le j\le t-1) j(2≤j≤t−1),存在 s ( 1 ≤ s ≤ S ) s(1\le s\le S) s(1≤s≤S),使得 n j ∈ T s n_j\in T_s nj∈Ts,- 如上述方法构造自动机 M j , 1 ≤ j ≤ t M_j,1\le j\le t Mj,1≤j≤t;
- 丢弃掉(discard)那些距离某个 n j n_j nj至多 ϵ n / ( 128 k m log ( 1 / ϵ ) ) \epsilon n/(128km\log (1/\epsilon)) ϵn/(128kmlog(1/ϵ))的子单词;
- 对于每一个保留下的子单词 R R R,若 R R R落在 n j n_j nj与 n j + 1 n_{j+1} nj+1之间,检查 R R R是否关于 M j M_j Mj可行(从 b − n j + 1 b-n_j+1 b−nj+1的字节位开始);其中 b b b是 R R R在 w w w中第一个字节所对应的坐标值;
- 若对于某个admissible triplet,所有用于检测的子单词都是可行的,则算法输出 Y e s Yes Yes,否则至少有一个admissible triplet不可行,算法输出 N o No No;
-
引理 2.6 2.6 2.6:若 d i s t ( w , L ) ≥ ϵ n {\rm dist}(w,L)\ge\epsilon n dist(w,L)≥ϵn,则上述检验算法输出 N o \rm No No的概率至少为 3 4 \frac34 43,若 w ∈ L w\in L w∈L,则上述检验算法总是输出 Y e s \rm Yes Yes;
引理 2.6 2.6 2.6证明:略,太复杂了,最终的结论是查询次数不超过 300 k 2 m log 3 ( 1 ϵ ) ϵ \frac{300k^2m\log^3(\frac1\epsilon)}\epsilon ϵ300k2mlog3(ϵ1);
-
定理 1 1 1:对于任意的正则语言 L L L,每一个整数 n n n以及每一个充分小正数 ϵ > 0 \epsilon>0 ϵ>0,都存在一个关于 L ∩ { 0 , 1 } n L\cap\{0,1\}^n L∩{0,1}n单边错误 ϵ \epsilon ϵ检验算法(one-side error ϵ \epsilon ϵ-testing algorithm),它的查询复杂度为 c log 3 ( 1 / ϵ ) / ϵ c\log^3(1/\epsilon)/\epsilon clog3(1/ϵ)/ϵ,其中常数 c > 0 c>0 c>0只依赖于 L L L;
3 正则语言的下界 Lower Bound for Regular Languages
-
命题 1 1 1:设 L L L是定义在 { 0 , 1 } \{0,1\} {0,1}上正则语言, L = { 1 n : n ≥ 1 } L=\{1^n:n\ge1\} L={1n:n≥1},则对于任意的 n n n,针对 L ∩ { 0 , 1 } n L\cap\{0,1\}^n L∩{0,1}n的 ϵ \epsilon ϵ检验的查询寻复杂度至少为 1 3 ϵ \frac1{3\epsilon} 3ϵ1;
证明略。
4 上下文无关语言的可检验性 Testability of Context-free Languages
4.1 某些上下文无关的语言是不可检验的 Some Context-free Languages are Non-testable
- 命题 2 2 2:上下文无关的语言 L = { v v R u u R } L=\{vv^Ruu^R\} L={vvRuuR},其中 w R w^R wR表示单词 w w w的逆转,是不可检验的;
4.2 Dyck语言的可检验性 Testability of the Dyck Languages
5 总结 Concluding Remarks
参考文献
[1] N. Alon, E. Fischer, M. Krivelevich, M. Szegedy, Efficient testing of large graphs, Proceedings of the 40th IEEE FOCS (1999), to appear.
[2] S. Arora, C. Lund, R. Motwani, M. Sudan, M. Szegedy, Proof verification and intractability of approximation problems, Proceedings of the 33th IEEE FOCS (1992), 14–23.
[3] M. Blum, M. Luby, R. Rubinfeld, Self-testing/correcting with applications to numerical problems. J. Computer System Sciences 47 (1994), 549–595.
[4] M. D. Davis, R. Sigal and E. Weyuker, Computability, Complexityand Languages: Fundamentals of Theoretical Computer Science, Academic Press, 1994.
[5] J. Dixmier, Proof of a conjecture by Erd˝os and Graham concerning the problem of Frobenius, J. Number Theory 34 (1990), no. 2, 198–209.
[6] P. Gemmell, R. Lipton, R. Rubinfeld, M. Sudan, A. Wigderson, Self-testing/correcting for polynomials and forapproximate functions,Proceedings of the 23th ACM STOC (1991), 32–42.
[7] O. Goldreich, S. Goldwasser and D. Ron, Property testing and its connections to learning and approximation. To appear in J. of the ACM, also: Proceedings of the 37th IEEE FOCS (1996), 339–348.
[8] J.E. Hopcroft and J. D. Ullman, Introduction to Automata Theory, Languages, and Computation, Addison-Wesley, 1979.
[9] M. Lewin, A bound for a solution of a linear Diophantine problem, J. London Math. Soc. (2) 6 (1972), 61–69.
[10] R. Lipton, New directions in testing, Unpublished manuscript, 1989.
[11] N. Nisan, M. Szegedy, On the degree of Boolean functions as real polynomials, Proceedings of the 24th ACM STOC (1992), 462–467.
[12] N. Nisan, CREW PRAMs and decision trees, Proceedings of the 21st ACM STOC (1989), 327–335.
[13] R. Rubinfeld, M. Sudan, Robust characterization of polynomials with applications to program testing. SIAM J. of Computing, 25(2) (1996), 252-271.
[14] A. C. Yao, Probabilistic computation, towards a unified measure of complexity. Proceedings of the 18th IEEE FOCS (1977), 222–227.