David Schirrmeister 7c4b1939bd update
2025-04-15 17:25:57 +02:00

2.6 KiB
Raw Blame History

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

  • 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
  • es handelt sich also um ein Entscheidungsproblem
  • wir geben typischerweise 1 aus, wenn s ∈ L und sonst 0