自动机小述(三又二分之一)
自动机小述(三又二分之一)
by Amamiya Fuko
雨沥奏如常,人似在故乡
引言
是风子,整点有意思的。
本篇给出一个计算二进制加法的下推自动机。
分析
首先构建半加器,它是一个双输入双输出的部件
0 1 0 00 01 1 01 10 \begin{array}{r|ll} & 0 & 1 \\ \hline 0 & 00 & 01 \\ 1 & 01 & 10 \end{array} 010000110110
有文法为
1. S → 00 2. S → 01 3. S → 11 4. S → S 00 5. S → S 01 6. S → S 11 \begin{array}{rcl} 1.S & \to & 00 \\ 2.S & \to & 01 \\ 3.S & \to & 11 \\ 4.S & \to & S00 \\ 5.S & \to & S01 \\ 6.S & \to & S11 \\ \end{array} 1.S2.S3.S4.S5.S6.S→→→→→→000111S00S01S11
然后构建在半加器基础上的加法器,这是一个双输入单输出的部件
0 1 0 0 1 1 1 \begin{array}{r|ll} & 0 & 1 \\ \hline 0 & 0 & 1 \\ 1 & 1 & \\ \end{array} 0100111
文法为
1. T → 0 2. T → 1 3. T → T 0 4. T → T 1 \begin{array}{rcl} 1.T & \to & 0 \\ 2.T & \to & 1 \\ 3.T & \to & T0 \\ 4.T & \to & T1 \end{array} 1.T2.T3.T4.T→→→→01T0T1
设有一三栈下推自动机,其第三栈就是运算结果
00 10 01 11 ε → q 1 q 2 , S / S 0 , S / S , S / S q 2 q 2 , S / S 0 , S / S , S / S q 2 , S / S 0 , S / S 1 , S / L 0 q 2 , S / S 0 , S / S 1 , S / S q 2 , S / S 1 , S / S 0 , S / S q 3 , S / S , S / S 0 , S / S ∗ q 3 q 3 , 1 / 1 1 − 1 , 0 / 0 0 − 1 , S / S 1 q 3 , 0 / 0 0 − 1 , 1 / 1 1 − 1 , S / S 1 q 3 , 0 / 0 0 − 1 , 0 / 0 0 − 1 , S / S 0 \begin{array}{r|lllll} & 00 & 10 & 01 & 11 & \varepsilon \\ \hline \to q1 & & & & & q2,S/S0,S/S,S/S \\ q2 & q2,S/S0,S/S,S/S & q2,S/S0,S/S1,S/L_0 & q2,S/S0,S/S1,S/S & q2,S/S1,S/S0,S/S & q3,S/S,S/S0,S/S \\ *q3 & & & & & \begin{array}{l} q3,1/11^{-1},0/00^{-1},S/S1 \\ q3,0/00^{-1},1/11^{-1},S/S1 \\ q3,0/00^{-1},0/00^{-1},S/S0 \end{array} \end{array} →q1q2∗q300q2,S/S0,S/S,S/S10q2,S/S0,S/S1,S/L001q2,S/S0,S/S1,S/S11q2,S/S1,S/S0,S/Sεq2,S/S0,S/S,S/Sq3,S/S,S/S0,S/Sq3,1/11−1,0/00−1,S/S1q3,0/00−1,1/11−1,S/S1q3,0/00−1,0/00−1,S/S0