FSK4-1 Pumping-Lemma für reguläre Sprachen (2 Punkte)

Zeigen Sie mit dem Pumping-Lemma für reguläre Sprachen, dass die folgenden Sprachen nicht regulär sind.

a) über dem Alphabet .

Beweis

Abpumpen:

  • Das gepumpte Wort wird .
  • Das resultierende Wort hat ‘s und ‘s.
  • Da , gilt , und somit passt das Wort nicht in die Form , weil die Anzahl der ‘s und ‘s nicht mehr übereinstimmt.

Fazit:

  • Da für , und das Wort beliebig gewählt wurde, folgt daraus, dass nicht regulär sein kann, da es das Pumping-Lemma verletzt.

b) , wobei eine kontextfreie Grammatik ist mit

Aufgabenstellung

ist die Sprache der zueinander passenden eckigen und runden Klammern, d.h. es sind z.B. und , aber und (vgl. Aufgabe FSK1-3). Hier ist der umgewandelte Text mit den angepassten LaTeX-Syntax:

Beweis

Abpumpen:

  • Das gepumpte Wort wird .
  • Wenn und , dann ist .
  • Das resultierende Wort hat öffnende und schließende Klammern.

Fazit:

  • Da , gilt , und somit passt das Wort nicht in die Form, die eine gleiche Anzahl von zueinander passenden Klammern erfordert, weil die Anzahl der öffnenden Klammern ) geringer ist als die Anzahl der schließenden Klammern .
  • Da für , und das Wort gemäß den Vorgaben des Pumping-Lemmas gewählt wurde, folgt daraus, dass nicht regulär sein kann, da es das Pumping-Lemma verletzt.

Summary

Um zu zeigen, dass die Sprache , die korrekt gepaarte Klammern enthält, nicht regulär ist, verwenden wir das Pumping-Lemma für reguläre Sprachen. Hier ist eine noch kürzere und einfachere Zusammenfassung des Beweises:

  1. Annahme: Angenommen ist regulär.
  2. Wortwahl: Wir wählen ein Wort , bestehend aus öffnenden gefolgt von schließenden Klammern, z.B. .
  3. Zerlegung und Pumping: Das Pumping-Lemma sagt, dass man in Teile zerlegen kann, wobei wiederholbar ist. Wichtig ist, dass nur aus öffnenden Klammern besteht.
  4. Abpumpen: Wenn wir beim Pumpen entfernen, sind weniger öffnende als schließende Klammern im Wort , was zu einem Ungleichgewicht führt.

Fazit: hat nicht mehr die gleiche Anzahl öffnender und schließender Klammern, was es ungültig für macht. Das zeigt, dass nicht regulär sein kann.


FSK4-2 Reguläre Ausdrücke und Abschlusseigenschaften (2 Punkte)

a) Betrachten Sie den regulären Ausdruck .

i) Geben Sie einen NFA ohne -Übergänge an, der erkennt. Sie können die Algorithmen aus der Vorlesung zur Konstruktion eines NFA aus einem regulären Ausdruck und zur Elimination von -Übergängen verwenden, müssen aber nicht.

graph LR
start(( )) --> q0((q0))
    q0((q0)) -- a,b --> q1((q1))
    q1((q1)) -- a,b --> q0((q0))
    q0((q0)) -- a --> q2((q2))
    q2((q2)) -- b --> q5((q5))
    q0((q0)) -- b --> q3((q3))
    q3((q3)) -- a --> q5(((q5)))
    q5(((q5))) -- a,b --> q0((q0))

ii) Geben Sie einen DFA an, der erkennt. Sie können die Potenzmengenkonstruktion verwenden, müssen aber nicht.

graph LR
    start(( )) --> S0((S0))
    S0((S0)) -- a --> S1((S1))
    S0((S0)) -- b --> S2((S2))
    S1((S1)) -- a --> S1((S1))
    S1((S1)) -- b --> S3((S3))
    S2((S2)) -- a --> S4((S4))
    S2((S2)) -- b --> S2((S2))
    S3((S3)) -- a --> S4((S4))
    S3((S3)) -- b --> S3((S3))
    S4((S4)) -- a --> S4(((S4)))
    S4(((S4))) -- b --> S3(((S3)))

