常规语言的抽引理

2024-02-25

我在使用泵引理检查给定语言是否规则时有点困惑。

假设我们必须检查是否:

L.接受偶数的语言0是否正常?

我们知道它是正则的,因为我们可以为 L 构造一个 DFA。但我想用泵引理来证明这一点。

现在假设我拿一个字符串w= "0000":

现在将字符串划分为x = 0, y = 0, and z = 00。现在应用泵送引理i = 2,我会得到字符串"00000",即not存在于我的语言中,因此通过抽引理证明该语言是不规则的。但DFA接受吗?

任何帮助将不胜感激
谢谢


您对泵引理并不完全清楚。

泵引理说了什么:

正式定义:常规语言的泵送引理 http://en.wikipedia.org/wiki/Pumping_lemma_for_regular_languages#Formal_statement

Let L成为常规语言。那么存在一个整数p ≥ 1仅取决于L这样每个字符串w in L至少长度p (p被称为"pumping length")可以写成w = xyz (i.e., w可以分为三个子串),满足以下条件:

  1. |y| ≥ 1
  2. |xy| ≤ p
  3. for all i ≥ 0, xyiz L

但这个声明说的是:

如果一种语言确实是常规语言,那么一定有some way生成(pump) 新字符串来自all 足够大的字符串.

  1. Sufficiently large string means, a string in language that is of the length ≥ P.
    So it may not be possible to generate new string from small strings even if language is Regular Language

  2. Some way means, if language is really a regular and our choice of w is correct. Then there should be at lest one way to break w in three parts xyz such that by repeating(pumping) y for any number of times we can generate new strings in the language.
    correct choice of w means: w in language and sufficiently large ≥ P

note:在第二点中,即使你打破了,也有可能w正确进入xyz根据正式定义,仍然有一些新生成的字符串不是语言中的。正如你所做的那样.

在这种情况下,您将重试其他一些可能的选择y.

在你选择的字符串中w = "0000“你可以打破w这样y = 00。而有了这样的选择y您总是会在语言中找到一个新生成的字符串,即“偶数个零”

One mistake you are doing in your proof that you are doing for a specific string 0000. You should proof for all wP. So still your proof is incomplete

阅读我的这个答案在常规语言的抽取引理的背景下 https://stackoverflow.com/questions/11832371/to-make-sure-pumping-lemma-for-infinite-regular-languages-only/13539823#13539823

在那个答案中,我已经解释过打破w into xyz和泵送y means 查找循环部分并重复循环部分以生成新字符串在语言中。
当我们证明某种语言是正规的;那么实际上我们不知道循环部分在哪里,因此我们尝试满足泵引理规则 1,2 和 3 的所有可能选择。

