【问题标题】:How can I find the closure of a D FA我怎样才能找到一个 D FA 的关闭
【发布时间】:2016-09-11 12:07:35
【问题描述】:

我正在尝试实现 D FA 的关闭。我已经在不使用 N FA 的情况下成功实现了 D FA 的 Union、Compliment Intersection、Subtraction 和 Concatenation。我们的老师没有告诉我们找到闭包的算法。我试图通过将 D FA 连接到自身来做到这一点,但很明显它不起作用。

我只需要通过使用矩阵来表示 D FA 的步骤。另外,请您详细说明克莱因闭包,但我相信一旦我知道如何获得闭包,我就可以做到。

【问题讨论】:

    标签: regular-language dfa


    【解决方案1】:

    我不确定您所说的一般关闭是什么意思。但是对于 Kleene 闭包,您可以像这样进行:从每个最终状态,您添加一个 epsilon-transition(不读取任何内容)到开始状态。所以读完该语言的一个单词后,你可以从另一个单词开始。

    当然,生成的自动机不再是确定性的。但是有再次确定它的标准程序。

    对于直接构造:查看所有进入最终状态的转换,例如 (q,a) -> f。从输出状态添加另一个转换,读取相同的符号并进入开始状态:(q,a) -> s。所以自动机有可能读完这个词,然后重新开始。

    【讨论】:

    • 对于第二个选项:新的转换也会使自动机不确定:同一个字母的两个转换。所以在这里你也需要确定性。我忽略了这一点。
    猜你喜欢
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 1970-01-01
    • 2012-11-30
    • 2020-12-26
    • 2014-06-10
    • 2023-03-12
    • 1970-01-01
    相关资源
    最近更新 更多