Theoretische Grundlagen der Informatik – 14. Tutorium¶
- Tutorium 7
- Moritz Klammler
- Wintersemester 2014/15
- 10. Februar 2015
Organisatorisches¶
-
Ihr könnt das korrigierte letzte Übungsblatt vermutlich ab Freitag bei
den Übungsleitern im Büro abholen.
-
Schreibt mir ein E-Mail, wenn Ihr Eure Punkte wissen wollt.
Tagesthemen¶
- Informationstheorie
- Zusammenfassung & Wiederholung
- Klausur-Übungsaufgaben
- …
Quelle¶
Sei \Sigma ein Alphabet und
p eine Wahrscheinlichkeitsverteilung auf
\Sigma, also
\forall \sigma \in \Sigma: 0 \leq p(\sigma) \leq 1
und
\sum_{\sigma \in \Sigma} p(\sigma) = 1.
Eine gedächtnislose Quelle ist ein Gerät, das einen
(potentiell unendlichen) Strom von Zeichen aus
\Sigma erzeugt, wobei die unabhängige
Wahrscheinlichkeit dafür, dass als nächstes Zeichen
\sigma \in \Sigma produziert wird,
p(\sigma) ist.
Ist das eine gedächtnislose Quelle?¶
- Werfen einer fairen Münze.
- Werfen einer gezinkten Münze.
-
Ziehen eines „Lotto-Balls“. Wenn der Behälter leer ist, werden alle
Bälle wieder eingefüllt und von vorne begonnen.
- Die Konstante 4.
- Messen der aktuellen Temperatur.
-
Aufrufen der Funktion
rand
(aus der C-Standardbibliothek).
Ist das eine gedächtnislose Quelle?¶
-
Würfeln (mit einem fairen Würfel).
Ja.
- \Sigma = \{ 1, 2, 3, 4, 5, 6 \}
- p(1) = p(2) = p(3) = p(4) = p(5) = p(6) = \frac{1}{6}
-
Werfen einer gezinkten Münze.
Ja
- \Sigma = \{ Kopf, Zahl \}
-
p(Kopf) = \frac{1}{2} + \delta und
p(Zahl) = \frac{1}{2} - \delta für ein festes
\delta \in [-\frac{1}{2}, \frac{1}{2}]
-
Ziehen eines „Lotto-Balls“. Wenn der Behälter leer ist, werden alle
Bälle wieder eingefüllt und von vorne begonnen.
Nein
- \Sigma= \{1, ..., 49 \}
- Die Wahrscheinlichkeiten sind nicht unabhängig
-
Die Konstante 4.
Ja
-
Messen der aktuellen Temperatur.
Nein
-
\mathbb{R} ist kein Alphabet (der
Wertebereich eines
double
allerdings schon…)
-
Temperaturmesungen sind keine stochasisch unabhängigen Ereignisse
-
Aufrufen der Funktion rand
(aus der C-Standardbibliothek).
Unentschieden
- \Sigma = \{ 0, 1, ..., RAND\_MAX \}
- p ist „kompliziert“…
Information¶
Sei Q eine gedächtnislose Quelle, die eine Folge
von Zeichen aus einem Alphabet \Sigma ausgibt,
wobei die unabhängige Wahrscheinlichkeit dafür, dass ein Zeichen
\sigma \in \Sigma ausgegeben wird,
0 \leq p(\sigma) \leq 1 sei.
Die Information, die ein von Q
emittiertes Zeichen \sigma \in \Sigma trägt, ist
I_\sigma(Q) = -\log(p(\sigma)).
Sofern der Logarithmus zur Basis 2 verwendet wird, ist die Einheit der
Information Bit.
Entropie¶
Sei Q eine gedächtnislose Quelle, die eine Folge
von Zeichen aus einem Alphabet \Sigma ausgibt,
wobei die unabhängige Wahrscheinlichkeit dafür, dass ein Zeichen
\sigma \in \Sigma ausgegeben wird,
0\leq{}p(\sigma)\leq1 sei.
Die Entropie der Quelle ist
H(Q) = -\sum_{\sigma \in \Sigma} p(\sigma) \log(p(\sigma))
wobei die Konvention „0 \log(0) = 0“ gilt.
Die Entropie ist also der Erwartungswert der Information. Sofern der
Logarithmus zur Basis 2 verwendet wird, ist die Einheit der Entropie Bit.
Entropie¶
Sei Q eine gedächtnislose Quelle, die Zeichen aus
einen Alphabet \Sigma mit Wahrscheinlichkeit
p emittiert, und
|\Sigma| = n.
0 \leq H(Q) \leq \log(n)
-
H(Q) wird minimal für
p(\sigma) \to
\begin{cases}
1, \sigma = \sigma_0
0, sonst
\end{cases}
für ein \sigma_0\in\Sigma.
-
H(Q) wird maximal für
p(\sigma) \to \frac{1}{n} für alle
\sigma \in \Sigma
Hamming-Distanz¶
Sei \Sigma ein Alphabet und
x, y \in \Sigma^n für
n \in \mathbb{N}.
Die Hamming-Distanz zwischen
x und y ist definiert als
d(x, y) = \sum_{i = 1}^{n} (1-\delta(x_i, y_i))
wobei w_i \in \Sigma das
i-te Symbol in w für
w \in \Sigma^* bezeichne.
- d(w, w) = 0 \forall w \in \Sigma^*
- d("1", "1") = 0
- d("0", "1") = 1
- d("TGI", "GBI") = 2
- d("H2SO4", "H3PO4") = 2
- d("Alf", "red") = 3
Quellcodierung¶
Sei Q eine gedächtnislose Quelle, die Zeichen aus
einem Alpgabet \Sigma emittiert. Eine
Quellcodierung ist eine berechenbare bijektive
Funktion f_s: \Sigma^+ \to \Gamma^+ für ein
Alphabet \Gamma.
f_s(Q) ergibt eine neue Quelle, die den von
Q erzeugten Zeichenstrom codiert mit
f_s ausgibt.
Eine gute Quellcodierung komprimiert die Daten. Das wird erreicht, wenn
für möglichst alle w \in \Gamma^+ gilt, dass
w \in bild(f_s). Man ist daher bestrebt,
f_s so zu wählen, dass
\frac{H(f_s(Q))}{\log(|\Gamma|)}
maximal wird.
Kanalcodierung¶
Sei Q eine gedächtnislose Quelle, die Zeichen aus
einem Alpgabet \Sigma emittiert. Eine
Kanalcodierung ist eine berechenbare bijektive Funktion
f_c: \Sigma^+ \to \Gamma^+ für ein Alphabet
\Gamma.
f_c(Q) ergibt eine neue Quelle, die den von
Q erzeugten Zeichenstrom codiert mit
f_c ausgibt.
Eine gute Kanalcodierung spreizt den Code-Raum gleichmäßig (fügt Redundanz
ein). Man ist daher bestrebt, f_c so zu wählen,
dass
d_{min} = \min \{ d(w_1, w_2) : w_1, w_2 \in bild(f_c) \land w_1 \neq w_2 \}
maximal und gleichzeitig die Entropie nicht unnötig weit reduziert wird.
Kanaldecodierung¶
Seien \Sigma und \Gamma
Alphabete, n, m \in \mathbb{N} und
f_c: \Sigma^n \to \Gamma^m ein Kanalcode mit
\Image(f_c) = C \subseteq \Gamma^m und
Minimaldistanz d_{min}.
Sei c \in \Gamma^m ein empfangenes Wort.
-
Fall 1: c \in C: decodiere
c zu
f_c^{-1}(c) = w \in \Sigma^n
-
Fall 2: c \not \in C:
- Fehlererkennung
-
Breche Decodierung mit Fehler ab. Dieses Vorgehen erlaubt es,
Übertragungsfehler, die bis zu
d_min - 1 Zeichen „kippen“, zu erkennen.
- Fehlerkorrektur
-
Decodiere zu jenem w \in \Sigma^n, das
d(f_c(c), w) minimiert
(Maximum-Likelyhood Decoding). Dieses Vorgehen
erlaubt es, Übertragungsfehler, die bis zu
floor((d_min - 1) / 2) Zeichen „kippen“,
zu korrigieren.
Quell- und Kanalcodierung¶
Quellcodierung¶
- erhöht Entropie
- Setzt Wissen über die Quelle voraus
- Decodierung: idR einfach (LUTs, DFAs, …)
- Beispiele: UTF-8, Gzip, Huffman-Codes, …
Kanalcodierung¶
- erhöht Redundanz…
- …aber ohne zu viel Entropie zu opfern
- Setzt Wissen über den Kanal voraus
-
Decodierung (mit Fehlerkorrektur): iA
\mathcal{NP}-schwer (Maximum-Likelyhood)
- Beispiele: Vervielfachung, Hamming-Codes, …
Wie zeigen wir, dass eine Sprache L regulär ist?¶
-
Endlichen Automaten (Akzeptor) \mathcal{A}
angeben, sodass L(\mathcal{A}) = L
-
Regulären Ausdruck für L angeben
-
Rechtslineare Grammatik G angeben, sodass L(G) = L
-
Definitiv nicht: Mittels Pumping-Lemma
Wie zeigen wir, dass eine Sprache L nicht regulär ist?¶
-
Annehmen, dass L regulär ist, und mittels
Pumping-Lemma für reguläre Sprachen zum Widerspruch führen
Wie zeigen wir, dass ein(e) X mit X \in \{ endlicher Automat, Kellerautomat, Turingmaschine \} [nicht] deterministisch ist?¶
- Nachschauen, ob es Zustandsübergänge mit Entscheidungsspielraum gibt
Wie zeigen wir, dass ein endlicher Automat \mathcal{A} = (Q, \Sigma, q_0, F)} [nicht] minimal ist?¶
-
Minimierungsverfahren anwenden, um Äquivalenzklassenautomat
\mathcal{A}' = (Q', \Sigma, q_0', F') zu
erhalten, und prüfen, ob |Q'| < |Q|
Wie zeigen wir, dass eine Sprache L kontextfrei ist?¶
-
PDA \mathcal{K} angeben, sodass
L(\mathcal{K}) = L
-
Kontextfreie Grammatik G angeben, sodass
L(G) = L
-
Definitiv nicht: Mittels Pumping-Lemma
Wie zeigen wir, dass eine Sprache L nicht kontextfrei ist?¶
-
Annehmen, dass L kontextfrei ist, und mittels
Pumping-Lemma für kontextfreie Sprachen zum Widerspruch führen
-
Falls das nicht funktioniert, Ogdens Lemma versuchen
Wie zeigen wir, dass eine Grammatik G = (T, V, S, P) ein Wort w \in T^* erzeugen kann?¶
-
Explizite Ableitung S \Rightarrow^* w angeben
-
Für allgemeines w mittels Induktionsbeweis
-
Für kontextfreie Grammatik: CYK-Algorithmus
(ggf G zunächst in CNF überführen)
Wie zeigen wir, dass eine Sprache L entscheidbar ist?¶
-
Turingmaschine (bzw Algorithmus) angeben, die L
entscheidet (akzeptiert und immer hält)
-
Eher nicht: Reduktion (muss nicht poly-many-one sein)
auf bekanntermaßen entscheidbare Sprache L'
angeben: L \leq L' (vermutlich unnötig
kompliziert)
Wie zeigen wir, dass eine Sprache L semi-entscheidbar ist?¶
-
TM angeben, die L erkennt (akzeptiert und für
jedes Wort aus L hält)
-
Eher nicht: Grammatik G
angeben, sodass L(G)=L (vermutlich unnötig
kompliziert)
-
Eher nicht: Reduktion (muss nicht poly-many-one sein)
auf bekanntermaßen semi-entscheidbare Sprache L'
(zB HALT) angeben: L\leq{}L' (vermutlich
unnötig kompliziert)
Wie zeigen wir, dass eine Sprache L nicht entscheidbar (unentscheidbar) ist?¶
-
Annehmen, dass L entscheidbar ist
(\Rightarrow Entscheider und Enumerator
existieren) und zum Widerspruch führen
-
Zeigen, dass ein Entscheider für L eine
bekanntermaßen unentscheidbare Sprache (zB HALT) entscheiden könnte
-
Falls bereits bekannt ist, dass L^C nicht
entscheidbar ist, kann L auch nicht entscheidbar
sein
-
Definitiv nicht: Entscheider für L
angeben, der nicht funktioniert
Wie zeigen wir, dass eine Sprache L nicht semi-entscheidbar ist?¶
-
Annehmen, dass L semi-entscheidbar ist
(\Rightarrow Akzeptor und Enumerator existieren)
und zum Widerspruch führen
-
Zeigen, dass ein Akzeptor für L eine
bekanntermaßen nicht semi-entscheidbar Sprache
(zB L_d) erkennen könnte
-
Falls bereits bekannt ist, dass L nicht
entscheidbar und L^C semi-entscheidbar ist, kann
L nicht semi-entscheidbar sein (sonst wäre
L entscheidbar)
-
Definitiv nicht: Akzeptor für L angeben,
der nicht funktioniert
Wie zeigen wir, dass eine Sprache \mbox{L\in\mathcal{P}} ist?¶
-
Deterministische Turingmaschine (bzw Algorithmus) angeben, die
L in Polynomialzeit entscheidet
-
Eher nicht: Poly-many-one Reduktion auf Sprache
L'\in\mathcal{P} angeben, also zeigen dass
L\leq_\text{p}L' (vermutlich unnötig
kompliziert)
-
Eher nicht: Kontextfreie (bzw reguläre) Grammatik
G angeben, sodass
L(G) = L (vermutlich unnötig kompliziert, es sei
denn für triviales L)
Wie zeigen wir, dass unter der Annahme, dass \mathcal{P} \neq \mathcal{NP}}, eine Sprache L \not\in \mathcal{P}} ist?¶
-
Zeigen, dass L\in\mathcal{NPC}
(bzw \mathcal{NP}-hart)
Wie zeigen wir, dass eine Sprache L \in \mathcal{NP}} ist?¶
-
Deterministische Turingmaschine (bzw Algorithmus) angeben, die
einen Zeugen für L in Polynomialzeit verifiziert
(Verifizierer).
Keine Prüfung vergessen (auch nicht die trivialen)!
-
Nichtdeterministische Turingmaschine angeben, die
L in Polynomialzeit entscheidet (Entscheider).
-
Eher nicht: Deterministische Turingmaschine (bzw
Algorithmus) angeben, die L in Polynomialzeit
entscheidet.
Nicht falsch, aber iA nur möglich, falls nebenbei auch
\mathcal{P} = \mathcal{NP} bewiesen wird, was
nicht realistisch ist. In jedem Fall unnötig kompliziert.
-
Eher nicht: Poly-many-one Reduktion auf Sprache
L' \in \mathcal{NP} angeben, also zeigen dass
L \leq_p L' (vermutlich unnötig kompliziert)
Wie zeigen wir, dass eine Sprache L \in \mathcal{NPC} ist?¶
-
- Zeigen, dass L \in \mathcal{NP}
- Reduktion L \geq_p \cdots \geq_p SAT
Wie zeigen wir, dass es unter der Annahme, dass \mathcal{P} \neq \mathcal{NP}, für ein Problem \Pi keinen \epsilon-approximativen Algorithmus mit polynomieller Laufzeit geben kann?¶
-
Zeigen, dass ein solcher Algorithmus verwendet werden könnte, um ein
L \in \mathcal{NPC} in Polynomialzeit zu
entscheiden. Häufig bietet es sich an, die Entscheidungssprache zu
verwenden, durch deren Reduktion bereits gezeigt wurde, dass die
Entscheidungssprache zu \Pi
\mathcal{NP}-vollständig ist.
Das funktioniert natürlich analog auch für
\alpha-Approximierbarkeit (mit gegebenem festem
\alpha \in \mathbb{R}^+) und für absolute
Gütegarantien. Siehe die Beispiele, die wir im Laufe des Semesters zu
BinPacking, TSP und Clique betrachtet haben.
Wie zeigen wir, dass eine Sprachklasse \mathcal{L} abgeschlossen ist unter einer Verknüpfung \circ?¶
Wie zeigen wir, dass eine Sprachklasse \mathcal{L} nicht abgeschlossen ist unter einer Verknüpfung \circ¶
Wie zeigen wir, dass \exists x \in M: p(x) für eine Menge M und ein unäres Prädikat p? (Quintessenz)¶
-
Ein Beispiel für ein solches x angeben
(konstruktiver Beweis)
-
Eher nicht: irgendwie anders
Wie zeigen wir, dass \forall x \in M: p(x) für eine Menge M und ein unäres Prädikat p? (Quintessenz)¶
-
Annehmen, \exists x \in M: \lnot p(x) und zum
Widerspruch führen (Widerspruchsbeweis).
-
Falls M abzählbar und
< eine totale Ordnung auf
M ist:
Zeige p(x_0) für ein
x_0 \in M und alle
\{ x' \in M: x' < x_0 \} sowie, dass für alle
x_1, x_2 \in M mit
x_0 \leq x_1 \leq x_2 gilt:
p(x_1) \Rightarrow p(x_2) (Induktionsbweis).
-
Zeigen, dass M = \emptyset (eher ein schlechter
Witz)
-
Definitiv nicht: Ein Beispiel für ein solches
x angeben