📜  Arden 定理和具有挑战性的应用 | 2套

📅  最后修改于: 2021-09-28 10:03:05             🧑  作者: Mango

获得了如何绘制基本有限状态机(DFA、NFA 或
$\epsilon$ -NFA)。我们开始从提供的状态机中导出正则表达式。

对于下面提供的某些示例,推导它相当简单。

但是对于以下示例,仅通过观察有限状态机很难推导出正则表达式。为此,我们利用 Arden 定理来简化我们的个体状态方程并提出我们的最终状态方程(可能是也可能不是简化版本)

Arden 定理指出,如果 P & Q 是两个正则表达式$\Sigma$ , 如果 P 不包含$\epsilon$ ,那么下面由 R = Q + RP 给出的方程 R 有唯一解; R = QP*

证明:- R = Q + RP R = Q + QP*P(代入 R 的值)R = Q( $\epsilon$ + P*P) R = QP *( P*P = $P^+$ , $P^+$ + $\epsilon$ = P* )

让我们在 Arden 定理的帮助下解决上面提供的自动机。

我们看到,在状态 C 上,当 a 是输入时,有一个来自 B 的状态转换

C = Ba  

在状态 B 上,输入 b 存在自循环,当输入为 a 时从 A 转移,当输入为 b 时从状态 C 转移

B = Bb + Cb + Aa  

在状态 A 上,有一个$\epsilon$转换(作为开始状态, $\epsilon$必须包括转换),输入 a 上的自循环,当输入为 b 时从 B 的转换。

一 = $\epsilon$ + Aa + Bb

将(2)代入(1),我们得到

C = Ba
C = (Aa + Bb + Cb)a
C = Aaa + Bba + Cba

将(1)代入(2),我们得到

B = Bb + Cb + Aa
B = Aa + Bb + (Ba)b
B = Aa + B(b + ab)
B = Aa(b + ab)*  (Using R = QP*)

将(2)代入(3),我们得到

一 = $\epsilon$ + Aa + Bb A = $\epsilon$ + Aa + Aa(b + ab)*b A = $\epsilon$ + A(a + a(b + ab)*b) A = $\epsilon$ (a + a(b + ab)*b)* A = (a + a(b + ab)*b)*

作为最后一步,让我们将所有简化方程组合到最终状态 C

C = Ba
C = Aa(b + ab)*a
C = (a + a(b + ab)*b)* a (b + ab)* a

现在这个例子对应于从提供的 NFA 到正则表达式的直接派生。

比方说,我们遇到了一个类似的问题

问题:派生一个正则表达式来表示一种甚至没有的语言。的

对于这种情况,仅通过试错法很难得出正则表达式。
我们可能会遇到示例解决方案,例如:-

这可能会满足某些情况,但也会导致不需要的情况和缺少 a 和 b 的情况。
解决这个问题的最好方法是先为它画一个有限状态机,然后从它推导出正则表达式。

下图显示了所提供问题的 DFA

现在我们有了 DFA,让我们使用 Arden 个体状态方程定理来解决它。

我们看到在状态 A 上,有一个输入 b 的自循环和输入 a 的从 B 的转换

一 = $\epsilon$ + 抗体 + 钡

我们看到在状态 B 上,输入 b 上有一个自循环,当输入为 a 时从 A 转换。

B = Aa + Bb

取 B 的方程,我们可以应用 Arden 定理

B = Aa + Bb
B = Aab*

将 B 的值代入 A 我们得到

一 = $\epsilon$ + Ab + Ba A = $\epsilon$ + Ab + (Aab*)a A = $\epsilon$ ( b + ab*a )* A = ( b + ab*a )*

因此,所提供问题的正则表达式是RE : ( b + ab*a )*

我们看到,Arden 定理可以用作强大的简化工具来确定正则表达式并从中设计所需的有限状态机。

请参阅第 1 套