b) Geben Sie Reguläre Ausdrücke an, die die folgenden Sprachen erkennen.

i) Die Sprache der Wörter über dem Alphabet , die mit oder anfangen und mindestens ein enthalten.

Erklärung des regulären Ausdrucks:

  • [ab]: Das Wort beginnt mit oder .
  • [abc]*: Nach dem Anfangsbuchstaben können beliebige Zeichen aus dem Alphabet folgen, und zwar beliebig oft, auch gar nicht.
  • c: Es muss mindestens ein im Wort vorkommen.
  • [abc]*: Nach dem ersten können wieder beliebige Zeichen aus dem Alphabet beliebig oft folgen.

ii) Die Sprache der Wörter über dem Alphabet , die keine zwei ‘s hintereinander enthalten.

Erklärung des regulären Ausdrucks:

  • b*:Das Wort kann mit beliebig vielen ‘s beginnen, einschließlich keinem .
  • (ab*)*: Nach jedem darf kein weiteres direkt folgen. Stattdessen kann ein von beliebig vielen ‘s gefolgt werden (einschließlich keinem), und diese Sequenz aus einem und den darauf folgenden ‘s kann beliebig oft wiederholt werden, einschließlich gar nicht.

c) Zeigen Sie mithilfe der Abschlusseigenschaften regulärer Sprachen, dass die Sprache über dem Alphabet nicht regulär ist. Sie dürfen annehmen, dass die Sprache aus Aufgabe FSK4-1a nicht regulär ist.

Um zu zeigen, dass die Sprache nicht regulär ist, gehen wir wie folgt vor:

  1. Annahme: ist regulär.
  2. Konstruktion: Betrachte die reguläre Sprache , die durch den regulären Ausdruck beschrieben wird und alle Wörter mit beliebigen Anzahlen von ‘s gefolgt von ‘s enthält.
  3. Durchschnitt: Der Durchschnitt ergibt die Sprache , die die Struktur von widerspiegelt und nach Annahme nicht regulär ist.
  4. Widerspruch: Da der Durchschnitt zweier regulärer Sprachen regulär sein sollte, der erhaltene Durchschnitt jedoch nicht regulär ist, führt dies zu einem Widerspruch.

Schlussfolgerung: kann nicht regulär sein, da dies zu einem Widerspruch führt.


FSK4-3 Grammatik über Automaten zu Grammatik (0 Punkte)

Aufgabenstellung

Gegeben sei die reguläre Grammatik

a) Erzeugen Sie gemäß der Konstruktion aus der Vorlesung aus einen NFA mit .

graph LR
start(( ))-->S((S))
	S((S)) --a--> A((A))
	S((S)) --b--> B((B))
		A((A))--b--->B((B))
			B((B))--b-->C((C))
				C((C)) --a-->C(((C)))

textC[C ist ein Endzustand]

b) Erzeugen Sie mit der Potenzmengenkonstruktion aus einen DFA mit . Geben Sie nur den vom Startzustand erreichbaren Teil von an.

StartZiel
flowchart LR
start(( ))-->S((S))
	S((S)) --a--> A((A))
	S((S)) --b--> B((B))
		A((A))--b--->B((B))
		A((A))--a-->M((M))
			B((B))--b-->C((C))
			B((B))--a-->M((M))
				C(((C))) --a-->C(((C)))
				C(((C))) --b-->M((M))

M((M)) --a,b-->M((M))
textMuell["M = Müllzustand"]

c) Erzeugen Sie gemäß der Konstruktion aus der Vorlesung aus eine Grammatik mit .

Erste Option:

Die Grammatik wurde um den Müllzustand erweitert

Zweite Option: (inkorrekt?)

Die Grammatik entspricht der vom DFA akzeptierten Sprache, da sie durch eine direkte Überführung der Zustände und Übergänge des DFA in Nichtterminale und Produktionsregeln entsteht, die die Akzeptanzbedingungen des DFA genau abbilden.

d) Vergleichen Sie die Grammatiken und . Beschreiben Sie die Gemeinsamkeiten dieser Grammatiken, sowie ihre Unterschiede. Überlegen Sie sich, wodurch diese Effekte zustande kommen.

Gemeinsamkeiten:

  1. Nichtterminale und Terminale: Beide Grammatiken nutzen und .
  2. Startsymbol: Beide haben als Startsymbol.
  3. Ähnliche Produktionen: Produktionen wie und sind identisch.

Unterschiede:

  1. Müllzustand: führt den Müllzustand ein, den nicht hat.
  2. Zusätzliche Produktionen: enthält Produktionen wie und , die den Müllzustand reflektieren.
  3. Endproduktion: In hat eine Endproduktion , die in fehlt.

Ursachen der Unterschiede:

  • Müllzustand: modelliert explizit den Müllzustand für die DFA-Vollständigkeit, während sich auf die Sprachgenerierung konzentriert.
  • Automatenlogik: spiegelt die vollständige DFA-Struktur wider, während nur die akzeptierten Sprachelemente darstellt.

Zusammenfassend modelliert den vollständigen DFA, inklusive ungültiger Eingaben, während die Sprache direkt generiert.


FSK4-4 DNA-Analyse mit NFA (0 Punkte)

Aufgabenstellung

Diese Aufgabe handelt von der Analyse von Desoxyribonukleinsäure (DNS/DNA) mithilfe von NFA. DNA ist eine Abfolge der Basen Adenin, Thymin, Guanin und Cytosin, typischerweise mit A, T, G und C abgekürzt. Dementsprechend ist das Alphabet aller Automaten in dieser Aufgabe .

a) Um das Vorkommen einer Basensequenz zu finden, wird aus dieser Sequenz ein NFA erzeugt, der alle Wörter akzeptiert, in denen diese Sequenz als Teilwort vorkommt.

Aufgabenstellung

Geben Sie einen NFA an, der genau diejenigen Wörter akzeptiert, in denen als Teilwort vorkommt.

Hinweis: Sie können (müssen aber nicht) dazu den regulären Ausdruck verwenden, der genau diese Sprache akzeptiert.

Hinweis: Sie können auch einen DFA angeben, aber ein NFA ist übersichtlicher.

graph LR
start(( )) --> z0((z0))
z0((z0)) --Σ-->z0((z0))
	z0((z1))--A--> z1((z1))
			z1((z1))--C--> z2((z2))
				z2((z2))--T--> z3((z3))
					z3((z3))--C--> z4(((z4)))
						z4(((z4))) --Σ--> z4(((z4)))

b) Beim Kopieren von DNA kann es vorkommen, dass Fehler auftreten. Zum Beispiel kann eine Base durch eine andere ersetzt werden; es kann eine Base ausgelassen werden; es kann eine zusätzliche Base eingefügt werden; und es können auch komplexere Fehler auftreten. Zur Vereinfachung behandeln wir hier nur den Fall, dass eine Base durch eine andere ersetzt wird.

Aufgabenstellung

Aus einem NFA kann ein NFA erzeugt werden, der alle Wörter akzeptiert, die durch höchstens fehlerhafte Ersetzungen aus entstehen.

Dabei sind:

Berechnen Sie mit der obigen Konstruktion einen NFA aus , der Wörter mit bis zu 2 Fehlern akzeptiert.

Erklärung \delta'

Die Transitionsfunktion definiert, wie der modifizierte Automat von einem Zustand zum anderen übergeht, unter Berücksichtigung möglicher Fehler in der Eingabe. Hier ist eine kurze und verständliche Erklärung:

  1. : Diese Menge beschreibt normale Übergänge ohne Fehler. Wenn der Automat im Zustand ist und das Zeichen liest, kann er in den Zustand übergehen, wenn ein gültiger Übergangszustand von aus ist, gegeben das Zeichen im ursprünglichen Automaten . Das bedeutet, es wird kein Fehler gezählt und der Fehlerindex bleibt unverändert.
  2. : Diese Menge erlaubt fehlerhafte Übergänge, bei denen ein Zeichen falsch interpretiert wird. Wenn der Automat im Zustand ist und das Zeichen liest, kann er auch in den Zustand übergehen, wenn es möglich ist, von aus zu erreichen durch das Lesen eines beliebigen anderen Zeichens (nicht notwendigerweise ). Dies zählt als ein Fehler, und der Fehlerindex wird um 1 erhöht, solange die Gesamtzahl der Fehler nicht größer als ist.

Zusammengefasst: erlaubt sowohl normale als auch fehlerhafte Übergänge, wobei fehlerhafte Übergänge die Annahme eines falschen Zeichens unter der Bedingung beinhalten, dass die maximale erlaubte Fehlerzahl noch nicht erreicht ist.

graph LR
    start(( )) --> z00((z0,0))
    z00((z0,0)) --Σ--> z00((z0,0))
    z00((z0,0)) --A--> z10((z1,0))
    z00((z0,0)) --Σ--> z01((z0,1))
    z01((z0,1)) --Σ--> z01((z0,1))
    z01((z0,1)) --A--> z11((z1,1))
    z01((z0,1)) --Σ--> z02((z0,2))
    z02((z0,2)) --Σ--> z02((z0,2))
    z02((z0,2)) --A--> z12((z1,2))

    z10((z1,0)) --C--> z20((z2,0))
    z10((z1,0)) --Σ--> z11((z1,1))
    z11((z1,1)) --C--> z21((z2,1))
    z11((z1,1)) --Σ--> z12((z1,2))
    z12((z1,2)) --C--> z22((z2,2))
    z12((z1,2)) --Σ--> z12((z1,2))

    z20((z2,0)) --T--> z30((z3,0))
    z20((z2,0)) --Σ--> z21((z2,1))
    z21((z2,1)) --T--> z31((z3,1))
    z21((z2,1)) --Σ--> z22((z2,2))
    z22((z2,2)) --T--> z32((z3,2))
    z22((z2,2)) --Σ--> z22((z2,2))

    z30((z3,0)) --C--> z40(((z4,0)))
    z30((z3,0)) --Σ--> z31((z3,1))
    z31((z3,1)) --C--> z41(((z4,1)))
    z31((z3,1)) --Σ--> z32((z3,2))
    z32((z3,2)) --C--> z42(((z4,2)))
    z32((z3,2)) --Σ--> z32((z3,2))

    z40(((z4,0))) --Σ--> z40(((z4,0)))
    z41(((z4,1))) --Σ--> z41(((z4,1)))
    z42(((z4,2))) --Σ--> z42(((z4,2)))

c) Geben Sie an und begründen Sie, welche der folgenden Wörter von akzeptiert werden. Prüfen Sie, ob Ihr Ergebnis korrekt ist, also ob die erkannten Wörter tatsächlich diejenigen sind, bei denen bis auf höchstens 2 Fehler das Wort als Teilwort vorkommt.

Um zu bestimmen, ob die gegebenen Wörter von dem NFA akzeptiert werden, prüfen wir, ob das Wort “ACTC” mit höchstens zwei Fehlern in jedem Wort erscheinen kann.

Wortanalyse:

    • Suche nach “ACTC”: Kein Vorkommen von “ACTC”.
    • Mögliche Fehler: Das nächste, was “ACTC” ähnlich sieht, wäre “ACCA” (zum Beispiel durch Ersetzung von ‘T’ durch ‘A’ und ‘C’ durch ‘A’).
    • Ergebnis: Zwei Fehler, um von “ACCA” zu “ACTC” zu gelangen. Wird akzeptiert.
    • Suche nach “ACTC”: Kein direktes Vorkommen von “ACTC”.
    • Mögliche Fehler: Das nächste, was “ACTC” ähnlich sieht, wäre “GCGT” eine Korrektur würde 3 Korrekturen benötigen “ACTC
    • Ergebnis: Wort benötigt 3 Korrekturen Wird nicht akzeptiert.
  1. TAGCA

    • Suche nach “ACTC”: Kein direktes Vorkommen von “ACTC”.
    • Mögliche Fehler: Das nächste, was “ACTC” ähnlich sieht, wäre “AGCA” eine Korrektur würde 3 Korrekturen benötigen “ACTC
  • Ergebnis: Wort hat 3 Fehler, Wird nicht akzeptiert.
  1. TCTCA
    • Suche nach “ACTC”: Kein direktes Vorkommen von “ACTC”.
    • Mögliche Fehler: Das nächste, was “ACTC” ähnlich sieht, wäre “TCTC” eine Korrektur würde 1 Korrektur benötigen “ACTC”
    • Ergebnis: Nur ein Fehler , wird akzeptiert.

