计算两个无限正则表达式解集是否不相交

2023-11-23

计算两个任意正则表达式是否有任何重叠的解决方案(假设可能)。

例如,这两个正则表达式可以通过暴力证明没有交集,因为两个解集是可计算的,因为它是有限的。

^1(11){0,1000}$ ∩     ^(11){0,1000}$        = {}
{1,111, ..., ..111} ∩ {11,1111, ..., ...11} = {}
{}                                          = {}

但更换{0,1000} by *消除暴力解决方案的可能性,因此必须创建更智能的算法。

^1(11)*$ ∩ ^(11)*$ = {}
{1,^1(11)*$} ∩ {^(11)*$} = {}
{1,^1(11)*$} ∩ {11,^11(11)*$} = {}
{1,111,^111(11)*$} ∩ {11,^(11)*$} = {}
.....

在另一个类似的问题 one answer是计算交集正则表达式。这可能吗?如果是这样,人们将如何编写算法来完成这样的事情?

我认为这个问题可能是停止问题.罢工>

EDIT:

我已使用公认的解决方案为示例问题创建 DFA。很容易看出如何在状态图上使用 BFS 或 DFSM_3确定最终状态是否来自M_3是可达的。

DFA solution


它不属于停机问题的范围;判断正则语言的交集是否为空可以如下解决:

  1. 为第一语言构建 DFA M1。
  2. 构建第二语言的 DFA M2。提示:克莱恩定理和幂集机器构造
  3. 为 M1 与 M2 相交构造 DFA M3。提示:笛卡尔积 机器构造
  4. 判断L(M3)是否为空。提示:如果 M3 有 n 个状态,并且 M3 不接受任何长度不大于 n 的字符串,则 L(M3) 为空...为什么?

每一件事情都可以通过算法完成和/或检查。此外,自然地,一旦 DFA 识别出您的语言的交集,您就可以构建一个正则表达式来匹配该语言。如果您从正则表达式开始,您就可以制作 DFA。这绝对是可以计算的。

EDIT:

