PERSONAL - Einführung in die Theoretische Informatik

Grundlagen

Operationen auf Sprachen

Bonus: Beweisrezepte

Rechenregeln für Operationen auf Sprachen

Grammatiken

Chomsky-Hierarchie

Typ Grammatik Maschinen
Typ-0 Beliebige Grammatiken Turing-Maschinen (DTM, NTM, k-Band-DTM...)
Typ-1 Monotone Grammatiken Linear-Beschränkte Automaten (NTM mit beschr. Band)
Typ-2 Kontextfreie Grammatiken Kellerautomaten (PDA)
Typ-3 Rechtslineare Grammatiken Endliche Automaten (DFA, NFA, \epsilonϵ\epsilon-NFA...), RegEx

DFAs und NFAs

Reguläre Ausdrücke

Rechenregeln und Abschlusseigenschaften für RegEx

Pumping-Lemma (reg. Sprachen)

Entscheidungsverfahren

Minimierung eines DFAs, Äquivalenz von Wörtern

Wichtige (nicht-)reguläre Sprachen

Überblick: Konversionen

b94c52e2e986b2525b3db49e2379a7a3.png

Kontextfreie Sprachen, Grammatiken

Induktionsprinzip

Syntaxbäume

Chomsky-Normalform, Greibach-Normalform

Pumping-Lemma (CFL)

Konstruktion einer Chomsky-Normalform

  1. Für jedes Terminalzeichen aaa, das in einer rechten Seite der Länge \geq 22\geq 2 vorkommt
    1.1. Füge ein neues Nichtterminal A_aAaA_a hinzu
    1.2. Ersetze aaa in allen rechten Seiten der Länge \geq 22\geq 2 durch A_aAaA_a
    1.3. Füge A_a \to aAaaA_a \to a zu PPP hinzu
  2. Für jede Produktion der Form A \to B_1B_2...B_kAB1B2...BkA \to B_1B_2...B_k mit k \geq 3k3k \geq 3
    2.1. Ersetze durch A \to B_1C_2, C_2 \to B_2C_3, ... , C_{k-1} \to B_{k-1}B_kAB1C2,C2B2C3,...,Ck1Bk1BkA \to B_1C_2, C_2 \to B_2C_3, ... , C_{k-1} \to B_{k-1}B_k mit C_iCiC_i neue Nichtterminale
  3. Eliminiere alle \epsilonϵ\epsilon-Produktionen
  4. Eliminiere alle Kettenproduktionen

Abschlusseigenschaften für CFGs / CFLs

Algorithmen für CFGs

Wichtige CFLs und CFGs

Kellerautomaten

Überblick: Abschlusseigenschaften und Entscheidbarkeit

Abschlusseigenschaften

Schnitt \cap\cap Vereinigung \cup\cup Komplement \neg¬\neg Produkt \cdot\cdot Stern ^*^*
Regulär (T3) ✔️ ✔️ ✔️ ✔️ ✔️
DCFL (T2) ✔️
CFL (T2) ✔️ ✔️ ✔️
s-e. (T0) ✔️ ✔️ ✔️ ✔️

Entscheidbarkeit (DFA / NFA)

Wortproblem Leerheitsproblem Endlichkeitsproblem Äquivalenzproblem
DFA O(|w|+|M|)O(w+M)O(|w|+|M|) O(|Q||\Sigma|)O(QΣ)O(|Q||\Sigma|) ✔️ O(|Q_1||Q_2||\Sigma|)O(Q1Q2Σ)O(|Q_1||Q_2||\Sigma|)
NFA O(|Q|^2|w|+|N|)O(Q2w+N)O(|Q|^2|w|+|N|) O(|Q|^2|\Sigma|)O(Q2Σ)O(|Q|^2|\Sigma|) ✔️ O(2^{|Q_1|+|Q_2|})O(2Q1+Q2)O(2^{|Q_1|+|Q_2|})

Entscheidbarkeit (DFA / PDA / CFG)

Wortproblem Leerheit Äquivalenz Schnittproblem
DFA O(n)O(n)O(n) ✔️ ✔️ ✔️
DPDA O(n)O(n)O(n) ✔️ ✔️
CFG O(n^3)O(n3)O(n^3) ✔️

Berechenbarkeit, Entscheidbarkeit

(Über-)Abzählbarkeit

Turingmaschinen

WHILE- und GOTO-Programme

Entscheidbarkeit

Wichtige Unentscheidbare Probleme

Reduktionen

bool solve_L1(string w) {
  return solve_L2(f(w)); 
}

bool solve_L2(string w) {
  return ...;
}
bool solve_L1(string w) {
  return solve_L2(f(w)); 
}

bool solve_L2(string w) {
  return ...;
}

Semi-Entscheidbarkeit / Rekursive Aufzählbarkeit

Das Postsche Korrespondenzproblem

Überblick: Klassen von Funktionen

fe2d2d0cfcd6d777ac51479d6ec08355.png

Komplexitätstheorie

Komplexitätsklassen P und NP

50be4083c32e3d4155381594a8461c63.png

Wichtige Probleme in P

Polyzeitreduktion, NP-Vollständigkeit

Wichtige NP-vollständige Probleme

Aussagenlogik