This commit is contained in:
David Schirrmeister 2025-04-15 17:25:57 +02:00
parent 8c1179ad2e
commit 7c4b1939bd
4 changed files with 87 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View File

@ -100,6 +100,7 @@
</toc-element> </toc-element>
<toc-element toc-title="Theoretische Informatik"> <toc-element toc-title="Theoretische Informatik">
<toc-element topic="01Einleitung.md"/> <toc-element topic="01Einleitung.md"/>
<toc-element topic="02_GrundlagenFormaleSprachen.md"/>
</toc-element> </toc-element>
</toc-element> </toc-element>

View File

@ -0,0 +1,86 @@
# Grundlagen formaler Sprachen
## Von einer Problembeschreibung zur Codierung
**Erinnerung k-Clique**
- Eingabe: Graph $V = (V, E)$ und $k ∈ Ν$
- Ausgabe: Gibt es eine Clique C der Größe k in G
> Wie erhält ein Algorithms diese Eingabe (Graph)
>
> Wie teilt der Algorithmus die Ausgabe (Ja/Nein) mit?
### Beispiel: Codierung eines gerichteten Graphen
- Graph sei über Adjazenzlisten gegeben
- Wir Codieren den Graphen als Bitstring
**Mögliche Codierung eines Graphen**
![image_678.png](image_678.png)
- andere Codierungen oder auch anderes Alphabet denkbar
- geht auch für gerichtete Graphen (z.B. für k-Clique)
## Grundbegriffe
### Alphabete und Zeichenketten
> Alphabet Σ: endliche Menge von Zeichen
>
> Zeichenkette s über Alphabet Σ: endliche Zeichenfolge aus Σ
- die leere Zeichenkette bezeichnen wir als ε
- $s_1 * s_2$ ist die **Konkatenation** (_Verkettung_) zweier Zeichenketten $s_1$ und $s_2$
- $Σ^*$: Menge aller (auch leerer) Zeichenketten über Σ
- $Σ^+$: Menge aller nicht-leerer Zeichenketten über Σ
#### Beispiel Alphabete und Zeichenketten
Sei $Σ=\{a,b,c\}$
- Alle Zeichenketten der Länge 2 über Σ:
- {$aa$, $ab$, $ac$, $ba$, $bb$, $bc$, $ca$, $cb$, $cc$}
- $s_1 = ababc ∈ Σ^*$ und $s_2 = cbbb ∈ Σ^*$
- für $s = ababccbbb$ gilt $s = s_1 * s_2 ∈ Σ^*$
### Präfixe, Suffixe und Teilzeichenketten
> Sei s ∈ $Σ^*$ eine Zeichenkette über Σ.
>
>
> Suffix u von s: $∃s' in Σ^*$ so dass $s = s' * u$
>
> Präfix u von s: $∃s'' ∈ E^*$ so dass $s = u * s''$
>
> Teilzeichenkette u von s: $∃s',s'' ∈ E^*$ so dass $s = s' * u * s''$
- $|s|$: Länge der Zeichenkette s
- $\#_a(s)$: Häufigkeit des Zeichens $a ∈ Σ$ in Zeichenkette $s ∈ Σ^*$
#### Beispiel Präfixe, Suffixe und Teilzeichenketten
Sei $Σ = \{0,1\}$ und $s = 101011110$.
- Wieviele Präfixe hat s?
- 8
- Wie viele Zeilzeichenketten der Länge 3 hat s?
- 3?
- **kompaktere Notation**: $s:s = 101011110 = (10)^21^40$
## Sprachen und das Wortproblem
> im Folgenden sei immer Σ das zugrunde liegende Alphabet
**Definition**:
> formale Sprache L über Σ: eine Teilmenge von $Σ^*$
>
> Wort w aus L: ein Element $w ∈ L$
- L kann unendliche ($|l| = ∞$) oder endliche ($|L| = k ∈ Ν$) sein
**Beispiel**
- Σ = {0,1,...,9}
- Beschreibe die Worte aus $L=\{007*s | s ∈ Σ^*\}$.
- $(007)^1\{0,1,...,9\}^*$ **?**
- Wie viele Wörter enthält $L=\{s ∈ \{0,1,2\}^* | |s| ≤ 5\}$?
- $ \sum_{n=0}^{5} 5^n$ **?**
### Algorithmisches Problem für formale Sprachen
- L sei eine beliebige Sprache über Σ
- ![image_679.png](image_679.png)
- es handelt sich also um ein Entscheidungsproblem
- wir geben typischerweise $1$ aus, wenn $s ∈ L$ und sonst $0$