📌  相关文章
📜  从有限自动机生成正则表达式

📅  最后修改于: 2021-09-27 15:46:07             🧑  作者: Mango

先决条件 – FA 介绍、正则表达式、语法和语言、从正则表达式设计 FA

有两种方法可以将 FA 转换为正则表达式 –
1. 状态消除法——

  • 第1步 –
    如果开始状态是一个接受状态或有转换,添加一个新的非接受开始状态,并在新的开始状态和以前的开始状态之间添加一个 € 转换。
  • 第2步 –
    如果有多个接受状态或单个接受状态有转换,则添加一个新的接受状态,使所有其他状态不接受,并添加从每个先前接受状态到新接受状态的 € 转换。
  • 第 3 步 –
    依次对于每个非启动非接受状态,消除该状态并相应地更新转换。

示例:-

解决方案:-
第1步

第2步

第 3 步

2. Arden 定理——设 P 和 Q 是 2 个正则表达式。如果 P 不包含空字符串,则 R 中的以下方程,即 R = Q + RP,有一个唯一解 R = QP*

假设——

  • 转移图不应该有€-moves。
  • 它必须只有一个初始状态。

使用 Arden 定理找到确定性有限自动机的正则表达式 –

  1. 为了获得自动机的正则表达式,我们首先为所有状态创建给定形式的方程
    q 1 = q 1 w 11 +q 2 w 21 +…+q n w n1 +€(q 1是初始状态)
    q 2 = q 1 w 12 +q 2 w 22 +…+q n w n2
    .
    .
    .
    q n = q 1 w 1n +q 2 w 2n +…+q n w nn

    w ij是表示从 q i到 q j边的标签集的正则表达式

    注意 –对于平行边,表达式中将有许多该状态的表达式。

  2. 然后我们求解这些方程以获得关于 w ij 的q i方程,该表达式是所需的解,其中 q i是最终状态。

示例:-

解决方案

:-
这里初始状态是q 2 ,最终状态是q 1
三个状态q 1 、q 2和q 3的方程如下?
q 1 = q 1 a + q 3 a + €(€ 移动是因为 q 1是初始状态)
q 2 = q 1 b + q 2 b + q 3 b
q 3 = q 2
现在,我们将解决这三个方程?
q 2 = q 1 b + q 2 b + q 3 b
= q 1 b + q 2 b + (q 2 a)b (q 3 的代入值)
= q 1 b + q 2 (b + ab)
= q 1 b (b + ab)*(应用阿登定理)
q 1 = q 1 a + q 3 a + €
= q 1 a + q 2 aa + €(替换 q 3 的值)
= q 1 a + q 1 b(b + ab*)aa + €(q 2 的替代值)
= q 1 (a + b(b + ab)*aa) + €
= € (a+ b(b + ab)*aa)*
= (a + b(b + ab)*aa)*
因此,正则表达式是 (a + b(b + ab)*aa)*。

GATE CS 角问题

练习以下问题将帮助您测试您的知识。所有问题都在前几年的 GATE 或 GATE 模拟测试中提出。强烈建议您练习它们。

  1. GATE CS 2008,问题 52
  2. GATE CS 2007,问题 74
  3. GATE CS 2014 (Set-1),问题 25
  4. GATE CS 2014 (Set-1),问题 65
  5. GATE IT 2006,问题 5
  6. GATE CS 2013,问题 33
  7. GATE CS 2012,问题 12