【问题标题】:Finding DFA of r* when r and DFA of r were deifined当 r 和 r 的 DFA 被定义时,找到 r* 的 DFA
【发布时间】:2017-09-17 04:29:35
【问题描述】:

我想要在定义 r 和 r 的 DFA 时找到 r* 的 DFA 的示例。又该如何思考?我读了一本教科书,但我没有清楚地理解。谢谢。

【问题讨论】:

    标签: finite-automata automata-theory


    【解决方案1】:

    r* 是包含所有字符串的语言,这些字符串是来自 r 的 0,1,2,3,4,... 字符串的串联。因此,r* 的明显 FA 是可以将 DFA 运行 r 0,1,2,3,4,... 次并在其中任何一次运行后接受的 FA。从任何接受状态到开始状态的 lambda/empty 转换将实现 1 次或多次运行。由此产生的自动机不再是确定性的。您可以使用标准方法来确定它。此构造不会将空字符串添加到自动机的语言中。如果它已经存在于 r 中,则没有必要。否则,您需要在自动机中为 r* 添加一种接受空字符串的方法,例如使用新的开始状态。

    在消除空转换方面有一点经验,您还可以更直接地为简单的情况构建 DFA。

    【讨论】:

    • 小心 - 只是从每个接受状态添加一个 epsilon 到开始状态并不一定创建一个接受输入语言星的 NFA。 (我通常会在我的理论课程中向我的学生提出一个问题,即寻找一个失败的例子作为练习。)
    • 谢谢,@templatetypedef,我在这里有点匆忙,不记得了。我希望现在的答案更好。
    • 这里还是有问题。这是一个有效的构造:添加一个接受的新开始状态。添加一个从它到旧开始状态的 epsilon 转换,并将每个旧接受状态的 epsilon 添加到新的开始状态。
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 1970-01-01
    • 2014-10-23
    • 1970-01-01
    • 2011-01-02
    • 2010-11-23
    • 1970-01-01
    • 2021-10-17
    相关资源
    最近更新 更多