DennyQi's Log

Deterministic Finite Automaton

对于一个alphabet Σ\Sigma,我们称一个有限长字符序列w=a1an,aiΣw=a_1\cdots a_n,a_i\in \SigmaΣ\Sigma下的一个word,全体word(也即全体有限长Σ\Sigma字符序列)记为Σ\Sigma^*。定义Σ\Sigma下的一个语言(language)为Σ\Sigma^*的一个子集(也即某个LΣL\subseteq \Sigma^*)。

长度为0的word记为ϵ\epsilon,这也是一个word;Σ\varnothing \subseteq \Sigma^*,这也是一个language;

DFA

一个确定性有限状态自动机(deterministic finite automaton, DFA)是一个五元组M=(Q,Σ,δ,Q0,F)M=(Q,\Sigma,\delta,Q_0,F)。其中,QQ是一个有限大小的集合,称为状态集(set of states);Σ\Sigma是一个alphabet;δ:Q×ΣQ\delta:Q\times \Sigma\to Q称为状态转移函数(transition function),在任意状态qQq\in Q,通过字符aΣa\in \Sigma做状态转移,会到达状态q=δ(q,a)q'=\delta(q,a),这一过程可以简写为qaqq\stackrel{a}\to q'Q0QQ_0\in Q,称为初始状态(initial states);FQF\subseteq Q,称为终止状态集合(set of final states)。

对于Σ\Sigma中的一个word w=a1anw=a_1\cdots a_n,如果从MM的初始状态Q0Q_0开始,依次以a1,a2,,ana_1,a_2,\cdots,a_n做状态转移,最终到达某个终止状态qfFq_f\in F,就称自动机接受word ww。如果终止状态qf∉Fq_f\not\in F,就称自动机不接受ww。规定,语言\varnothing能被任何自动机接受。

如果Σ\Sigma上的一个language LL中的每个word都能被自动机MM接受,并且每个不属于LL的word都不被MM接受,就称MM接受language LL。此时LL可以记作L(M)\mathcal{L}(M)

NFA

一个非确定性有限状态自动机(nondeterministic finite automaton, NFA)是一个五元组M=(Q,Σϵ,δ,Q0,F)M=(Q,\Sigma_\epsilon,\delta,Q_0,F)。其中,QQ是一个有限集,依然称为状态集;Σϵ:=Σ{ϵ}\Sigma_\epsilon:=\Sigma\cup\{\epsilon\},NFA中空串也可以做状态转移;NFA的状态转移函数定义为δ:Q×Σϵ2Q\delta:Q\times \Sigma_\epsilon\to 2^Q,也即状态转移可以同时到达多个状态(有多条同一个字符的状态转移边);初始状态也有多个,Q0QQ_0\subseteq Q;终止状态的定义和DFA相同,FQF\subseteq Q

对于Σ\Sigma中的一个word w=a1anw=a_1\cdots a_n,如果存在状态序列q0q1qnq_0q_1\cdots q_n满足q0Q0,qi+1δ(qi,ai+1),qnFq_0\in Q_0,q_{i+1}\in \delta(q_i,a_{i+1}),q_n\in F,就称MM接受ww。和原先一样,如果MM接受的word集合恰好是language LL,就称MM接受语言LL

Regular Expressions

给定alphabet Σ\Sigma,是否每个Σ\Sigma下的language都存在某个DFA或NFA能接受它?“全体能被某个DFA接受的language集合”和“全体能被某个NFA接受的language集合”相比,哪个集合更大?第一个问题的答案是否定的,一般只有一部分language能被DFA或NFA接受,这类language被称为是regular的;第二个问题的答案是,这两个集合恰好相等,也即DFA和NFA在表达能力上等价。

DFA与NFA表达能力的等价性

下面证明对于Σ\Sigma下的任意一个language LL,存在一个DFA MM能接受LL当且仅当存在一个NFA NN能接受LL

还没写

Regularity

对于Σ={a,b}\Sigma=\{a,b\},我们证明language {ϵ,ab,aabb,aaabbb,}\{\epsilon,ab,aabb,aaabbb,\cdots\}(可以简写为{anbnnN}\{a^nb^n\mid n\in \N\})不能被任何NFA或DFA接受。只需证明不能被NFA接受。Pf. 如果存在这样一个NFA接受该language,那么对于任意mNm\in \Nambma^mb^m能被该NFA接受,那么该NFA上存在一个状态转移序列:q0q_0出发,做mm次字符aa的转移,到达状态qtq_t,再做mm次字符bb的转移,到达状态qsFq_s\in F。对于足够大的mm,这一过程经过的2m+12m+1个状态一定有重复(因为状态总数是有限的),假设重复发生在第k2k_2个字符转移到第k1k_1个字符时,这意味着状态转移形成了环,自动机可以在该环上重复转移任意多次,最终依然到达终止状态,这样接受的字符串一定不在language当中,矛盾。 Qed.

那么,符合什么条件的language是能被NFA接受的呢?我们先考察一下能被NFA接受的language的特性,根据这些特性总结出一套称为“正则表达式”的表达字符串的方法,然后证明一个language能被某个NFA接受当且仅当其能用正则表达式表示。

还没写。

\stackrel{\infty}\exists

Infinite Words

定义Σ\Sigma下的infinite word为w=a1anw=a_1\cdots a_n\cdotsi1,aiΣ\forall i\geq 1,a_i\in \SigmaΣ\Sigma下的全体infinite word集合记为Σω\Sigma^\omega

对于一个Σ\Sigma下的language LL,也即对于LΣL\subseteq \Sigma^*,记LωL^\omega表示集合{wΣωw=w1wn,wiL}\{w\in \Sigma^\omega\mid w=w_1\cdots w_n\cdots,w_i\in L\},它是LL中的word拼成的infinite word集合。注意,如果ϵL\epsilon\in L,那么LωL^\omega中包含finite word,根据定义,性质LωΣωL^\omega\subseteq \Sigma^\omega不成立;如果ϵ∉L\epsilon\not\in L,那么LωΣωL^\omega\subseteq \Sigma^\omega成立。

NBA

我们无法判定一个infinite word是否被NFA接受,因为它永远不会停止状态转移。如何用一个有限状态自动机来定义一个无限字符串是否被接受呢?一个方法是判断:在状态转移过程中,是否无穷次经过终止状态。

非确定性Buechi自动机(nondeterministic Buechi automata, NBA)定义如下: