Binary 哪种有限状态机捕获的二进制字符串的';01';和';10';?

Binary 哪种有限状态机捕获的二进制字符串的';01';和';10';?,binary,state-machine,Binary,State Machine,我需要帮助设计一个有限状态机,它接受包含与模式10出现次数一样多的模式01出现次数的二进制字符串 我有点难以理解到底哪些字符串应该被接受,哪些应该被拒绝 欢迎提供任何指导。问题的语言是什么? […]二进制字符串,包含的模式01的出现次数与模式10的出现次数相同。我有点难以理解到底哪些字符串应该被接受,哪些应该被拒绝 您的规范定义的语言实际上正是由 空字符串 以相同字符开头和结尾的所有字符串 接受空字符串,因为它包含任何一种模式的零次出现;容易的。 为了理解为什么所有非空接受字符串必须以相同的

我需要帮助设计一个有限状态机,它接受包含与模式
10
出现次数一样多的模式
01
出现次数的二进制字符串

我有点难以理解到底哪些字符串应该被接受,哪些应该被拒绝

欢迎提供任何指导。

问题的语言是什么? […]二进制字符串,包含的模式
01
的出现次数与模式
10
的出现次数相同。我有点难以理解到底哪些字符串应该被接受,哪些应该被拒绝

您的规范定义的语言实际上正是由

  • 空字符串
  • 以相同字符开头和结尾的所有字符串
接受空字符串,因为它包含任何一种模式的零次出现;容易的。 为了理解为什么所有非空接受字符串必须以相同的字符开始和结束,而不是提出一个形式化的证明,让我们来看看几个例子。我会用

  • --
    以突出显示出现的
    01
    模式,以及
  • **
    以突出显示
    10
    模式的出现
字符串
10001010
此字符串包含

  • 2次出现
    01
    ,以及
  • 出现3次
    10
如下图所示:

10001010
**  ****
   ----
11001111
 **--
因此,它不被接受。请注意,它不是以相同的字符开始和结束的

字符串
11001111
此字符串包含

  • 1出现
    01
    ,以及
  • 出现1次
    10
如下图所示:

10001010
**  ****
   ----
11001111
 **--
因此,它被接受。请注意,它以相同的字符(
1
)开始和结束

你明白了

描述所讨论语言的有限状态机 我需要帮助设计有限状态机[…]

以下是一个FSM,它描述了所讨论的语言:

为了让自己相信它确实描述了这里感兴趣的语言,你可以考虑

  • s0作为仅接受空字符串的状态
  • s1表示仅接受以
    0
    开头和结尾的字符串的状态
  • s2表示下一个字符必须为
    0
    才能被接受的输入字符串的状态
  • s3表示只接受以
    1
    开头和结尾的字符串的状态
  • s4表示下一个字符必须是输入字符串的
    1
    才能被接受的状态
奖金! 这里是我为绘制上面的FSM而编写的LaTeX代码

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{
自动机,
定位
}
\开始{document}
\开始{tikzpicture}[
节点距离=2cm,
在网格上,
汽车,
比例=.8,
变换形状,
]
\节点[状态,初始,接受](s0){$s_0$};
\节点[状态,接受](s1)[右上方=s0]{$s_1$};
\节点[状态](s2)[right=of s1]{$s_2$};
\节点[状态,接受](s3)[右下=s0]{$s_3$};
\节点[状态](s4)[右=s3]{$s_4$};
\路径[->](s0)边节点{0}(s1)
(s1)边[向左弯曲]节点{1}(s2)
边[循环上方]节点{0}()
(s2)边[循环右]节点{1}()
边[向左弯曲]节点{0}(s1);
\路径[->](s0)边缘节点[swap]{1}(s3)
(s3)边[bend right]节点[swap]{0}(s4)
边[下面的循环]节点{1}()
(s4)边[循环右]节点{0}()
边[bend right]节点[swap]{1}(s3);
\结束{tikzpicture}
\结束{document}

您可能需要用描述您语言的语言更精确地回答问题,因为在我看来,这听起来很像创建一个FSM的经典技巧问题,该FSM可以识别L={0^n1^n:n是一个正整数},或者简单地说,某个模式后跟相同数字的不同模式

这不能用确定性或非确定性有限状态机来完成,因为要计算N,需要一个无限(或非有限)状态机

语法可以解决这个问题。 其内容如下: S->01S10
S->(epsilon)(换句话说,消失)

这听起来很像创建一个FSM的经典技巧问题,它识别L={0^n1^n:n是一个正整数}[…]。但事实并非如此。如我的回答所示,OP的语言是常规语言。我同意您的机器确实接受所编写的语言。最初的描述令人怀疑地看起来像是一种非规则语言,经过重新编写,使其具有规则性。。。但也许不是。注意你的语法太严格了。例如,它不能生成诸如
101
1111
等字符串。