Regular language 设计接受特定长度字符串的NFA

Regular language 设计接受特定长度字符串的NFA,regular-language,finite-automata,nfa,Regular Language,Finite Automata,Nfa,我期待着设计一个FA,它接受某种字符串,接受某种a和B 首先是一个字符串,其a的数目比B的数目高五倍 我的意思是L={w∈{A,B}*和(nA(W)-nB(W)mod 5=0) 以及接受字符串中不同字符数的FA: L={A^n B^m C^k | n,k>0 and m>3} 我设计了一些FAs,但它们在这个复杂的字符串上工作得并不完美 关于我应该如何设计这个问题有什么帮助吗?不幸的是,你的问题令人困惑,因为英文文本与数学公式不一致。我将尝试回答以下四个问题: 一种由{A,b}上

我期待着设计一个FA,它接受某种字符串,接受某种a和B

首先是一个字符串,其a的数目比B的数目高五倍

我的意思是
L={w∈{A,B}*和(nA(W)-nB(W)mod 5=0)

以及接受字符串中不同字符数的FA:

L={A^n B^m C^k | n,k>0 and m>3}
我设计了一些FAs,但它们在这个复杂的字符串上工作得并不完美


关于我应该如何设计这个问题有什么帮助吗?

不幸的是,你的问题令人困惑,因为英文文本与数学公式不一致。我将尝试回答以下四个问题:

  • 一种由{A,b}上的字符串组成的语言,其中A(#A(w))的数目为 是b的五倍(#b(w)),
    L={w in{a,b}*:#a(w)>#b(w)和#a(w)=#b(w)mod5}

    NFA无法做到这一点。通过使用带有字符串a^pb^5p的泵送引理(p.L),证明很简单,其中p是p.L的常数

  • 对于语言:
    L={w∈{A,B}*:(nA(W)-nB(W))mod 5=0}
    你写的, 您可以使用由5个状态组成的周期的DFA来实现这一点

    转换是,如果你读a顺时针,如果你读b逆时针。随机选择一个状态作为初始状态,相同的状态将成为最终状态

  • 对于语言L={A^nb^mc^k|n,k>0和m>3},应该很容易找到 如果你把L理解为
    L=A(A)*B(B)*c^4(c)*

  • 对于接受字符串中不同字符数的语言(比如a,b)。语言应该是
    R={w in{a,b}*:#a(w)不等于#b(w)}

    同样,NFA无法识别该语言。如果该语言是常规语言(由NFA识别),则该语言也是:

    L=a*b*交集(R补码)
    。语言L是
    {a^n b^n/n非负整数}

    语言L是大多数书中第一个涉及非规则语言的例子


希望这个答案对您有所帮助。

下面是第二种情况的一个简单正则表达式:
AA*BBBBB*CC*
。第一种情况最简单的实现方式是使用下推自动机(状态机+堆栈)而不是FSM。(事实上,我认为在无限长的字符串上使用FSM是不可行的,因为所需的状态数将增长到无穷大,但我必须通过推导来确定。)实际上,
nA(W)-nB(W)mod 5=0
似乎暗示
nB(W)
可能大于n
nA(W)
还有,我能不能为他们设计一个FA?我被困在这里面了!!!