Ist eine unäre Sprache regulär, wenn ihr Exponent eine lineare Funktion ist?

13

Während ich die aktuelle Aufgabe für meinen formalen Sprach- und Automatenkurs erledigte, blieb ich bei Übungen mit unären Sprachen hängen (ich hoffe, das ist der richtige Begriff), dh Sprachen, die auf einem einzelnen Buchstaben aufbauen. Ich möchte jedoch nicht nach den spezifischen Übungen fragen, sondern nach einer viel allgemeineren Vermutung, die ich mir ausgedacht habe:

Lassen und L = { a f ( n )Σ * : n N 0 } . Meine Vermutung ist: L  regulär ist x , y N 0 : f ( n ) = x n + yΣ={ein}L={einf(n)Σ:nN0}

L ist regelmäßigx,yN0:f(n)=xn+y

Hat diese Frage schon einmal eine wissenschaftliche Behandlung erfahren? Ist es "offensichtlich" wahr / falsch?

Für mich ist die " " -Richtung offensichtlich wahr, weil man einfach einen DFA mit x + y- Zuständen konstruieren kann , der nach dem Durchlesen durch die x- Zustände wechseltx+yx Zustände durchgelesen wurden, und akzeptiert, wenn er bei der Zustandsnummer y liegt .yy

SEJPM
quelle
Gute Arbeit, diese Beobachtung zu machen, ist nichts, was ich von durchschnittlichen Schülern erwarten würde!
Raphael
Einverstanden. Dies ist eine sehr schöne Beobachtung.
Rick Decker
Es ist aus dem Titel nicht ersichtlich, aber wir hatten diese Frage bis auf ein kleines Äquivalenz-Lemma: Was sind die möglichen Sätze von Wortlängen in einer regulären Sprache?
Gilles 'SO- hör auf böse zu sein'

Antworten:

9

Linear ist nah, aber der Fachbegriff, den Sie suchen, ist semilinear: dh eine endliche Vereinigung linearer Mengen.

Die Hälfte des Beweises dafür ist eine Folge von Satzes Parikh , der besagt, dass jede kontextfreie Sprache eine semilineare Parikh-Karte hat (dh die Menge von Vektoren, die die Vorkommen jedes Buchstabens im Alphabet enthält).

Für eine unäre Sprache ist die Parikh-Karte der Sprache die Sprache selbst (dh jedes Wort wird durch die Anzahl der Buchstaben eindeutig identifiziert), sodass jede unäre reguläre Sprache semilinear ist.

Die andere Hälfte des Beweises zeigt, dass Sie eine reguläre Sprache konstruieren können, die jede unäre semilineare Menge enthält. Dies erfordert ein wenig Arbeit, ist jedoch nicht allzu schwierig, wenn Sie reguläre Ausdrücke verwenden:

  • erkennt die Sprache { k }eink{k}
  • erkennt { x k x N 0 }(eink){xkxN0}
  • erkennt S 1 + S 2 , wenn R 1 erkennt S 1 und R 2 erkennt S 2 , wobei + hier ist elementweise AdditionR1R2S1+S2R1S1R2S2+
  • R1|R2S1S2R1S1R2S2|
jmite
quelle
6

Du hast fast recht. Sie müssen die Tatsache berücksichtigen , dass Sie mehrere lineare Funktionen haben könnten, wie

L={einkk=3n+1 oder k=7n+4}
L={einkk=4n+2 oder k=13}
Rick Decker
quelle