繁体   English   中英

什么有限状态机捕获具有相同数字'01'和'10'的二进制字符串?

[英]What finite-state machine captures binary strings with equal numbers of '01' and '10'?

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

我有点难以理解应该接受哪些字符串以及应该拒绝哪些字符串。

欢迎任何指导。

有问题的语言是什么?

二进制字符串,其中包含模式01出现与模式10出现一样多。 我有点难以理解应该接受哪些字符串以及应该拒绝哪些字符串。

您的规范定义的语言实际上就是由组成的集合

  • 空字符串,
  • 所有以相同字符开头和结尾的字符串。

接受空字符串,因为它包含任何模式的零次出现; 简单。 要了解为什么所有非空接受的字符串都必须以相同的字符开头和结尾,而不是拿出正式的证明,让我们看几个示例。 我会用的

  • --突出01模式的出现,和
  • **突出显示10模式的出现。

字符串10001010

这个字符串包含

  • 2次出现01 ,和
  • 3次出现10

如下所示:

10001010
**  ****
   ----

因此,它不被接受。 请注意,它不会以相同的字符开头和结尾。

字符串11001111

这个字符串包含

  • 1次出现01 ,和
  • 1次出现10

如下所示:

11001111
 **--

因此,它被接受。 请注意,它以相同的字符( 1 )开头和结尾。

你明白了......

描述所讨论语言的有限状态机

我需要帮助设计有限状态机[...]

这是描述问题语言的FSM:

在此输入图像描述

为了说服自己确实在这里描述了感兴趣的语言,您可以想到

  • s0为仅接受空字符串的状态;
  • s1作为只接受以0开头和结尾的字符串的状态;
  • s2作为状态,在此状态下,到目前为止,输入字符串必须为0 ,才能被接受;
  • s3作为仅接受以1开头和结尾的字符串的状态;
  • s4作为状态,在这种状态下,到目前为止,输入字符串必须为1才能被接受。

奖金!

这是我为绘制上述FSM而编写的LaTeX代码。

\documentclass{standalone}

\usepackage{tikz}
\usetikzlibrary{
  automata,
  positioning,
}

\begin{document}
  \begin{tikzpicture}[
    node distance=2cm,
    on grid,
    auto,
    scale=.8,
    transform shape,
  ]
    \node[state, initial, accepting] (s0)                     {$s_0$};
    \node[state,          accepting] (s1) [above right=of s0] {$s_1$};
    \node[state                    ] (s2) [right      =of s1] {$s_2$};
    \node[state,          accepting] (s3) [below right=of s0] {$s_3$};
    \node[state                    ] (s4) [right      =of s3] {$s_4$};

    \path[->] (s0) edge              node        {0}    (s1)
              (s1) edge [bend left]  node        {1}    (s2)
                   edge [loop above] node        {0}    ()
              (s2) edge [loop right] node        {1}    ()
                   edge [bend left]  node        {0}    (s1);
    \path[->] (s0) edge              node [swap] {1}    (s3)
              (s3) edge [bend right] node [swap] {0}    (s4)
                   edge [loop below] node        {1}    ()
              (s4) edge [loop right] node        {0}    ()
                   edge [bend right] node [swap] {1}    (s3);
  \end{tikzpicture}
\end{document}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM