✖

Konkatenation regulärer Sprachen

Seien L1, L2 zwei reguläre Sprachen. Wir beweisen, dass ihre Verkettung bzw. Konkatenation L = L1 ∘ L2 ebenfalls eine reguläre Sprache ist.

Was ist Konkatenation

Durch die Verkettung der beiden Wörter „010“ und „1111“ entsteht das Wort „0101111“. Durch die Verkettung von Sprachen entsteht eine neue Sprache, die wir konstruieren, indem wir jedes Wort der einen Sprache mit jedem Wort der anderen Sprache verketten. Die Konkatenation zweier Wörter und zweier Sprachen bezeichnen wir mit einem Kringel: ∘. Die Verkettung der Sprachen L1 und L2 können wir dann so definieren:

L1∘L2={a∘b|a∈L1,b∈L2}

Beweisidee

Wir haben zwei reguläre Sprachen L1, L2 und zwei Automaten, die diese Sprachen akzeptieren:

A1=⟨Q1,Σ1,δ1,q0,F1⟩A2=⟨Q2,Σ2,δ2,p0,F2⟩

Wir konstruieren einen nichtdeterministischen Automaten A = ⟨Q, Σ, δ, q, F⟩, der beide Automaten A1 und A2 „in sich enthält“. Die Grundidee ist, dass wir das Wort zunächst mit dem Automaten A1 akzeptieren, und wenn der Automat A1 einen Endzustand erreicht, versuchen wir, den Rest des Wortes noch mit dem Automaten A2 zu akzeptieren. Wenn auch dieser Automat den Rest des Wortes akzeptiert, dann akzeptiert der Automat A das Wort.

Beispiel

Gegeben sei dieser Automat A1, der nichtleere Wörter akzeptiert, die nur aus Nullen bestehen, sowie Wörter, die aus einer Eins bestehen, auf die nur Nullen folgen (1, 10, 100, …):

Außerdem sei dieser Automat A2 gegeben, der Wörter akzeptiert, die auf 01 enden:

Wir verbinden die Automaten, indem wir von allen Endzuständen des Automaten A1 ε-Übergänge in den Startzustand des Automaten A2 hinzufügen und die Endzustände von A1 anschließend zu gewöhnlichen Zuständen machen. Der Startzustand des gesamten neuen Automaten ist der Startzustand des Automaten A1:

Wie funktioniert der Automat? Wir beginnen mit der Simulation des Automaten A1. Wenn wir in einen ehemaligen Endzustand q1 oder q2 gelangen, wissen wir, dass der Automat A1 einen Teil dieses Wortes akzeptiert. Damit das ganze Wort zur Sprache L1 ∘ L2 gehört, muss der Rest des Wortes noch vom zweiten Automaten A2 akzeptiert werden – deshalb führen von allen ehemaligen Endzuständen ε-Übergänge in den ursprünglichen Startzustand des Automaten A2.

Nehmen wir als Beispiel das Wort 0001. Es gehört zur Konkatenation beider Sprachen, weil das Wort durch die Verkettung der Wörter 00 ∘ 01 entstehen kann. Genauso kann es aber auch durch die Verkettung der Wörter 0 ∘ 001 entstehen. In unserem Automaten können wir beide Wege simulieren. Der Automat kann diesen Weg nehmen:

q0→0q1→0q1→εp0→0p1→1p2

Auf diesem Weg würde der Automat zuerst den Teil 00 des Wortes „akzeptieren“ und dann den Teil 01. Oder er kann diesen Weg nehmen:

q0→0q1→εp0→0p0→0p1→1p2

und der Automat würde so zuerst den Teil 0 des Wortes „akzeptieren“ und dann den Teil 001. In beiden Fällen gelangen wir natürlich in den Endzustand p2.

Formales Vorgehen

Noch einmal: Wir haben zwei reguläre Sprachen L1, L2 und zwei Automaten, die diese Sprachen akzeptieren:

A1=⟨Q1,Σ1,δ1,q0,F1⟩A2=⟨Q2,Σ2,δ2,p0,F2⟩

Wir konstruieren einen nichtdeterministischen Automaten A = ⟨Q, Σ, δ, q, F⟩, für den gilt:

  • Q = Q1 ∪ Q2 (dabei nehmen wir an, dass Q1 ∩ Q2 = ∅)
  • Σ= Σ1 ∪ Σ2
  • q = q0
  • F = F2

Die Übergangsfunktion δ bauen wir schrittweise auf:

δ(q,a)={δ1(q,a)fallsq∈Q1∧q∉F1δ1(q,a)fallsq∈F1∧a≠εδ1(q,a)∪{p0}fallsq∈F1∧a=εδ2(q,a)fallsq∈Q2

Quellen

Kapitel: Abgeschlossenheit regulärer Sprachen, Vereinigung regulärer Sprachen, Schnitt regulärer Sprachen, Differenz regulärer Sprachen, Komplement einer regulären Sprache, Konkatenation regulärer Sprachen, Kleene-Stern einer regulären Sprache