泵引理说,如果语言是规则的且无限的,那么 DFA 中一定有一个循环,并且语言中每个足够大的字符串都经过循环部分(根据鸽巢原理 http://en.wikipedia.org/wiki/Pigeonhole_principle)的 DFA(因此y不能为空。这是上面正式定义中的规则 1)。

想想,循环可以在初始位置或结束位置等等x and z可以是空字符串。

但实际上我们不知道循环在 DFA 中落在哪里,所以我们尝试了所有可能的方法。

证明一种语言是正规的: 你要证明这一点all足够长的字符串

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

常规语言的抽引理 的相关文章

  • 使用奥格登引理与常规泵引理进行上下文无关语法

    我正在学习问题中引理之间的区别 我能找到的每个参考文献都使用以下示例 a i b j c k d l i 0 or j k l 以显示两者之间的差异 我可以找到一个使用常规引理来 反驳 它的例子 选择 w uvxyz s t 维 gt 0
  • 将字符集转换为 nfa/dfa 的高效算法

    我目前正在研究扫描仪生成器 发电机已经工作正常 但是当使用字符类时 算法会变得非常慢 扫描仪生成器生成 UTF8 编码文件的扫描仪 应支持完整范围的字符 0x000000 到 0x10ffff 如果我使用大字符集 例如任何运算符 或 uni
  • 在 C++ 中实现模拟非确定性有限自动机的代码

    我正在做自动机理论的作业 我必须确定确定性有限自动机的转换函数是否接受一个单词 我有这个输入文件 6 8 0 2 2 5 0 0 a 0 1 a 1 1 b 1 2 c 1 3 c 3 4 d 4 4 d 4 5 d 3 aaabcccc
  • 0,1 上的双字补码的上下文无关语法是什么? [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 L ww w 属于 0 1 的补集的 CFG 是多少 首先 请注意以下事实 任何奇怪的单词都是语言的一部分 让我们定义以下语言 L1 w1w w 0 1 L0 w0w w 0 1 这
  • 使用正则表达式表示标识符

    C 编程语言中识别标识符的常规定义为 letter gt a b z A B Z digit gt 0 1 9 identifier gt letter letter digit 该定义将生成以下形式的标识符 标识符 a zA Z a zA
  • 证明某种语言正则

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

    给定一个正则表达式R它描述了一种常规语言 没有花哨的反向引用 有没有一种算法方法来构造正则表达式R 描述除以下描述的单词之外的所有单词的语言R 应该可以作为维基百科 http en wikipedia org wiki Regular la
  • 简单英语中的乔姆斯基层次结构

    我试图找到乔姆斯基提出的 4 个级别的正式语法 无限制 上下文相关 上下文无关 常规 的简单 即非形式 解释 我已经很久没有学习正式语法了 各种定义现在让我难以想象 明确地说 我是not寻找随处可见的正式定义 例如here http en
  • 有没有一种正则语言来表示正则表达式?

    具体来说 我注意到正则表达式的语言本身并不是正则的 因此 我无法使用正则表达式来解析给定的正则表达式 我需要使用解析器 因为正则表达式本身的语言是上下文无关的 有没有什么方法可以用可以使用正则表达式解析结果字符串的方式来表示正则表达式 注意
  • 对于给定的有限代表字符串列表,正则表达式的语法推理?

    我正在分析一个大型公共数据集 其中包含许多详细的人类可读字符串 这些字符串显然是由某些常规 在形式语言理论意义上 语法生成的 逐一查看这些字符串组以了解其中的模式并不太难 不幸的是 大约有 24 000 个独特的字符串被分为 33 个类别和
  • “结合更牢固”这句话是什么意思?

    我知道这可能是一个新手问题 但我试图理解这句话 来自一篇关于使用 EBNF 的元语言的论文 Logical and binds stronger than logical or 在此之前它说 Conditions are condition
  • 是否有可能有匹配所有有效正则表达式的正则表达式?

    是否可以仅使用正则表达式来检测给定字符串是否是有效的正则表达式 假设我有一些字符串 它们可能是也可能不是有效的正则表达式 我想要一个正则表达式与对应于有效正则表达式的那些字符串相匹配 那可能吗 或者我是否使用一些更高级别的语法 即上下文无关
  • 消除立即左递归

    我明白 为了从包含 A A 形式产生的语法中消除立即左递归 我需要将其替换为 A A 和 A A 我有以下产生式 我需要消除立即左递归 E E T T E E T T T T F T F E id 我可以看到 消除后第一个生产变成 E TE
  • a* 与 (a*)* 相同吗?

    快速提问 如果a是一个正则表达式 那么这是真的吗a a Is a 有效的表达 如果是 那么任何人都可以解释为什么它与a 我很抱歉在这里提问 但我无法通过谷歌找到任何东西 Yes a a 是一样的 两者都生成相同的语言 即字符串包含的任何数字
  • 如果我们知道一个CFG只生成正则语言,那么我们能得到对应的正则表达式吗?

    众所周知 给定一个正则语法 我们有算法来获取它的正则表达式 但是如果给定的语法是上下文无关语法 但它只生成常规语言 就像 S gt aAb A gt bB B gt cB d 有没有现有的算法可以得到通用的正则表达式 Thanks 从最一般
  • 生成随机确定性有限自动机的算法是什么?

    DFA 必须具有以下四个属性 DFA 有 N 个节点 每个节点有 2 个传出转换 每个节点都可以从其他每个节点访问 从所有可能性中以完全一致的随机性选择 DFA 这是我到目前为止所拥有的 从 N 个节点的集合开始 选择一个尚未选择的节点 将
  • a*b* 是正则吗?

    I know anbn for n gt 0 is not regular by the pumping lemma but I would imagine a b to be regular since both a b don t ha
  • 旅行商问题中 NP 难问题和 NP 完全问题的混淆

    旅行商优化 TSP OPT 是一个NP难题 旅行商搜索 TSP 是NP完全问题 然而 TSP OPT 可以简化为 TSP 因为如果 TSP 可以在多项式时间内求解 那么 TSP OPT 1 也可以 我认为要将 A 简化为 B B 必须与 A
  • 实现词法分析器时,DFA 与正则表达式?

    我刚刚学习如何编写编译器 所以如果我有任何错误的说法 请纠正我 当人们可以简单地使用正则表达式时 为什么还要在代码中实现 DFA goto 语句 表驱动实现 据我了解 词法分析器接收一串字符并生成一个标记列表 这些标记在语言的语法定义中是终
  • 使用基于 DFA(线性时间)正则表达式捕获组:可能吗?

    是否可以使用基于 DFA 的正则表达式实现捕获组 同时保持相对于输入长度的线性时间复杂度 直觉上我认为不是 因为子集构造过程不知道它可能落在哪个捕获组内 但这是我第一次意识到这可能是一个潜在的问题 所以我不知道 是否可以使用基于 DFA 的

随机推荐

  • 来自 JSON 对象的动态 UI

    我正在尝试找到一种将动态 JSON 对象转换为有效 HTML 网页的方法 这个想法是能够将需要显示的内容从物联网设备推送到云端 并让用户能够输入和保存配置 json 看起来像这样 loginConfiguration username st
  • Groovy 的隐藏功能?

    Locked 这个问题及其答案是locked help locked posts因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 看起来 Groovy 在这个线程中被遗忘了 所以我只会向 Groovy 问同样的问题 尝试限制
  • 有没有办法让客户端脚本也从 Ara 框架中的代理/集群服务自动加载?

    首先 基于 SSR 的 MFE 的一个很棒的框架 我正在尝试 Ara Svelte Micro App1 Vue Micro App 2 Nuxt JS Appshell 如中所述https ara framework github io
  • C 字符串:简单问题

    我在下面初始化了三个变量 char c1 Hello char c2 H e l l o 0 char c3 Hello 我知道 c1 和 c2 是相同的 并且它们都是字符串 因为它们以 0 结尾 然而 c3与c1和c2不同 这是因为 c3
  • Infiniband 寻址 - 主机名到 IB 地址(无需 IBoIP)

    我刚刚开始熟悉 infiniband 我想了解可用于解决 infiniband 节点的方法 基于代码的示例来自 RDMA 使用 IB 动词进行读写 http thegeekinthecorner wordpress com 2010 09
  • 如何使用 linq 从 DataTable 中过滤掉空行?

    我有一个从 Excel 数据构建的数据表 但有时 Excel 返回的行中所有字段都为空 我想一般性地过滤掉这些 而不考虑列名 我认为 Linq 可以很好地做到这一点 但要实现这一点有点困难 到目前为止 这就是我得到的 var nonempt
  • 如何在浏览器中从Go服务器下载文件

    我的代码从远程 url 获取文件并在浏览器中下载文件 func Index w http ResponseWriter r http Request url http upload wikimedia org wikipedia en b
  • iPhone 配置实用程序无法识别 iOS 8 设备

    随着 iOS 8 最近的更新 我无法使用 iPhone 配置实用程序加载我的测试设备 该程序根本无法识别装有 iOS 8 的设备 当 iOS 7 发布时 iPCU 不需要更新 尽管它确实可以与 iOS 7 配合使用 Apple 支持网站上的
  • 批处理文件对多个目录中的所有文件执行命令

    我想制作一个运行此命令的批处理文件 C Program Files x86 IrfanView i view32 exe C Users digi admin TIFFs OLD DIRECTORY tif ini C Users digi
  • Visual Studio:如何中断已处理的异常?

    我希望 Visual Studio 在发生处理的异常时中断 即我不只是想看到 第一次机会 消息 我想调试实际的异常 例如我希望调试器在异常时中断 try System IO File Delete someFilename catch Ex
  • C 中的结构初始化出现错误:预期表达式

    我有一个这样的结构 struct foobar int i char word 我知道这会起作用 struct foobar int i char word struct foobar three 3 three 为什么以下不起作用 str
  • 始终块中的 Veriloggenerate/genvar

    我试图让一个模块通过 ISE 12 4 中的语法检查 但它给了我一个我不明白的错误 首先是代码片段 parameter ROWBITS 4 reg ROWBITS 1 0 temp genvar c generate always pose
  • IntelliJ 社区版中的 Spring Boot 项目

    我是 IntelliJ 社区版的新手 任何人都可以帮助我在 IntelliJ 社区版中创建 Spring Boot 项目 对于终极版 有 spring boot 初始化程序 但我找不到社区版的任何内容 我点击了此链接但找不到任何解决方案 使
  • 编辑元素时 Java 优先级队列重新排序

    我正在尝试实现 Dijkstra 算法 以使用优先级队列查找最短路径 在算法的每一步中 我都会从优先级队列中删除距离最短的顶点 然后更新优先级队列中其每个邻居的距离 现在我读到 当您编辑 Java 中的优先级队列中的元素 确定排序的元素 时
  • 如何将变量限制为一组固定的字符串?

    如果我想将数据库中的spicelevel列的值限制为1 2和3 我可以这样做 private enum SpiceLevel Low 1 Medium 2 Hot 3 然后在代码中我可以做 int SpiceLevel Low选择 1 作为
  • Visual Studio 2010 DataCompare 表比较

    在 Visual Studio 2010 中 您是否能够比较两个数据库之间的数据库数据 我想用它来将数据从一个数据库复制到另一个数据库 这些数据库具有完全相同的结构 但是当我进行比较时 我看到 VS2010 的 DataCompare 视图
  • 为什么静态库包含 main 函数?

    我遇到了一个奇怪的静态库 其中包含main 函数 C 我只是想知道它的目的是什么 如何main 执行 从链接器的角度来看 链接在哪里并不重要main功能是 它可以位于静态库中 也可以位于独立的目标文件中 链接器不在乎 它从目标文件生成可执行
  • 如何在 CSS 中定义 tbody 的最小高度

    我想在CSS中设置tbody的最小高度 即使没有 tr td td tr 在 tbody 中 这是我的代码 tbody height 500px min height 500px 但它不起作用 那么我应该怎么做才能实现这一目标呢 你为什么要
  • 沮丧:为什么:“A”是“B”无法访问的基础?

    与此错误消息的其他示例不同 我已经有一个指向A并想要检索实际的子类 这种安排是一些 C 包装的 C 代码的一部分A是一些 POD C 结构 为什么没有动态转换 和test是 C 中的一些回调 它调用 C 功能并检索正确的对象 应使用强制转换
  • 常规语言的抽引理

    我在使用泵引理检查给定语言是否规则时有点困惑 假设我们必须检查是否 L 接受偶数的语言0是否正常 我们知道它是正则的 因为我们可以为 L 构造一个 DFA 但我想用泵引理来证明这一点 现在假设我拿一个字符串w 0000 现在将字符串划分为x