因此,要构建笛卡尔积机,您需要两个 DFA。令 M1 = (E, q0, Q1, A1, f1) 且 M2 = (E, q0', Q2, A2, f2)。在这两种情况下,E 是输入字母表,q0 是起始状态,Q 是所有状态的集合,A 是接受状态的集合,f 是转换函数。构造 M3,其中...

  1. E3 = E
  2. Q3 = Q1 x Q2(有序对)
  3. q0'' = (q0, q0')
  4. A3 = {(x, y) | A1 中的 x 和 A2 中的 y}
  5. f3(s, (x, y)) = (f1(s, x), f2(s, y))

如果我没有犯任何错误,L(M3) = L(M1) 与 L(M2) 相交。整洁吧?

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

计算两个无限正则表达式解集是否不相交 的相关文章

  • “通用”电话号码的基本正则表达式

    我需要一个正则表达式 用于 ASP NET 网站 来验证电话号码 它应该是灵活的 唯一的限制是 应至少为 9 位数字 没有字母 可以包含空格 连字符 单个 我搜索过 SO 和 Regexlib com 但我得到的表达式有更多限制 例如英国电
  • 标记(lex?parse?)正则表达式

    使用 Ruby 我想获取一个 Regexp 对象 或表示有效正则表达式的字符串 您的选择 并将其标记化 以便我可以操作某些部分 具体来说 我想采用这样的正则表达式 字符串 regex var w parts foo bar 并创建一个替换字
  • 线段树java实现[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 你知道 二进制 的良好实现吗线段树 http en wikipedia org wiki Segmen
  • 重定向 url 的正则表达式

    是否有一个正则表达式可以匹配这些 url 重定向情况 我已经尝试了几个小时了 我得到的最接近的是 c p 但它不匹配 p or c https regex101 com r ezb0jX 1 https regex101 com r ezb
  • Preg_replace() 删除除查询结尾之外的所有内容

    首先 为我糟糕的英语感到抱歉 我有这样的疑问 SELECT t1 SELECT COUNT FROM table a t2 WHERE t1 id t2 id c AND t2 status 1 AS aula FROM table c t
  • php正则表达式删除数字

    我需要一个正则表达式来删除字符串中的数字 但不删除空格 我目前有 city location UK 0113 Leeds new york sip city 0113Leeds new york city preg replace a z
  • 自动跟踪算法

    我正在尝试写一个simple跟踪例程来跟踪电影中的某些点 本质上我有一系列 100 帧长的电影 在黑暗背景上显示一些亮点 我每帧有大约 100 150 个点 它们在电影的过程中移动 我想跟踪它们 所以我正在寻找一些有效的 但可能不会过度实施
  • Python Pandas:沿一列比较两个数据帧,并返回另一个数据帧中两个数据帧的行内容

    我正在处理两个 csv 文件并作为数据框 df1 和 df2 导入 df1 有 50000 行 df2 有 150000 行 我想将 df2 的 时间 与 df1 求时间差并返回所有列的值 对应相似的行 保存在df3中 时间同步 例如 35
  • 数独算法,暴力破解[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我正在尝试
  • JavaScript 中的正则表达式用于验证十进制数字

    我想要 JavaScript 中的正则表达式来验证十进制数字 它最多只允许两位小数 例如 它应该允许10 89但不是10 899 它还应该只允许一个句点 例如 它应该允许10 89但不是10 8 9 尝试使用以下表达式 d d 0 2 如果
  • 正则表达式接受 4 条规则中的 3 条

    我似乎无法让正则表达式正确满足以下要求 长度在 8 到 20 之间的字符串 必须包含至少 1 个大写字母字符 至少 1 个小写字母字符 以及至少 1 个数字或至少 1 个特殊字符字符 或两者 假设特殊字符仅限于包括 我最初是这样写的 A Z
  • 如何求两个地点的经纬度距离?

    我有一组位置的纬度和经度 怎么找distance从集合中的一个位置到另一个位置 有公式吗 半正矢公式假定地球是球形的 然而 地球的形状更为复杂 扁球体模型会给出更好的结果 如果需要这样的精度 你应该更好地使用文森特逆公式 See http
  • 我可以缩短这个正则表达式吗?

    我需要检查字符串是否符合特定的 ID 格式 ID的格式如下 aBcDe fghIj KLmno pQRsT uVWxy 由五个大写或小写字母组成的五个块的序列 由一个破折号分隔 我有以下有效的正则表达式 string idFormat a
  • 坐标算法 - 绕中心旋转

    通过查看这张图片 我想您会很好地理解我的问题 图片已删除 网址不再有效 现在返回广告 所以基本上我想要一个函数 它接受一个对象作为参数 并根据我之前添加的对象数量为该对象提供正确的坐标 假设我将所有这些对象添加到一个数组中 objectAr
  • heapq.nlargest 的时间复杂度是多少?

    我在看演讲者说 获得t列表中最大的元素n元素可以在O t n 这怎么可能 我的理解是创建堆将是O n 但是复杂度是多少nlargest本身就是O n t or O t 实际的算法是什么 在这种情况下 说话者是错误的 实际成本是O n log
  • 重写修改后的 goto 语义的算法

    我有一大堆使用旧的自行设计的脚本语言编写的遗留代码 我们将它们编译 翻译成 javascript 该语言有条件跳转 跳转到标签 与普通 goto 语句的区别在于 不可能向后跳转 该语言中没有嵌套的 if 语句或循环 由于 javascrip
  • 这个函数(for循环)空间复杂度是O(1)还是O(n)?

    public void check 10 for string i list Integer a hashtable get i if a gt 10 hashtable remove i 这是 O 1 还是 O n 我猜测 O n 但不是
  • python 集合可以包含的值的数量是否有限制?

    我正在尝试使用 python 设置作为 mysql 表中 ids 的过滤器 python集存储了所有要过滤的id 现在大约有30000个 这个数字会随着时间的推移慢慢增长 我担心python集的最大容量 它可以包含的元素数量有限制吗 您最大
  • 如何计算 3D Morton 数(交织 3 个整数的位)

    我正在寻找一种快速计算 3D Morton 数的方法 这个网站 http www graphics stanford edu seander bithacks html InterleaveBMN有一个基于幻数的技巧来处理 2D Morto
  • 在python中,如何仅搜索所选子字符串之前的一个单词

    给定文本文件中的长行列表 我只想返回紧邻其前面的子字符串 例如单词狗 描述狗的单词 例如 假设有这些行包含狗 hotdog big dog is dogged dog spy with my dog brown dogs 在这种情况下 期望

随机推荐

  • 缓存 JavaScript 承诺结果

    我会向服务器发出一次调用以获取项目列表 如何确保仅进行一次调用并且仅处理集合一次以创建键值映射 var itemMap function getItems getAllItemsFromServer then function data d
  • 真正的自定义按钮形状

    给定任何形状 实心圆形 星形 三角形 带有透明区域的位图等 我想知道是否可以 使用最新的 Android API 知道用户是否单击了视图或视图之外 例如 如果我有一个圆形按钮 我想知道用户是否在圆圈内单击 而不是在圆圈外单击 是否可以 如果
  • 在android中捏缩放以获得图像视图?

    我有一个要求 我必须在捏合时放大和缩小图像 如果有人可以建议我使用 Imageview 的捏合缩放功能 请 只需执行以下操作即可获得捏缩放 将您的图像放在资产文件夹中并提供此代码 String imageUrl file android a
  • 如何在 Java 中读写时强制使用 UTF-16?

    我发现您可以通过以下方式指定 UTF 16 作为字符集Charset forName UTF 16 并且您可以通过以下方式创建新的 UTF 16 解码器Charset forName UTF 16 newDecoder 但我只看到指定一个的
  • DrawerNavigator:更改文本颜色

    On react navigation s DrawerNavigator 有没有办法改变项目的文本颜色和背景颜色 By default the color scheme looks like the following 由以下内容初始化
  • 如何使用 ORMLite 正确注释继承类?

    我正在尝试将继承与 ORMLite 一起使用 但通过查看文档和谷歌搜索 我无法确定它是否受支持 我想做的是拥有 public abstract class Person public int id public String name pu
  • 如何使用命令提示符导出 mysql 数据库?

    我有一个非常大的数据库 所以我想使用命令提示符导出它 但我不知道如何导出 我正在使用WAMP 首先检查你的命令行是否识别mysql命令 如果没有转到命令并输入 set path c wamp bin mysql mysql5 1 36 bi
  • Win32 应用程序中“WindowProc”的正确返回值

    在 MSDN 的 Win32 Api 文档中 位于http msdn microsoft com en us library ms633573 28VS 85 29 aspx 在WindowProc 它指出 返回值是消息处理的结果 取决于发
  • 使 bash 脚本在 Linux 和 FreeBSD 之间可移植的正确方法是什么?

    我正在编写一些 bash 脚本 我希望这些脚本可以在我的 Linux 和 FreeBSD 系统上运行 因为我主要在 Linux 上工作 所以我习惯用以下命令启动 bash 脚本 bin bash 但这在 FreeBSD 上不起作用 因为 b
  • Microsoft.Owin.Host.SystemWeb 并仍然在上下文中找不到 owin.Environment 项目

    我已经阅读了很多关于此的帖子 但仍然无法使其发挥作用 我正在使用 Visual Studio 2013 我创建了一个新的 MVC 5 项目 并认为使用新的 facebook 登录集成会很酷 它在我的电脑上的 IIS Express 上运行良
  • Facebook 点赞按钮在 Firefox 中显示,但在 IE 中不显示

    我的页面上有一个使用 XBFML 标签的 Facebook Like 按钮 我认为该代码可以正常工作 因为它可以在 Firefox 中正常工作 但在 IE 8 中 在 IE 7 兼容模式下运行 该按钮根本不显示 如果我将其全部切换到 iFr
  • 在 spring(5.0.0.RELEASE) mvc 中加载 swagger-ui.html 时出现错误

    无法解析引用 因为 无法解析指针 definitions Error 在文档中不存在 我点击了这个链接http www baeldung com swagger 2 documentation for spring rest api 但是当
  • 除了通过其安全方法之外,如何强制 Rust 获取分配的内存的所有权?

    在他 2018 年 2 月题为 Rust 中的内存安全 C 案例研究 威尔 克莱顿写道 Rust 提供了获取原始指针所有权的能力 我们使用它slice from raw parts mut and Box from raw它告诉 Rust
  • Xamarin Android Javascript 和 C# 之间的双向通信

    我正在使用 Xamarin Android 开发一个应用程序 它有一个显示网页的 WebView 我想实现从 WebView 到 C 的 Javascript 之间的双向通信 我可以使用这个从 Javascript 调用 C link 但是
  • Matplotlib 下标

    我知道我们可以在 matplotlib 中生成单个下标 例如 r i 会给我一个下标为 i 的 r 但我想生成一个包含 3 或 4 个字母的下标 例如r ijk应该给我一个下标为 ijk 的 r 当我执行上述操作时 我只得到第一个 i 为下
  • 更新应用程序是否会清除共享首选项或删除应用程序设置的警报?

    我已经在谷歌商店发布了我的应用程序 现在我想更新它 但我想确保我不会丢失应用程序共享首选项中存储的数据 我还在我的应用程序中设置了一些闹钟来启动通知 我也不想丢失它们 我不确定更新应用程序如何工作 它会重写这些东西吗 在全球发布之前我是否可
  • CSS“边距:0自动”不居中

    好的 我明白这个主题已经涵盖了 但我研究了各种解决方案 但收效甚微 我只是不知道为什么会这样margin 0 auto 不管用 我尝试用以下方法补偿填充width calc 33 40px 但这不起作用 任何关于为什么会发生这种情况的帮助以
  • 混合模式程序集是针对运行时版本“2.0.50727”构建的,无法在 4.0 运行时中加载

    我正在使用 Visual Studio 2012 和 Net Framework 4 5 我有2个解决方案 1 WPF应用程序2 类库 dll 类库包含 3 个按钮和一个控件 该控件必须位于 WindosFormsHost 控件内 因为它是
  • IOS 上的图像处理滤镜,如白平衡、曝光、分割色调等

    自一周以来 我一直在尝试为我的 IOS 应用程序实现一些图像处理滤镜 例如白平衡 曝光和分割色调 如 Photoshop 中的那样 但我没有获得实现其中任何一个的标准实现 我找到了 shell 脚本来实现它们图像魔术师 但不知道如何将这些脚
  • 计算两个无限正则表达式解集是否不相交

    计算两个任意正则表达式是否有任何重叠的解决方案 假设可能 例如 这两个正则表达式可以通过暴力证明没有交集 因为两个解集是可计算的 因为它是有限的 1 11 0 1000 11 0 1000 1 111 111 11 1111 11 但更换