证明某种语言正则

2023-12-23

在我的计算理论课上,我们的作业是证明一种语言是正规的。 该语言定义为:

B = {1ky | y is in {0, 1}* and y contains at least k 1s, for k >= 1}

在我看来,这种语言需要一个下推自动机来为此创建一台机器,但如果有人可以将我推向正确的方向,尝试证明这是一种常规语言。向我展示以下方法之一来证明这一点:创建 NFA、DFA、正则表达式或正则语法将会有所帮助。


语言L:

L = {1ky | y is in {0, 1}* and y contains at least k number of 1, for k >= 1}

是一种常规语言。事实上,这种语言非常简单。 L 的简单英文描述是:“所有字符串的集合包含'0's and '1's 的限制是:每个字符串都以'1'并且还包含至少两个'1'".

问题中给出的语言描述是故意复杂化的,以使问题变得棘手。解决此类问题的简单方法是:阅读语言并尝试理解语言中的字符串模式。尝试写出所有可能的内容smallest字符串,然后写入第二小的字符串,依此类推......
另外,尝试找到最小长度的字符串doesn't属于语言。下面我用你的例子展示了我从英文描述中编写 RE 或 FA 的方法。

在最初的几个步骤中,我们尝试了解语言 L 中允许使用哪种字符串。请阅读以下几点:

  1. 语言 L 中的所有字符串均由以下组成'0' and '1'
  2. According to 1ky and k >= 1, all strings in language L must start with '1' as k is grater than 0.
  3. Pattern of language strings is 11...y (or we can say 1+y). To explain further, string start with some ones 1s, and has suffix y, where y can be any arbitrary sub string of zeros 0s and ones 1s.
    Note: Because k can be any number greater than 0, there is just a simple constraint that before sub-string y there must be at least one '1'. After first '1' you can consider remain suffix as a part of sub-string y.
  4. 换句话说,我们也可以解释语言L = { 1y, where y contains at least a 1}

现在,正如我所说,尝试用语言编写一些示例字符串:

  1. 一些可能的最小字符串可以是:

    '11'   where k = 1 and y = '1' 
    '101'  where k = 1 and y = '01'  
    '110'  where k = 1 and y = '10'
    
  2. 再举一个例子:

    '111'  where k = 1 and y = 11 #remember in `y` there must be atleat k ones
    
  3. 再举一个例子'1111',现在可以怎样k and y?细绳'1111'可以通过以下方式解释:

    '1111'  with k = 1 and y = 111 #remember in `y` there must be atleat k ones
            or   k = 2 and y = 11  #remember in `y` there must be atleat k ones
    

一些示例字符串是not语言:

  1. 不能出现在 L are 中的字符串'0', '00', '01111'因为字符串必须以'1'。所以所有字符串都带有模式0(0 + 1)*以。。开始'0'不在语言中。

  2. 还有其他可能的字符串以'1'但仍然不是语言。例如'10'因为如果k = 1(最小值k) then y is '0'。出于同样的原因,字符串='1'不是语言。所以所有带有模式的字符串10*那是'1'后跟任意数量的零'0'不是语言。

所以语言中的所有字符串都以'1' and y部分还至少包含一个'1'。没有限制y那个地方'1'可以出现。子串y可以是任何由 0 和 1 组成的字符串,并且至少有一个 1 和正则表达式y is: 0*1(1 + 0)*.

L 的正则表达式为:10*1(1 + 0)*

现在,类似的方法有助于为语言编写 DFA,可以参考答案@为给定的正则表达式绘制最小 DFA https://stackoverflow.com/a/14024179/1673391并编写常规语法阅读答案@左线性和右线性文法 https://stackoverflow.com/a/13945932/1673391

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

证明某种语言正则 的相关文章

