update
This commit is contained in:
@ -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)$.
|
||||
|
||||

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

|
||||
|
||||
## 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
|
Reference in New Issue
Block a user