“密集”正则表达式生成


25

这是一个正则表达式的猜想:

对于正则表达式,令长度是其中的符号数,忽略括号和运算符。例如R|R||01|=|(01)|=2

猜想:如果并且包含长度为每个字符串 或更小,则。|R|>1L(R)|R|L(R)=Σ

也就是说,如果在的长度范围内“密集” ,则实际上会生成所有东西。L(R)RR

一些可能相关的事情:

  1. 仅需要一小部分即可生成所有字符串。例如,对于二进制,将对任何。RR=(01)SS
  2. 在某个时刻,中必须有一颗Kleene星。如果没有,它将丢失一些小于字符串。。R|R|

很高兴看到一个证明或反例。在某些情况下,我错过了很明显的错误吗?有人看过(或类似的)东西吗?


被和算作或作为?εsymbolsoperations
Ran G.

@冉我把它们算作符号。
卢卡斯·库克

Answers:


34

Keith Ellul,Bryan Krawetz,Jeffrey Shallit和Ming-ming Wang在其论文“正则表达式:新结果和未解决的问题”中驳斥了您的猜测。虽然无法在线获取本文,但可以进行讨论

在本文中,他们定义了度量,它是R中的符号数,不计ϵ。然而,可以从每个人的表情不产生空的语言被淘汰,并且表达可以“清理”,这样的数量ε它含有最多| a l p hR | (引言第10页上的引理)。|alph(R)|Rϵϵ|alph(R)|

在51页,每他们构建体大小的一个正则表达式Ô Ñ { 0 1 }其中至多产生大小的所有字符串Ω 2 Ñ Ñ ,但不产生所有字符串。请注意,这里的“大小”在您和他们的意义上都是正确的,因为我们使用的是big-O表示法。他们还提出了一个悬而未决的问题,以找到两个参数之间的最佳依赖关系。n3O(n){0,1}Ω(2nn)


非常酷的结果,也很令人惊讶:)
亚历克斯十Brink

该正则表达式如何?
svick

@svick:它巧妙地结合了的技巧和Kleene星,以快速浏览一下证明来捕获常见的子串。表情非常怪异:)(a+b)(c+d)=ac+bc+ad+bd
亚历克斯十布林克

@Yuval非常酷。感谢您的参考!
卢卡斯·库克

2
@YuvalFilmus似乎该文件现已在线可用。
安东·特鲁诺夫
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.