【问题标题】:Converting Epsilon-NFA to NFA将 Epsilon-NFA 转换为 NFA
【发布时间】:2015-09-16 05:03:45
【问题描述】:

我无法理解将 epsilon-NFA 转换为 NFA 的过程,所以我想知道是否有人可以帮助我:

答案是:

新 NFA 中的 0 的 A 指向 1,2 和 2。我认为这是因为 Epsilon NFA 中的 0 导致 1 和 2 带有 A(与 Epsilon 结合)。那么为什么 1,2 没有到 2 的 A 步,因为在 Epsilon NFA 中 1 有一个到 1 和 2 的 A 步?

【问题讨论】:

    标签: state automata computation-theory nfa epsilon


    【解决方案1】:

    当您从 NFA 中删除 ε 时,您应该在转换时小心 ε 转换的方向。

    在您的情况下,ε 转换是从节点 1 到节点 2,这是一个 接受状态。因此,您需要考虑所有传入的转换 状态1。

    此外,由于 {1} 在 ε 转换时移动到 {2},所以 1 也可以减少到 {1,2} 并且它将是一个接受状态。查看this question 了解为什么会发生这种情况。

    因此,为了去除 ε-transition,检查所有传入的状态 1 的转换,将 {1} 替换为接受状态 {1,2} 并转换它们:-

    1. 状态 0 在读取 a 时会转换到状态 1,状态 1 会在读取到 ε 时自动转换到状态 2。

    因此,您应该省略从 1 到 2(ε-transition)的这条路径,并说在读取 a 时状态 0 会同时转换为 {1} 和 {2}。因此,只有 1 个转换将作为

    添加到现有 NFA
    {0} -> {2} (on reading a)    // should be drawn, not given
    {0} -> {1} (on reading a)    // this is already given
    
    1. 状态 2 在读取 a 时会转换到状态 1,而状态 1 在读取到 ε 时会自动转换到状态 2。

    因此,您应该省略从 1 到 2(ε 转换)的这条路径,并说读取 a 时的状态 2 转换到 {1} 和 {2} 本身。因此,只有 1 个转换将作为

    添加到现有 NFA
    {2} -> {2} (on reading a)    // a self-loop, should be drawn, not given
    {2} -> {1} (on reading a)    // this is already given
    

    请特别注意将状态 {1} 替换为 由于上述原因,接受状态 {1,2}。

    没有更多指向状态 1 的传入箭头,因此所有依赖关系都已解决。新的 NFA 匹配您给定的 NFA 作为答案。

    【讨论】:

      猜你喜欢
      • 2012-10-20
      • 2018-05-13
      • 2022-06-30
      • 2011-08-16
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 2019-03-21
      相关资源
      最近更新 更多