首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生成DFA的转换表

生成DFA的转换表
EN

Stack Overflow用户
提问于 2021-01-16 00:10:14
回答 1查看 80关注 0票数 0

如何将此NFA转换为DFA:

从'a‘上的状态BC不会到达任何状态,因此它不会形成DFA

EN

回答 1

Stack Overflow用户

发布于 2021-01-22 22:01:06

在你的图片中,有一点不清楚哪些州正在接受。如果所有的状态都是可接受的,我们可以写下一个简单的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--> {}。

我们可以写下转换表,如下所示:

代码语言:javascript
复制
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中接受的状态,这组状态可能不是最小的,但您可以很容易地根据接受的状态将其最小化。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65739530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档