David Schirrmeister 33a7fe4bb0 update
2025-04-20 22:23:52 +02:00

2.6 KiB
Raw Blame History

Hausaufgabe 1

Übung 1

image_681.png

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 n2).
  • 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

image_682.png

2a

i)

  • L_1=\{uhu⋅x⋅vw | x ∈ Σ^*\}

ii)

  • L_2=\{xx⋅u⋅yzyz⋅vu,v∈Σ^*\}

iii)

  • L_3=\{w∈{0,1,2}^*\#_1(w)=2⋅(\#_0(w)+\#_2(w))\}

2b

  • Anforderungen Python:
    • Muss mit einem Buchstaben (az, AZ) oder Unterstrich (_) beginnen
    • Danach: beliebig viele Buchstaben, Ziffern (09) 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

image_683.png

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^*