diff --git a/Writerside/images/image_961.png b/Writerside/images/image_961.png new file mode 100644 index 0000000..a97b3e4 Binary files /dev/null and b/Writerside/images/image_961.png differ diff --git a/Writerside/images/image_962.png b/Writerside/images/image_962.png new file mode 100644 index 0000000..c9c7c97 Binary files /dev/null and b/Writerside/images/image_962.png differ diff --git a/Writerside/in.tree b/Writerside/in.tree index afea3ff..5896eca 100644 --- a/Writerside/in.tree +++ b/Writerside/in.tree @@ -145,6 +145,8 @@ + + @@ -153,6 +155,7 @@ + diff --git a/Writerside/topics/04/Theoretische Informatik/06_ReguläreSprachen.md b/Writerside/topics/04/Theoretische Informatik/06_ReguläreSprachen.md index 155fe15..bbefb87 100644 --- a/Writerside/topics/04/Theoretische Informatik/06_ReguläreSprachen.md +++ b/Writerside/topics/04/Theoretische Informatik/06_ReguläreSprachen.md @@ -114,4 +114,6 @@ Nachteile: - $(a)^?$: ggf. 1x a - $[acfw]$: $a | c | f | w$ = a oder c oder f oder w - $[^acfw]$: nicht eins von denen - - $[1-4]$: [1234] \ No newline at end of file + - $[1-4]$: [1234] + +> Sprachen sind von einem regulären Ausdruck beschreibbar, wenn Nerode-Index endlich ist \ No newline at end of file diff --git a/Writerside/topics/04/Theoretische Informatik/07_kontextfreieSprachen.md b/Writerside/topics/04/Theoretische Informatik/07_kontextfreieSprachen.md new file mode 100644 index 0000000..bc60f0a --- /dev/null +++ b/Writerside/topics/04/Theoretische Informatik/07_kontextfreieSprachen.md @@ -0,0 +1,17 @@ +# Kontextfreie Sprachen +## Chomsky Normalform +- Eine Grammatik ist in der CNF, wenn + - α ∈ V + - β in Σ ODER β = X*Y mit X,Y ∈ V + - S nicht auf der rechten Seite + +### Umwandlung kontextfreier Grammatiken in CNF +1. Falls `S` irgendwo auf der rechten Seite ist + - Altes `S` in `S'` umbenennen + - Neue Variable `S → S'` hinzufügen +2. Alle epsilon Regeln entfernen (außer `S → ε`) +3. Alle Regeln der Form `A→B` entfernen +4. Alle Regleln der Form `A→β` mit |β| > 2 umwandeln + - $A → X_1X_2...X_n$ in A → $X_1Y_1$, $Y_1 → X_2Y_2$, ..., $Y_{n-1} → X_n$ + - + - \ No newline at end of file diff --git a/Writerside/topics/04/Theoretische Informatik/Hausaufgaben/ti_hausaufgabe10.md b/Writerside/topics/04/Theoretische Informatik/Hausaufgaben/ti_hausaufgabe10.md new file mode 100644 index 0000000..a5666b8 --- /dev/null +++ b/Writerside/topics/04/Theoretische Informatik/Hausaufgaben/ti_hausaufgabe10.md @@ -0,0 +1,138 @@ +# Übungsblatt 10 +> Wenzel Schwan (1125033), Paul Kneidl (1125219), David Schirrmeister (1125746), Michelle Klein (1126422) + +## Aufgabe 1 + +### 1a) +Gegeben sei folgende CNF-Grammatik $G_1$: + +``` +G_1: +S → AB | CD +C → AB +D → BA +A → 0 +B → 1 +``` + +Nutzen Sie den CYK-Algorithmus, um zu entscheiden, ob das Wort $w = 0110$ zur Sprache $L(G_1)$ gehört. +Legen Sie dazu eine Tabelle analog zu dem Beispiel aus der Vorlesung (Kapitel 7, Folie 16) an und füllen Sie diese entsprechend aus. + +| $Var(w)_{[i,j]}(G_1)$ | 1 | 2 | 3 | 4 | +|-----------------------|---------|---------|----|---------| +| 1 | $\{A\}$ | {S,C} | {} | $\{S\}$ | +| 2 | - | $\{B\}$ | {} | {} | +| 3 | - | - | | $\{D\}$ | +| 4 | - | - | - | $\{A\}$ | + +→ $w ∈ L(G_1)$ + +### 1b) +Gegeben sei folgende CNF-Grammatik $G_2$: + +``` +G_2: +S → AB +A → AA | AC | a +B → BC | b +C → CC | a | c +``` + +Nutzen Sie analog zu Aufgabe 1a den CYK-Algorithmus, um zu entscheiden, ob das Wort $w = acb$ zur Sprache $L(G_2)$ gehört. + +| $Var(w)_{[i,j]}(G_2)$ | 1 | 2 | 3 | +|-----------------------|-----------|-----------|---------| +| 1 | $\{A,C\}$ | $\{A,C\}$ | $\{S\}$ | +| 2 | - | $\{C\}$ | {} | +| 3 | - | - | $\{B\}$ | + +→ $w ∈ L(G_1)$ + +## Aufgabe 2 + +Gegeben sei folgende CNF-Grammatik $G$: + +``` +G: +S → AB +A → AA | AC | a +B → BC | b +C → CC | a | c +``` + +### 2a) +Zeichnen Sie zwei verschiedene Syntaxbäume für das Wort $w = acacaaabaca \in L(G)$. + +![image_961.png](image_961.png) + +### 2b) +Finden Sie ein Wort $w \in L(G)$, zu dem ein Ableitungsbaum mit möglichst wenig Knoten existiert, und zeichnen Sie den zugehörigen Ableitungsbaum. + +$w = ab$ + +![image_962.png](image_962.png) + +## Aufgabe 3 + +Betrachten Sie die folgenden Grammatiken $G_1$ und $G_2$. Gibt es zu der jeweiligen Grammatik $G_i$ ($i \in \{1, 2\}$) ein Wort $w \in L(G_i)$ mit mehr als einem Syntaxbaum? Begründen Sie Ihre Antwort. + +### 3a) + +``` +G_1: +S → 0 1 | 0 S 1 +``` + +Nein, es gibt kein Wort mit mehreren Syntaxbäumen, da die Regeln jeden Schritt genau vorgeben, da +wir nur eine Regel mit Rekursion haben, ist keine Mehrdeutigkeit möglich. + +### 3b) + +``` +G_2: +S → 0 B | 1 A +A → 0 | 0 S | 1 A A +B → 1 | 1 S | 0 B B +``` + +Nein, es gibt keine Möglichkeit mehrere Syntaxbäume zu bilden, da zwar eine Rekursion möglich ist durch +$B → 0BB$ und $A→1AA$, jedoch durch die 1 und 0 vor den Variablen kein alternativer Pfad gebildet werden kann. + +## Aufgabe 4 + +Für eine Sprache $L$ über einem Alphabet $\Sigma$ definieren wir + +$$ +L^R := \{ w^R \mid w \in L \} +$$ + +Dabei gilt $w^R = w_n w_{n-1} \dots w_1$ für $w = w_1 w_2 \dots w_n \in L$ mit $w_i \in \Sigma$. + +Beschreiben Sie ein algorithmisches Verfahren, das aus einer kontextfreien Grammatik $G$ eine kontextfreie Grammatik $G^R$ erzeugt, so dass $L(G^R) = L(G)^R$ gilt. Begründen Sie die Korrektheit Ihres Verfahrens. + +Gegeben: $G=(Σ, V, S, R)$ +- S, V und Σ bleiben gleich +- Für jede Regel $A → X_1X_2...X_n$ + - Regel $A → X_n, X_{n-1}, ..., X_1$ hinzufügen + +Da kontextfreie Grammatiken keine Einschränkungen hinsichtlich der Position von (Nicht-)Terminalen in Regeln haben, +bleibt die resultierende Grammatik $G^R$ kontextfrei. +Die Korrektheit folgt daraus, dass jede Regel in $G$ eine Regel in $G^R$ erzeugt, die das gleiche Wort in umgekehrter Reihenfolge generiert. + +## Aufgabe 5 + +Für eine Sprache $L$ über dem Alphabet $\Sigma = \{ 0, 1 \}$ definieren wir + +$$ +L^{\text{prfx}} := \{ x \in \Sigma^\ast \mid \exists y \in \Sigma^\ast : x \cdot y \in L \} +$$ + +Beschreiben Sie ein algorithmisches Verfahren, das aus einer regulären Grammatik $G$ eine reguläre Grammatik $G_{\text{prfx}}$ erzeugt, so dass $L(G_{\text{prfx}}) = L(G)_{\text{prfx}}$ gilt. Begründen Sie die Korrektheit Ihres Verfahrens. + +Gegeben: $G=(Σ, V, S, R)$ +- Wandle G in einen NEA N um +- Markiere alle Zustände als akzeptierend → $N_{prfx}$ + - Präfix kann beliebig lang sein und muss kein nachfolgendes Symbol haben +- Wandle $N_{prfx}$ in eine rechtslineare Grammatik $G_{prfx}$ um + +- Oder für jede Nichtterminale die Regel $A → ε$ hinzufügen \ No newline at end of file diff --git a/Writerside/topics/04/Theoretische Informatik/Hausaufgaben/ti_hausaufgabe9.md b/Writerside/topics/04/Theoretische Informatik/Hausaufgaben/ti_hausaufgabe9.md new file mode 100644 index 0000000..1a5ae4e --- /dev/null +++ b/Writerside/topics/04/Theoretische Informatik/Hausaufgaben/ti_hausaufgabe9.md @@ -0,0 +1,147 @@ +# Übungsblatt 9 +> Wenzel Schwan (1125033), Paul Kneidl (1125219), David Schirrmeister (1125746), Michelle Klein (1126422) + +## Aufgabe 1 +Geben Sie für die folgende Sprachen über dem Alphabet $\Sigma = \{ a, b, c \}$ eine kontextfreie Grammatik $G_1$ an, so dass $L(G_1) = L_1$ gilt: + +**$L_1 = \{ a^m b^c n \mid n, m \in \mathbb{N}, m < n + 1 \}$** + +``` +S → aXc +X → aXc | Xc | b +``` + +$L_2 = \{ a^m b^c n \mid n, m \in \mathbb{N}, m > n + 1 \}$ + +``` +S → aaaXc +X → aXc | aX | b +``` + +$L_3 = \{ a^m b^c n \mid n, m \in \mathbb{N}, m \neq n + 1 \}$ + +``` +S → aXc | aaaYc +X → aXc | Xc | b +Y → aYc | aY | b +``` + +## Aufgabe 2 + +### 2a) +Geben Sie eine kontextfreie Grammatik $G_{arithm}$ an, welche die Sprache der vollständig geklammerten arithmetischen Ausdrücke über dem Alphabet $\Sigma = \{ 0, 1, \dots, 9, +, -, \cdot, /, (, ) \}$ erzeugt. +Beispiel: $((23 - 42)/21) \in L(G_{arithm})$ + +``` +S → (SOS) | Z +O → + | - | * | / +Z → OZ | O +O → 0 | 1 | ... | 9 +``` + +### 2b) +Geben Sie eine kontextfreie Grammatik $G_{reg}$ an, welche die Sprache der vollständig geklammerten regulären Ausdrücke für reguläre Sprachen über dem Alphabet $\{ 0, 1, \dots, 9 \}$ erzeugt. + +``` +S → (S|S) | (S*S) | (S*) | O +O → OZ | Z +Z → 0 | 1 | ... | 9 +``` + +## Aufgabe 3 + +### 3a) +Gegeben sei die folgende kontextfreie Grammatik $G$ über dem Alphabet $\Sigma = \{ x, y, z \}$: + +``` +S → y S y | H +H → x H | x | H' +H' → H | z +``` + +Geben Sie eine CNF-Grammatik $G'$ an, so dass $L(G') = L(G)$ gilt. Geben Sie geeignete Zwischenschritte an und erläutern Sie Ihr Vorgehen. + +``` +G'(0): +S → S' +S' → yS'y | H +H → xH | x | H' +H' → H | z + +G'(1): +S → S' +S' → yS'y | H +H → xH | x | H' +H' → H | z + +G'(2): +S → yS'y | xH | x | z +S' → yS'y | xH | x |z +H → xH | x | z + +G'(3): +S → XS'' | XH | x | z +S'' → S'Y +S' → YS'' | XH | x | z +H → XH | x | z +Y → y +X → x +``` + + +### 3b) +Geben Sie für die Sprache $L = \{ v \cdot a^n b^n \mid v \in \{ a, b, c \}^\ast, n \in \mathbb{N} \}$ eine CNF-Grammatik $G$ an, so dass $L(G) = L$ gilt. + +$$S → VX | V_aX_1 | V_aV_b$$ +$$V → V_aV | V_bV | V_cV | a | b | c$$ +$$X → V_aX_1 | V_aV_b$$ +$$X_1 → XV_b$$ +$$V_a → a$$ +$$V_b → b$$ +$$V_c → c$$ + + + +## Aufgabe 4 + +Gegeben sei die folgende CNF-Grammatik $G$: + +``` +S → A B | N H | N E +A → N H | N E +B → E B | 1 +H → A E +N → 0 +E → 1 +``` + +### 4a) +Beschreiben Sie die Sprache $L(G)$ in formaler Mengenschreibweise. + +$$L(G) := \{0^n1^m|n,m ∈ N, n ≤ m\}$$ + +### 4b) +Leiten Sie fünf selbstgewählte Wörter $w \in \{ 0, 1 \}^\ast$ unterschiedlicher Länge mit Hilfe der Grammatik $G$ ab (Folge von 1-Schritt-Ableitungen). + +$$01: S → NE → 0E → 01$$ + +$$011: S → AB → NEB → 0EB → 01B → 011$$ + +$$00111: S → AB → NHB → NAEB → NNEEB → 0NEEB → 00EEB → 001EB → 0011B → 00111$$ + +$$0111: S→ AB→ NEB → 0EB → 01B → 01EB → 011B → 0111$$ + +$$001111: S → AB → NHB → NAEB → NNEEB → 0NEEB → 00EEB → 001EB → 001EEB → 0011EB → 00111B → 001111$$ + +### 4c) +Wie viele Ableitungsschritte wurden jeweils in 4b benötigt? Geben Sie möglichst exakt an, wie viele Ableitungsschritte (in Abhängigkeit von $n$) nötig sind, um ein Wort $w \in L(G)$ der Länge $n \in \mathbb{N}$ abzuleiten. + +2 → 3; 3 → 5; 5 → 9; 4 → 7; 6 → 11 + +→ $2n - 1$ + +### 4d) +Lässt sich Ihre Erkenntnis aus 4c auf andere CNF-Grammatiken übertragen? Begründen Sie Ihre Antwort. + +Ja, da die CNF eine binäre Struktur erzwingt, was stets zu $2n-1$ Ableitungsschritten führt. +→ Jede Regel ist entweder vom Typ `A→BC` oder `A→a`, was zu einem binären Baum führt. \ No newline at end of file