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

2023-12-07

我需要帮助设计一个有限状态机,该状态机接受包含尽可能多的模式出现的二进制字符串01作为模式的出现10.

我有点很难准确理解哪些字符串应该被接受,哪些字符串应该被拒绝。

欢迎任何指导。


有问题的语言是什么?

[...] 包含尽可能多的模式出现的二进制字符串01作为模式的出现10。我有点很难准确理解哪些字符串应该被接受,哪些字符串应该被拒绝。

您的规范定义的语言实际上正是由以下内容组成的集合:

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

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

  • --来突出显示01图案,以及
  • **来突出显示10图案。

String 10001010

该字符串包含

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

如下所示:

10001010
**  ****
   ----

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

String 11001111

该字符串包含

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

如下所示:

11001111
 **--

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

你明白了...

描述相关语言的有限状态机

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

这是描述相关语言的 FSM:

enter image description here

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

  • s0 为仅接受空字符串的状态;
  • s1 作为仅接受以 a 开头和结尾的字符串的状态0;
  • s2 作为下一个字符需要为 a 的状态0到目前为止输入的字符串被接受;
  • s3 作为仅接受以 a 开头和结尾的字符串的状态1;
  • s4 作为下一个字符需要为 a 的状态1到目前为止输入字符串被接受。

Bonus!

这是我为绘制上面的 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}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么有限状态机捕获具有相同数量的“01”和“10”的二进制字符串? 的相关文章

  • 如何使用 Erlang 发送推送通知?

    我正在尝试使用 Erlang 向 APNs 发送推送通知 这是我到目前为止想出的代码 module apnstest2 export connect 0 connect gt application start ssl ssl seed s
  • 以 4 为底的二进制 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如何将数字从二进制转换为基数 4wi
  • x86 32 位汇编代码是否有效 x86 64 位汇编代码?

    所有 x86 32 位汇编代码都对 x86 64 位汇编代码有效吗 我想知道32位汇编代码是否是64位汇编代码的子集 即每个32位汇编代码都可以在64位环境中运行 我想答案是肯定的 因为64位Windows能够执行32位程序 但是后来我看到
  • C++读取二进制文件

    我想了解如何在 C 中读取二进制文件 我的代码 int main ifstream ifd input png ios binary ios ate int size ifd tellg ifd seekg 0 ios beg vector
  • 是什么破坏了 .net 二进制 (dll) 接口

    考虑两个 net dll 首先 application dll 包含主要业务逻辑和数据访问代码 第二个 webservice dll 主要由 WebMethod 组成 这些 WebMethod 链接到 application dll 的对象
  • 在汇编程序中将十进制转换为二进制

    我的第一个汇编程序需要帮助 我必须将用户输入的值从十进制转换为二进制 我不知道如何将值显示为小数 以及下一步应该做什么 谁能一步一步指导我下一步做什么 model small stack 100h data txt1 db Enter bi
  • 您上传的二进制文件无效。使用 SDK 的预发布测试版来构建应用程序

    我在将新应用程序提交到应用程序商店时遇到问题 Itunes Connect 给我错误 您上传的二进制文件无效 SDK 的预发布测试版用于构建该应用程序 我没有更改任何内容 我可以编译为临时证书并且工作正常 我昨天上传了另一个应用程序 效果也
  • 读取和写入二进制文件

    我正在尝试编写代码将二进制文件读入缓冲区 然后将缓冲区写入另一个文件 我有以下代码 但缓冲区仅存储文件第一行中的几个 ASCII 字符 没有其他内容 int length char buffer ifstream is is open C
  • 二进制文件的结构验证

    我正在研究正式指定各种二进制流格式的方法 并使用工具检查流是否符合规范 类似于 XSD 任何 XML 验证工具 或者就像在二进制级别上工作的极其复杂的 grep 表达式 最好不是 这真的很难阅读 有人知道有用的规范 工具吗 理由 我们每天都
  • 访谈:函数指针与 switch case

    在面试期间 我被要求为具有 100 个状态的系统实现一个状态机 其中每个状态又具有 100 个事件 我回答了以下 3 种方法 if else 开关盒 函数指针 if else 显然不适合这样的状态机 因此主要比较是 switch case
  • 在Windows中比较2个二进制文件的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我需要一个工具来比较两个二进制文件 文件相当大 我在互联网上找到的一些免费软件或试用工具不方便用于大文件
  • 删除最低位

    给定一个二进制数 删除最低位的最快方法是什么 01001001010 gt 01001001000 它将在代码中用于迭代变量的位 伪代码如下 while bits 0 index getIndexOfLowestOrderBit bits
  • 是否存在 UTF-8 编码中未使用的字节?

    据我了解 UTF 8 是 ASCII 的超集 因此包括不用于表示可打印字符的控制字符 我的问题是 是否有任何字节 256 个不同的字节 未被 UTF 8 编码使用 我想知道你是否可以转换 编码UTF 8 文本转二进制 这是我的思考过程 我不
  • 如何将十进制整数转换为十六进制整数? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions cout lt
  • 如何从 wfstream 读取二进制数据?

    我从文件读取数据时遇到一个小问题 我希望能够读取 wstring 以及任意大小的原始数据块 大小以字节为单位 std wfstream stream file c str std wstring comType stream gt gt c
  • 反转二进制网络

    如何反转二元方程 以便找到哪些输入将产生给定的输出 Example Inputs i0 through i8 Outputs o0 through o8 Operators XOR AND 二元方程 1 i0 1 i1 0 i2 1 i3
  • 使用 R 读取和转换二进制原始数据

    我有一个file https drive google com file d 0BxMpk0nhnJy6SFhxd2xuMzJYYlk edit usp sharing其中包含原始 二进制数据和 ascii 它包含一个时间戳和一个代表速度的
  • 将 Long 转换为 DateTime 从 C# 日期到 Java 日期

    我一直尝试用Java读取二进制文件 而二进制文件是用C 编写的 其中一些数据包含日期时间数据 当 DateTime 数据写入文件 以二进制形式 时 它使用DateTime ToBinary on C 为了读取 DateTime 数据 它将首
  • Crystal lang如何从http获取二进制文件

    In Ruby require open uri download open http example com download pdf IO copy stream download my file pdf 如何在水晶中做同样的事情 我们
  • 是否有适用于 Java 的 Harel Statechart DSL 工具?

    我正在寻找一种能够理解 DSL 的工具 在其中我可以定义生成 Java 代码的状态图 或者 DSL 中的状态图可以按原样运行 该工具最好用 Java 编写 并且必须根据 Harel 状态图 或等效的 UML 2 状态机 的定义支持超级状态和

