2.6 KiB
Grundlagen formaler Sprachen
Von einer Problembeschreibung zur Codierung
Erinnerung k-Clique
- Eingabe: Graph
V = (V, E)
undk ∈ Ν
- 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
- 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 Zeichenkettens_1
unds_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 ∈ Σ^*
unds_2 = cbbb ∈ Σ^*
- für
s = ababccbbb
gilts = s_1 * s_2 ∈ Σ^*
Präfixe, Suffixe und Teilzeichenketten
Sei s ∈
Σ^*
eine Zeichenkette über Σ.Suffix u von s:
∃s' in Σ^*
so dasss = s' * u
Präfix u von s:
∃s'' ∈ E^*
so dasss = u * s''
Teilzeichenkette u von s:
∃s',s'' ∈ E^*
so dasss = s' * u * s''
|s|
: Länge der Zeichenkette s\#_a(s)
: Häufigkeit des Zeichensa ∈ Σ
in Zeichenkettes ∈ Σ^*
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
?