This commit is contained in:
David Schirrmeister
2025-07-08 10:21:11 +02:00
parent f0e36f41da
commit 3ba9cf09b5
7 changed files with 308 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 913 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -145,6 +145,8 @@
<toc-element topic="ti_hausaufgabe6.md"/>
<toc-element topic="ti_hausaufgabe7.md"/>
<toc-element topic="ti_hausaufgabe8.md"/>
<toc-element topic="ti_hausaufgabe9.md"/>
<toc-element topic="ti_hausaufgabe10.md"/>
</toc-element>
<toc-element topic="01Einleitung.md"/>
@ -153,6 +155,7 @@
<toc-element topic="04_GrenzenGroesseEA.md"/>
<toc-element topic="05_GrundlagenGrammatiken.md"/>
<toc-element topic="06_ReguläreSprachen.md"/>
<toc-element topic="07_kontextfreieSprachen.md"/>
</toc-element>

View File

@ -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]
- $[1-4]$: [1234]
> Sprachen sind von einem regulären Ausdruck beschreibbar, wenn Nerode-Index endlich ist

View File

@ -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$
-
-

View File

@ -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

View File

@ -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.