JavaScript promise rejection: Loading CSS chunk katex failed. (error: https://git.gaminggeneration.de/assets/css/katex.faca27c4.css). Open browser console to see more details. (45)
Files
.idea
Writerside
cfg
images
topics
02
04
Datenbanken
HCI
Informatik und Gesellschaft
Projektmanagement
Rechnernetze
Software Engineering
Theoretische Informatik
Hausaufgaben
Übungen
01Einleitung.md
02_GrundlagenFormaleSprachen.md
03_GrundlagenEndlicherAutomaten.md
04_GrenzenGroesseEA.md
05_GrundlagenGrammatiken.md
06
pdf
StartPage.md
c.list
in.tree
v.list
writerside.cfg
.gitlab-ci.yml
README.md
zusammenfassungen/Writerside/topics/04/Theoretische Informatik/02_GrundlagenFormaleSprachen.md
David Schirrmeister 289623ea5a update
2025-04-15 18:44:27 +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 Teilzeichenketten 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