NSST preimage判定算法

by 韩志磊

定理 1. 任意NSST \(T = (Q_T, \Sigma, \Sigma', \Gamma, E, q_{0, T}, F_T)\) 和 NFA \(M = (Q_M, \Sigma', \delta_M, q_{0, M}, F_M)\),存在NFA \(N = (Q_N, \Sigma, \delta_N, q_{0, N}, F_N)\),使得若\(w \in L (N)\),则存在\(w' \in T (w)\)使得\(w' \in L (M)\),且\(N\)是可计算的。

证明. 下面构造一个N:

首先,\(Q_N = Q_T \times P (Q_M)^{Q_M \times \Gamma}\),\(P (Q_M)\)表示M的状态的幂集。为了方便,之后N的状态写作\((q, \rho)\),其中q是模拟的T的状态,函数\(\rho \in Q_M \times \Gamma \rightarrow P (Q_M)\)。直观上说,\(\rho (q, x)\)记录了当状态为q时输入变量x代表的串,M会转移到的状态集。

N的初始状态是\((q_{0, T}, \rho_{\varepsilon})\),其中对任意状态q和变量x,\(\rho_{\varepsilon} (q, x) = \{ q \}\)。

作用于函数\(\rho\),变量x和字符串\(w \in (\Gamma \cup \Sigma')^{\ast}\),更新算子U会返回一个新的函数\(\rho'\),其定义为:

\(\displaystyle U (\rho, x, w' a) (q, x) = \left\{ \begin{array}{cc} \delta_M^{\ast} (U (\rho, x, w') (q, x), a) & a \in \Sigma'\\ \bigcup_{q' \in U (\rho, x, w') (q, x)} \rho (q', a) & a \in \Gamma \end{array} \right.\)
\(\displaystyle U (\rho, x, \varepsilon) (q, x) = \{ q \}\)
\(\displaystyle U (\rho, x, w) (q, y) = \rho (q, y), x \neq y\)

对于NSST的并发赋值\(A \in \Gamma \rightarrow (\Gamma \cup \Sigma')^{\ast}\),扩展U为\(U^{\ast}\):

\(\displaystyle U^{\ast} (\rho, A) (q, x) = U (\rho, x, A (x)) (q, x)\)

对N的任意状态\((q, \rho)\),如果\((q', A) \in E (q, a)\),则对N有:

\(\displaystyle ((q, \rho), a, (q', U^{\ast} (\rho, A))) \in \delta_N\)

对字符串\(w \in (\Gamma \cup \Sigma')^{\ast}\)和函数\(\rho\),定义集合\(R_{w, \rho}\)为:

\(\displaystyle R_{w, \rho} = \left\{ \begin{array}{cc} \{ q_{0, M} \} & w = \varepsilon\\ \delta_M^{\ast} (R_{w', \rho}, a) & w = w' a \wedge a \in \Sigma'\\ \bigcup_{q \in R_{w', \rho}} \rho (q, a) & w = w' a \wedge a \in \Gamma \end{array} \right.\)

最后,NFA N的终止状态集\(F_N\)为满足下列条件的状态\((q, \rho)\)的集合:

  1. \(F_T (q)\)有定义。

  2. 令\(w = F_T (q)\),则\(R_{w, \rho} \cap F_M \neq \emptyset\)

注记 2. 其实上面的构造直观地说起来还是比较简单:NFA N在模拟NSST T的状态转移的同时,也同时模拟T中变量的改变。只不过不是直接模拟变量的值(这本来也是做不到的),而是模拟将T的当前格局下的变量输入NFA M后会产生的效果(也就是转移到的状态)。由于T的每一步转移会产生一组并发的赋值,我们只需要模拟赋值对状态的改变即可。

注记 3. 值得注意的是,上面的构造方法实际上根本没用上copyless的性质。换言之,如果考虑不限制copyless的NSST,上述构造方法依旧成立。这种新的Transducer表达力比2FT更强。