【问题标题】:Simplify Regular Expression in Mathematica简化 Mathematica 中的正则表达式
【发布时间】:2012-01-14 00:36:43
【问题描述】:

我最近发现了 Kleene algebra 用于操作和简化正则表达式。

我想知道这是否已内置到任何计算软件程序(如 Mathematica)中?如果有一个计算工具来对大型表达式进行联合和连接,并让计算机简化它们,那就太好了。

如果您不知道任何内置此代数的程序,您是否知道任何允许使用新代数扩展其引擎的程序?

【问题讨论】:

  • Mathematica 文档包含关于 Working with String Patterns 的详细教程。这可能是一个不错的起点。
  • @kguler:我找到的所有文档,包括那个教程,都只考虑使用正则表达式进行基本的字符串匹配和操作。
  • 您能否添加一个您想解决的特定问题的示例?它可以是一些玩具示例来说明所需的功能。
  • Vitaliy:主要是简化表达式,计算交集和并集,证明相等和关系。我猜你用代数做的那种事情。它还可以将诸如无限数量的联合之类的东西转换为基于 * 等的东西。

标签: regex algorithm wolfram-mathematica algebra


【解决方案1】:

http://www.maplesoft.com/msw/program/MSW04FinalProgram.pdf 上,它声明:

有限自动机理论的基本结果之一是 著名的 Kleene 定理,它指出一种语言可以被 有限自动机当且仅当它可以用正则表示 表达。

正则算法处理的主要难点 然而,表达式是它们的简化。虽然几 关于正则表达式的身份是已知的,例如,规则 在 Kleene 代数中,不存在有效的算法 解决正则表达式的简化问题。

在这种情况下,剩下的唯一方法就是发展启发式 用于简化正则表达式的算法。对于aut 包, 本文概述了 Maple 程序 Rsimplify、Rabsorb 和 再展开。

我想知道是否存在 Kleene 代数算法的开源实现。

【讨论】:

  • 我明白了。我认为有一些系统可以简化所有代数,比如群的 Knuth-Bendix,但现在显然没有。这个问题:stackoverflow.com/questions/7540227/… 讨论了用于简化标准算术的基于规则的系统,而这篇论文:alleystoughton.us/forlan/book-and-slides/slides-3.2-twoup.pdf 给出了很多好的入门规则。但是我仍然想知道我是否真的需要从头开始编写一个术语重写系统,或者有一些我可以插入的系统。也许其中一些 Automated_theorem_prover 的?..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多