【问题标题】:Make Transition table for DFA为 DFA 制作转换表
【发布时间】:2021-01-15 16:10:14
【问题描述】:

如何将此 NFA 转换为 DFA:

从“a”上的状态 [BC] 不会进入任何状态,因此它没有形成 DFA

【问题讨论】:

  • 我觉得这个更适合cs.stackexchange.com
  • 这只是意味着 DFA 不接受 ab 之后的字符串。这可以通过不完整的 NFA 或 DFA(如本例)或引入无法转义且不接受的死状态来指示。

标签: computation-theory dfa nfa


【解决方案1】:

在你的照片中,有点不清楚哪些州正在接受。如果所有状态都接受,我们可以写下一个具有等效状态的平凡 DFA。因此,为了争论,我们假设可能只有其中一些州正在接受。

因为 A 是起始状态,我们知道对于字母表中的每个符号,我们都需要从状态 {A} 进行转换。我们找到 {A} --a--> {A,B,C}, {A} --b--> {B,C} 和 {A} --c--> {C}。我们必须在 DFA 中引入三个新状态 - {A,B,C}、{B,C} 和 {C} - 我们也需要对这些状态进行转换。

对于 {A,B,C} 我们找到 {A,B,C} --a--> {A,B,C}, {A,B,C} --b--> {B, C} 和 {A,B,C} --c--> {C}。这些州已经在我们的待办事项清单上,所以我们可以继续。

对于 {B,C} 我们找到 {B,C} --a--> {}, {B,C} --b--> {B,C} 和 {B,C} --c --> {C}。我们引入了一个对应于空集的新状态,因此我们将其放在待办事项列表中。

对于 {C},我们找到 {C} --a--> {}、{C} --b--> {} 和 {C} --c--> {C}。没有引入新的状态。

最后,很明显 {} --a--> {}、{} --b--> {} 和 {} --c--> {}。

我们可以把转换表写成如下:

q            s    q'
-------------------------
{A}          a    {A,B,C}
{A}          b    {B,C}
{A}          c    {C}
{A,B,C}      a    {A,B,C}
{A,B,C}      b    {B,C}
{A,B,C}      c    {C}
{B,C}        a    {}
{B,C}        b    {B,C}
{B,C}        c    {C}
{C}          a    {}
{C}          b    {}
{C}          c    {C}
{}           a    {}
{}           b    {}
{}           c    {}

根据原始 NFA 中接受的状态,这组状态可能不是最小的,但您可以根据接受的状态轻松地将其最小化。

【讨论】:

    猜你喜欢
    • 2020-06-03
    • 2011-08-16
    • 2013-01-28
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多