Zusammenfassung:

  • AAAAACCCAAA: Akzeptiert (zwei Fehler )
  • GAGGCGCT: Nicht akzeptiert (drei Fehler)
  • TAGCA: Nicht akzeptiert (drei Fehler)
  • TCTCA: Akzeptiert (ein Fehler)

d) Begründen Sie, dass die Konstruktion aus b) korrekt ist, also tatsächlich für jeden NFA und jedes einen NFA liefert, der maximal Fehler zulässt.

Hinweis

Sie können auch als Vorüberlegung dies erst für den NFA zeigen.

Nur ein Ansatz

Die Korrektheit der Konstruktion des NFA aus einem NFA zur Akzeptanz von Wörtern mit bis zu Ersetzungsfehlern lässt sich formal durch folgende Argumente beweisen:

  1. Erweiterter Zustandsraum: Der Zustandsraum von , dargestellt als , kombiniert jeden Zustand aus mit einem Fehlerzähler . Dieser Zähler verfolgt, wie viele Fehler (bis zu einem Maximum von ) bereits aufgetreten sind.

  2. Transitionsfunktion : Die Transitionsfunktion für definiert zwei Arten von Übergängen für jeden Zustand :

  • Normale Übergänge: Wenn das Eingabezeichen exakt dem erwarteten Zeichen entspricht, erfolgt der Übergang von zu , wobei direkt aus der Transitionsfunktion von für das Zeichen folgt. Dies repräsentiert einen korrekten Leseschritt ohne zusätzlichen Fehler.

  • Fehlerhafte Übergänge: Wenn das Eingabezeichen nicht dem erwarteten Zeichen entspricht, kann der Automat auch zu übergehen, vorausgesetzt . Dieser Übergang bedeutet, dass ein beliebiges Zeichen aus gelesen wird, was als Fehler gezählt wird.

  1. Beweis durch Induktion (Korrekte Akzeptanz): Wir können beweisen, dass ein Wort genau dann akzeptiert, wenn es durch bis zu Ersetzungsfehler aus einem Wort entsteht, das akzeptiert.

  • Basisfall: Für , verhält sich genau wie , da keine fehlerhaften Übergänge möglich sind.

  • Induktionsschritt: Nehmen wir an, akzeptiert Wörter mit bis zu Fehlern korrekt. Ein Wort mit genau Fehlern wird akzeptiert, wenn es einen Pfad von (wobei ein Startzustand von ist) zu einem Endzustand in gibt, wobei der letzte Schritt genau der -te Fehler ist.

  1. Übereinstimmung von Start- und Endzuständen: Startzustände von sind , für jeden Startzustand in . Endzustände in sind für jeden Endzustand in und jedes zwischen 0 und , was sicherstellt, dass auch Wörter akzeptiert, die korrekt enden, aber fehlerhaft begonnen haben.

Durch diese Überlegungen ist gesichert, dass genau die Wörter akzeptiert, die aus den von akzeptierten Wörtern durch bis zu Ersetzungsfehler entstehen. Damit ist die Konstruktion von formal korrekt in der Modellierung von Fehlertoleranzen bis zum Grad

Die Konstruktion eines NFA aus einem NFA zur Akzeptanz von Wörtern mit bis zu Ersetzungsfehlern lässt sich durch folgende Schritte begründen:

  1. Erweiterter Zustandsraum: kombiniert jeden Zustand aus mit einem Fehlerzähler , um bis zu Fehler zu verfolgen.

  2. Transitionsfunktion : hat normale Übergänge für exakte Zeichen und Fehlerhafte Übergänge für nicht erwartete Zeichen, die als Fehler gezählt werden.

  3. Beweis durch Induktion (Korrekte Akzeptanz): akzeptiert ein Wort genau dann, wenn es durch bis zu Ersetzungsfehler aus einem von akzeptierten Wort entsteht.

  4. Übereinstimmung von Start- und Endzuständen: Startzustände von entsprechen denen von , und Endzustände in berücksichtigen alle möglichen Fehlerzähler.

Damit akzeptiert genau die Wörter, die aus den von akzeptierten Wörtern durch bis zu Ersetzungsfehler entstehen.