我需要为这种语言创建一个 NFA(或 DFA,还不知道会是哪个):
L(A) = { w ∈ {a,b}* | count(w, a) = 2i, count(w, b) = 3j, i, j ∈ ℕ }
count(w, z) 定义字母 z 在单词 w 中出现的频率。在这种情况下,'a' 是 2 的倍数,'b' 是 3 的倍数。
有效单词示例:babab、aabbb、bbaab、bbbabbba
我努力为此创建一个自动机,所以我想我会先尝试为它创建一个正则表达式,然后使用这种方法将其转换为 NFA ,因为我可以在正则表达式测试站点上轻松地对其进行测试。但这也没有用。我最终得到了太多看似没有尽头的组合。
如果不使用某种计数机制,我不知道如何为此创建正则表达式。有人可以给我一个提示吗?