"Dichte" reguläre Ausdrücke erzeugen ?

25

Hier ist eine Vermutung für reguläre Ausdrücke:

Für den regulären Ausdruck sei die LängeGeben Sie die Anzahl der darin enthaltenen Symbole an und ignorieren Sie dabei Klammern und Operatoren. ZB| R | | 0 1 | = | ( 0 1 ) * | = 2R|R||01|=|(01)|=2

Vermutung: Wenn und enthält jede Zeichenkette der Längeoder weniger, dann ist .l ( R ) | R | L ( R ) = Σ |R|>1L(R)|R|L(R)=Σ

Das heißt, wenn ist ‚dicht‘ bis ‚s Länge, dann eigentlich alles erzeugt.R RL(R)RR

Einige Dinge, die relevant sein können:

  1. Es wird nur ein kleiner Teil von benötigt, um alle Zeichenfolgen zu generieren. Zum Beispiel in Binär-, wird für jede Arbeit .R = ( 0 1 ) *S SRR=(01)SS
  2. Irgendwann muss es in einen Kleene-Stern geben . Ist dies nicht der Fall, wird eine Zeichenfolge mit einer Größe von weniger als übersehen .| R |R|R|

Es wäre schön, einen Beweis oder ein Gegenbeispiel zu sehen. Gibt es einen Fall, in dem es offensichtlich falsch ist, dass ich etwas verpasst habe? Hat jemand dies (oder ähnliches) schon einmal gesehen?

Lucas Cook
quelle
werden und als oder als gezählt ? εsymbolsoperations
Ran G.
@ Ran Ich zählte sie als Symbole.
Lucas Cook

Antworten:

34

Ihre Vermutung wird von Keith Ellul, Bryan Krawetz, Jeffrey Shallit und Ming-wei Wang in ihrem Artikel "Reguläre Ausdrücke: Neue Ergebnisse und offene Probleme" widerlegt. Während das Papier nicht online verfügbar ist, ist ein Vortrag .

In der Arbeit definieren sie das MaßDies ist die Anzahl der Symbole in , wobei oder nicht . Allerdings kann von jedem Ausdruck eliminiert werden nicht die leere Sprache zu erzeugen, und der Ausdruck kann „gereinigt“ werden , so dass die Anzahl der es enthält höchstens(Lemma auf Seite 10 des Vortrags).R ϵ ϵ | a l p h ( R ) ||alph(R)|Rϵϵ|alph(R)|

Auf Seite 51 konstruieren sie für jedes einen regulären Ausdruck der Größe über der alle Zeichenfolgen der Größe höchstens generiert, jedoch nicht generiert alle Saiten. Beachten Sie, dass "Größe" hier sowohl in Ihrem als auch in ihrem Sinne ist, da wir die Big-O-Notation verwenden. Sie werfen auch eine offene Frage auf, um die beste Abhängigkeit zwischen den beiden Parametern zu finden.O ( n ) { 0 , 1 } Ω ( 2 n n )n3O(n){0,1}Ω(2nn)

Yuval Filmus
quelle
Sehr cooles Ergebnis und ziemlich überraschend :)
Alex ten Brink
Wie sieht dieser reguläre Ausdruck aus?
Svick
@svick: Es kombiniert geschickt den Trick mit Kleene-Sternen, um gemeinsame Teilzeichenfolgen zu erfassen, gemessen an einem kurzen Überblick über den Beweis. Der Ausdruck ist ziemlich ungeheuerlich :)(a+b)(c+d)=ac+bc+ad+bd
Alex ten Brink
@Yuval Sehr cool. Danke für den Hinweis!
Lucas Cook
2
@YuvalFilmus Es scheint, dass das Papier jetzt online verfügbar ist.
Anton Trunov