随机推荐

  • Emacs 中的代码折叠[重复]

    这个问题在这里已经有答案了 可能的重复 emacs中如何实现代码折叠效果 https stackoverflow com questions 1085170 how to achieve code folding effects in em
  • 无法将 String 用作 Spring Data 的 @Id

    我想使用此类在数据库上创建新表 Entity Table name currency rate public class CurrencyRate Id private String id Column name source curren
  • PHPDoc 的冗长是否带来的麻烦大于它的价值? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我今天第一次尝试使用 PHPDoc 很快就遇到了问题 每 1 行变量声明 我至少有 5 行注释 例子 Holds path the remote
  • 存在无默认值的参数时 do.call() 的行为

    这个问题是一个后续问题之前的回答 https stackoverflow com a 18108234 636656这就提出了一个难题 之前答案中的可重现示例 Models lt list lm runif 10 rnorm 10 lm r
  • `atob` 抛出“要解码的字符串未正确编码”

    我遇到了问题atob抛出异常 要解码的字符串未正确编码 堆栈溢出上已经存在一些类似的问题 但它们涉及 复杂 问题 文件和 或 URL 编码 我的代码要简单得多 atob MC4wNTgxMzA0OTg5OCAwLjA1NTU0MTg5OTA
  • 如何在 Optuna 中优化多个指标

    如何同时优化多个指标objectiveOptuna 的功能 例如 我正在训练 LGBM 分类器 希望为所有常见分类指标 如 F1 精度 召回率 准确度 AUC 等 找到最佳超参数集 def objective trial Train gbm
  • 在张量流中找到两个边界框的交集?

    系统的坐标是 boundary coordinates x min y min x max y max 我想找到两个框 set1 和 set2 的交集 set1 gt n1 4 set2 gt n2 4 example set 1 gt t
  • 如何将 Web 服务中的“null”值表示为真正的 null 或空字符串,而不是“null”字符串

    在我的应用程序中 我使用 JSF 和 Java Web 服务 当我的任何网络服务函数返回nullvalue 它总是表示为 null 字符串 因此 我无法使用 EL 表达式 例如 empty object 测试null值或空字符串 我想问一下
  • ggplot 无法使用facet_wrap 和群体美学绘制平滑的gam

    我正在尝试使用具有群体美学的 ggplot 绘制多面板和多线图facet wrap 但是 那geom smooth当一组数据点太少时 分面图中的所有线都会失败 plot1 lt ggplot data df1 aes x Year y Me
  • Groovy MOP 调用方法

    我试图了解 invokeMethod 如何拦截 Groovy 中的方法调用 不过 我似乎无法让最基本的示例发挥作用 class Person implements GroovyInterceptable def invokeMethod S
  • 如何在 Url.Action 中发送多个参数?

    如何在一个文件中发送多个参数Url Action 我有一个带有操作的控制器 我想要 2 个参数 但没有收到第二个参数 我的代码是 Url Action Products Jquery new categoryid 1 Productid 2
  • 使用 ColdFusion 进行简单的 TCP/IP 套接字通信

    我做了一些搜索 似乎没有太多成功的方法可以通过 Coldfusion 成功建立 tcp ip 套接字连接 我试图充当一个简单的客户端并发送一个字符串并获得响应 Adobe 的 EventGateway 需要服务器端设置 我无法触及 但它似乎
  • NSInvalidArgumentException 原因接收器没有带有标识符的 segue

    我一直有一个问题 我有一个 UIViewControllerList和一个 UIViewControllerLogin On Login我有一个按钮 完成 还有同一个 UIViewController 上的另一个隐藏按钮 它有一个 segu
  • Perl 两个日期相减

    我对 Perl 还很陌生 我正在尝试减去这种格式的两个日期 15 07 16 23 13 34 15 07 16 20 04 24 我知道我必须将此字符串转换为日期对象 我的问题是我只能使用基本的 perl 而无需安装额外的软件包 有办法做
  • 仅当对象没有功能和模式验证时才进行淘汰验证

    我想要当标题为空时需要最大价格 我有代码 self searchParameters title ko observable extend refreshCountOffers 500 priceMax ko observable exte
  • Django 注册 - 一些激活

    如何强制向用户发送激活电子邮件 当他不小心删除了邮件时 他点击了我网站上的链接 django 会向他发送新的激活电子邮件 有一个管理操作 http docs djangoproject com en dev ref contrib admi
  • ViewBag 对象属性的 getter 和 setter

    在哪里可以为对象 ViewBag 的属性注册 getter 和 setter ViewBag 是一个动态对象 http msdn microsoft com en us library system dynamic dynamicobjec
  • 如何使用 graph api 设置 Facebook 个人资料图片

    有没有办法使用graph api更改用户的个人资料图片 我知道你不能使用其余的 api 参考 https stackoverflow com questions 2995397 set or update profile picture u
  • Java中如何将一个int转换为三个字节?

    我正在尝试转换int分成三份bytes代表那个int 大端 我确信它与按位和移位有关 但我不知道该怎么做 例如 int myInt some code byte b1 b2 b3 b1 is most significant then b2
  • 证明某种语言正则

    在我的计算理论课上 我们的作业是证明一种语言是正规的 该语言定义为 B 1ky y is in 0 1 and y contains at least k 1s for k gt 1 在我看来 这种语言需要一个下推自动机来为此创建一台机器