update
This commit is contained in:
@ -0,0 +1,93 @@
|
||||
# Hausaufgabe 1
|
||||
## Übung 1
|
||||

|
||||
### 1a
|
||||
i)
|
||||
- $s_1 = (xy)(xy)(xy)zzyxxxx ∈ Σ^*$
|
||||
- $s_2 = zzzzyyyx ∈ Σ^*$
|
||||
|
||||
ii)
|
||||
- $s_i = \{zy, zzxyy, zzzxxyyy\} ∈ Σ^*$
|
||||
|
||||
iii)
|
||||
- $s_{ij} = \{xxyzz, xxxyzzz, xxyzzzzz, xxxyzzzzzz\} ∈ Σ^*$
|
||||
|
||||
### 1b
|
||||
i)
|
||||
- Für eine Zeichenkette der Länge n gibt es genau n + 1 Präfixe, nämlich:
|
||||
- ε (die leere Zeichenkette)
|
||||
- s[0]
|
||||
- s[0..1]
|
||||
- s[0..2]
|
||||
- ...
|
||||
- s[0..n-1] (die vollständige Zeichenkette)
|
||||
- Da |s| = 10, ergibt das:
|
||||
- **Antwort: 11 Präfixe**
|
||||
|
||||
ii)
|
||||
- Für eine Zeichenkette der Länge n gibt es genau n − 1 solche Teilzeichenketten (man beginnt bei Index 0 bis n−2).
|
||||
- Hier gilt |s| = 10, also:
|
||||
- **Antwort: 9 Teilzeichenketten der Länge 2**
|
||||
|
||||
iii)
|
||||
- Ein Suffix ist jede Zeichenkette, die man erhält, wenn man von einem bestimmten Index i (inkl. i) bis zum Ende der Zeichenkette geht. Auch hier gilt: Die leere Zeichenkette (Suffix, das am Ende beginnt) zählt mit.
|
||||
- Also gibt es genau n + 1 Suffixe.
|
||||
- Antwort: n + 1 Suffixe
|
||||
|
||||
## Übung 2
|
||||

|
||||
### 2a
|
||||
i)
|
||||
- $L_1=\{uhu⋅x⋅vw | x ∈ Σ^*\}$
|
||||
|
||||
ii)
|
||||
- $L_2=\{xx⋅u⋅yzyz⋅v∣u,v∈Σ^*\}$
|
||||
|
||||
iii)
|
||||
- $L_3=\{w∈{0,1,2}^*∣\#_1(w)=2⋅(\#_0(w)+\#_2(w))\}$
|
||||
|
||||
|
||||
### 2b
|
||||
- Anforderungen Python:
|
||||
- Muss mit einem Buchstaben (a–z, A–Z) oder Unterstrich (_) beginnen
|
||||
- Danach: beliebig viele Buchstaben, Ziffern (0–9) oder Unterstriche
|
||||
- Keine Schlüsselwörter erlaubt, aber das ignorieren wir in dieser formalen Beschreibung
|
||||
- Alphabet Σ:
|
||||
- $Σ=\{a,…,z,A,…,Z,0,…,9,_\}$
|
||||
- Formale Sprache $L{PyVars}$:
|
||||
- $L{PyVars}=\{w∈Σ^*∣w=a_1a_2…a_n,a_1∈\{a-z,A-Z,\_\},a_i∈\{a-z,A-Z,0-9,\_\} für: {i=2…n}\}$ ⊆ $Σ^*$
|
||||
|
||||
|
||||
## Übung 3
|
||||

|
||||
### 3a
|
||||
- $Σ=\{<,>,/,d,i,v\}$
|
||||
- gültige Tags: `<div>`, `</div>`
|
||||
- Formale Sprache:
|
||||
- $L_{DivTagsNoAttr} = \{<div>, </div>\} ⊆ Σ^*$
|
||||
|
||||
### 3b
|
||||
- gültiger Beispieltag: `<div name1=wert1 name2=wert2>`
|
||||
- _Attribute sind durch Leerzeichen getrennt, die Werte nicht in Anführungszeichen_
|
||||
- Neues Alphabet: $Σ=\{<,>,/, \space,d,i,v,a,b,...,z\}$
|
||||
- Syntax für ein Attribut:
|
||||
- `name=wert`, wobei $name, wert ∈ \{a,...,z\}^+$
|
||||
- $attr ::= a^+=a^+$
|
||||
- Start-Tag mit beliebig vielen Attributen:
|
||||
- `div attr1 attr2 ... attrn>`
|
||||
- $<div(\textvisiblespace a^+=a^+)^*>$
|
||||
- End-Tag wie vorher
|
||||
- $</div>$
|
||||
- > $L_{DivTags}=\{\{<div>\}, \{<div(\textvisiblespace a^+=a^+)^*>\}, \{</div>\}\} ⊆ Σ^*$
|
||||
|
||||
$$
|
||||
L_{\text{DivTags}} =
|
||||
\left\{
|
||||
\begin{aligned}
|
||||
&\langle \text{div} \rangle, \\
|
||||
&\langle \text{div}(\textvisiblespace a^+ = a^+)^* \rangle, \\
|
||||
&\langle / \text{div} \rangle
|
||||
\end{aligned}
|
||||
\right\}
|
||||
\subseteq \Sigma^*
|
||||
$$
|
Reference in New Issue
Block a user