【发布时间】:2014-09-25 16:22:07
【问题描述】:
我从未研究过 fa 以重新转换两个最终状态。
我该怎么办?
我应该摆脱另一个最终状态吗?
我摆脱了q3,我得到了
(a*b(aa)*bb*ab)*
或者我应该交替和kleene star q1 到 q3 和 q1 到 q3 到 q1?
如果我这样做,我会得到
(a*b(aa)*bb* + a*b(aa)*bb*ab)*
这有点接近,因为alternate 的左侧可以在q3 结束,而其他在q1 结束。但是话又说回来,即使 fa 显然可以,该正则表达式仍然存在不接受简单 'a' 的问题。
【问题讨论】:
-
如果要将其转换为正则表达式,则需要先将其转换为DFA。添加状态
q4和从q1到q4和从q3到q4的epsilon 路径。然后将其转换为 DFA。如果只有一种接受状态,事情应该会更容易。 -
如果您仍然无法解决,我想在我回家后向您展示我的步骤。 :)
-
@HuStmpHrr:将 NFA 转换为 DFA 可能(通常会)将单个接受状态拆分为多个接受状态。在上面的示例中,您最终会得到相同的两个接受状态...
-
我将非常感激。 :) 我错过了很多课程(3 周),而自动机和语言理论并不是我现在正在学习的唯一高 cmsc 课程
-
@HuStmpHrrr 那是我的下一个问题,不会添加另一个状态并将其转换为 DFA 只会添加更多最终/接受状态,因此会更困难吗?或者与 NFA 到 RE 相比,还有另一种将 DFA 转换为 RE 的方法吗?
标签: regex regular-language finite-automata