随机推荐

  • 如何应用参数/for循环

    目前我有一个程序可以查找两个 XYZ 坐标的点积 我如何将其放入循环中 以便它沿着坐标列表查找每个坐标相对于第一个坐标的点积 import operator vector1 int l 0 0 int l 0 1 int l 0 2 vec
  • 如何删除 Google App Engine 中的所有数据存储?

    有谁知道如何删除所有数据存储谷歌应用引擎 如果你说的是实时数据存储 打开应用程序的仪表板 登录 appengine 然后打开数据存储 gt dataviewer 选择要删除的表的所有行 然后单击删除按钮 您必须对所有表执行此操作 您可以通过
  • 检测用户是否具有管理员权限

    如何确定当前用户 运行我的应用程序的用户 是否具有管理员权限 即是管理员组的成员 我需要为访问权限有限的用户以不同的方式注册一些 COM 组件 我正在使用 C WTL 和 Win32 IsUserAnAdmin 是快速且简单的方法 但 MS
  • 获取州名称而不是 Woocommerce 中的代码

    我使用此处的代码向我的 woocommerce 添加了自定义状态列表 https docs woocommerce com document addmodify states 新添加的状态在前端和某些后端屏幕上加载良好 但是在电子邮件和用户
  • 按对象数组过滤 searchController

    我创建了一个 searchController 因此我尝试让它根据 UISearchController 中的文本过滤内容 我创建了一个如下所示的自定义对象 我尝试过使用 NSPredicate 但不断收到 cannot convert v
  • 每次在 getView 中视图都会膨胀。 findViewById(...) 已执行多次。我用过View Holder

    public View getView final int pos View arg1 ViewGroup arg2 ViewHolder holder View view arg1 if arg1 null holder new View
  • 如何使用 python 写回到谷歌文档电子表格中的某个单元格

    所以问题是 我从电子表格中的行的第一列 例如 A2 获取一些信息 然后我将对该信息进行一些检查 之后我想将结果写回该行的下一列 我怎么做 是否有某种功能可以让我指示后面 前面 上面 下面的列 所以我可以在该单元格中写入信息 当然 Pytho
  • python AttributeError:模块“pygame”没有属性“display”

    我开始使用 Python 特别是 pygame 模块 但是当我尝试创建一个窗口时 会发生此错误 gt gt gt import pygame gt gt gt width height 300 200 gt gt gt screen pyg
  • 另一台机器的时间

    在 C 中 当我们使用 DateTime Now 时 属性值是本地计算机的当前日期和时间 如何获取另一台具有IP地址或机器名称的机器的时间 您可以通过编写一个为您提供当前时间的服务来实现吗 或连接到远程计算机并发送一些 wmi 查询 类似问
  • OnDraw() 未触发,surfaceView 中未绘制任何内容 - Android

    你好 我在水平滚动视图中有一个 SurfaceView 我想通过 onDraw 调用来填充图像 然而 什么也没有绘制 我有一个类 其中的绘图是通过线程 CanvasThread 完成的 public class PanelChart ext
  • R read.csv - 带有特定符号(>)的标题

    当我通过 R 读取 csv 文件时 所有特定符号 gt 例如 csv 文件 用户 gt 75 R 显示用户 75 我怎样才能避免这种情况 您可以使用check names FALSE在你的read csv call From read cs
  • 索引如何提高 mongodb 中的查询性能

    我需要了解 mongo 中的索引如何提高查询性能 目前我的数据库没有索引 我如何为现有数据库建立索引 我还需要创建一个仅用于索引的新字段吗 从根本上来说 MongoDB 中的索引与其他数据库系统中的索引类似 MongoDB 支持 Mongo
  • Visual Studio NugetPackageManager 界面中的“版本”列有何意义? (与“已安装”列不同)

    已安装 列已填充 但 版本 列未填充 版本 栏是什么意思 与 已安装 列不同 我熟悉语义版本的概念 所以我确切地知道版本号的概念对于 nuget 包意味着什么 我想知道到底是什么that列于that接口意思 后续关于空白的问题结束了here
  • 蓝鸟承诺范围

    我刚刚开始使用承诺来尝试清理一些 回调地狱 我决定尝试 bluebird 并在浏览器中运行它 但立即遇到了范围界定问题 有没有办法在新的 Promise 中设置 thisArg 下面的示例显示承诺解析器内的 this 值设置为浏览器窗口 但
  • Bitmap.getPixel 始终返回黑色

    我正在创建一个应用程序 其中涉及获取屏幕部分的颜色 为此 我使用 Bitmap getPixel 方法来检索屏幕的指定像素 然后将其转换为 RGB 格式 以便以后更轻松地进行编码 问题是 当我使用 getPixel 方法时 无论屏幕上是什么
  • 使用 cygwin 在 Windows 上安装 GMP

    我是 C 新手 我必须处理大整数 所以我必须通过 Cygwin 安装 GMP 我能找到的有关安装此程序的任何文档都假设您知道自己在说什么 而我确实不知道 无论如何 我有权利 tar或者其他什么 正确提取它 现在我看到的任何网站都说要运行 c
  • 如何修复 java Apache POI 中的 NotOfficeXmlFileException?

    我正在尝试创建一个新的 Excel 文件 其中仅包含 hello 这是我的代码 import java io File import java io FileInputStream import java io FileNotFoundEx
  • 将 html 文本添加到超大 jquery 图像幻灯片

    我只想将 html 文本添加到著名的图像滑块超大的 这是他们的演示页面 http buildinternet com project supersized slideshow 3 2 demo html 该 html 可以正好位于演示中 m
  • 如何在 shell 脚本中使用远程服务器上的带有远程变量的数组?

    这就是我正在尝试做的 bin bash array local 1 2 3 4 5 ssh user server lt lt EOF index remote 1 echo index remote echo array local in
  • 什么有限状态机捕获具有相同数量的“01”和“10”的二进制字符串?

    我需要帮助设计一个有限状态机 该状态机接受包含尽可能多的模式出现的二进制字符串01作为模式的出现10 我有点很难准确理解哪些字符串应该被接受 哪些字符串应该被拒绝 欢迎任何指导 有问题的语言是什么 包含尽可能多的模式出现的二进制字符串01作