Beispiel 3: Average vs. Worst Case Fallbeispiel: Sortieralgorithmen B rekonstruiert π aus den Ergebnissen der Schlüsselvergleiche von A. Wenn also A v Vergleiche braucht um π zu sortieren, so wird B mit v bits Input den Output π produzieren. Sei A ein beliebiges vergleichsbasiertes Sortierprogramm. Wir wählen eine Permutation π von {1, . . . , n} die unkomprimierbar ist; und zwar auch relativ zu A und zu folgendem Programm B: Unter sehr allgemeinen Bedingungen gilt: Wird eine untere Schranke (z.B. für die Zeit-, oder Platzkompl. eines Algorithmus’) mit Hilfe eines “Inkompressibilitäts-Arguments” gezeigt (vgl. Beispiele 1 und 2!) so gilt diese Schranke nicht nur im ungünstigsten Fall, sondern auch im Durchschnitt (bei gleichverteilten Inputs) v ≥ C(π|A, B) ≥ log(n!) Es gilt: v ≥ log(n!) = n log n − O(n) 4 • für jedes (berechenbare) µ gilt: ∀x : M(x) ≥ cµ(x), wobei die Konstante c nur von µ abhängt P • n≥1 Sn ist durch eine Konstante beschränkt, wobei n = l(x) und Sn ist das Quadrat des zu erwartenden Fehlers der Abschätzung der Wahrscheinlichkeit von x gemäss µ durch M. Zentrale Eigenschaften von M: wobei K die “selbstbeschränkende” Kolmogorov-Komplexität von x bezeichnet. M(x) = 2−K(x) Die “universelle Verteilung” M ist, cum grano salis, definiert als: Annahme: µ ist berechenbar (keine wesentliche Einschränkung) 2 und zwar — auf Grund der Überlegungen von vorhin — nicht nur im schlechtesten Fall, sondern auch im Durchschnitt! Daher: Grund: Die “meisten” Strings sind (fast) unkomprimierbar! 1 Genauer: Wir werden u.a. zeigen, dass der Anteil der Strings der Länge n die mit weniger als n − c bits dargerstellt werden können maximal 21c beträgt. Wichtig: Das gilt auch für die relative Kolmogorov-Komplexität: C(x|y) ≈ Länge des kleinsten Programm, das x bei Input y ausgibt. Beispiel 4: Vorhersage Ein zentrales Problem der AI (und anderer Gebiete) ist das der (beweisbar optimalen) Vorhersage (Induktives Schliessen) Die Essenz des Problems (vereinfacht, abstrakt): • Errate jeweils folgende Bits einer unendlichen Bit-Kette auf Grund der Kenntnis der bisherigen (endlichen) Bit-Folge. µ(x0) µ(x) Sei µ die zu Grunde liegende Wahrscheinlichkeitsverteilung. Die Wahrscheinlichkeit, dass 0 auf das Initialsegment x folgt ist µ(0|x) = Dabei ist µ unbekannt und soll geeignet abgeschätzt werden! 3 Zur Definition von C: Ganz allgemein: Sei S irgendeine Kollektion von Objekten und n : S 7→ N eine beliebige (fixierte) Abbildung der Objekte als Zahlen bzw. Binärstrings. Relativ zu einer beliebigen Funktion f (Beschreibungsmethode) definieren wir: Cf (o) = min{l(p) : f (p) = n(o)} dabei ist l(p) die Bit-Länge des Strings (Zahl) p Erst wenn man verlangt, dass f berechenbar (partiell rekursiv) ist erhält man eine nützliche Definition. Diese “Einschränkung” ist aber noch nicht hinreichend. 5 Zentrales “Fundament” der Theorie der Kolmogorov-Kompl. ist das Faktum, dass universelle Beschreibungsmethoden exisitieren! Für ein präzise formuliertes Theorem, das diesem Faktum entspricht, siehe Lemma 2.1.1, Seite 96. 7 Beschreibungsmethode f minorisiert Beschreibungsmethode g gdw: ∃c : ∀x : Cf (x) ≤ Cg (x) + c Beobachtung: zu jedem endlichen Satz von Beschreibungsmethoden f1 , . . . fn kann man ein f definieren, das alle fi minorisiert. f und g heissen äquivalent wenn sie sich einander minorisieren. Ab nun setzen wir voraus: Beschreibungsmethoden sind berechenbar (programmierbar). f heisst universell (auch: additiv opimal) g.d.w. für alle berechenbaren g eine Konstante cf,g existiert, sodass: ∀x : Cf (x) ≤ Cg (x) + cf,g (Lässt sich leicht auf mehrstellige Funktionen erweitern.) Beobachtung: Alle universellen Beschreibungsmethoden sind (paarweise) äquivalent! 6 Exkurs: selbstbeschränkende Codes (Prefix Die Konkatenation von Strings kann Information zerstören! 1x 0 Ei−1 (l(x))x für i > 0 für i = 0 Beispiel: Um aus xy =01101011110011011010011011110 eine Darstellung jeweils von von x =0110101111001101 und y =1010011011110 zu gewinnen, benötigen wir Information zur “richtigen Trennung” von xy. Z.B. in Form l(x) (= 16 = 0001) Dazu definieren wir: Ei (x) = Zur Erinnerung: l(x) ist die (Bit-)Länge von x [l(x) ≈ log(x)] Wir schreiben x für E1 (x) = 1l(x) 0x Es gilt: x = 2l(x) + 1 8 Eine konkrete universelle Maschine Sei T0 , T1 , T2 , . . . eine effektive Aufzählung aller Turingmaschinen und φ0 , φ1 , φ2 , . . . die entsprechenden berechneten (daher partiell rekursiven) Funktionen. (Typ: N 7→ N.) Universelle Turingmaschine U : U erwartet Inputs der Form mal hn, pi = 11 . . . 1} 0 np [= np] | {z l(n) dabei ist hn, pi als der (selbst-beschränkende!) Code der Turingmaschine Nummer n, zusammen mit dem Input p (für Tn ) zu verstehen. 9 Relative Kolmogorov-Komplexität Für alle natürlichen Zahlen x, y, p und jede (partielle) berechenenbare Funktion φ sei die Kolmogorov-Komplexität von x relativ zu y, bzgl. der Beschreibungsmethode φ, wie folgt definiert: Cφ (x|y) = min{l(p) : φ(hy, pi) = x} Wir verstehen p als ein Programm, das aus Input y eine Beschreibung von x herstellt. Wir schreiben Cφ (x|y) = ∞ falls kein solches Programm (bzgl. φ) exisitiert. Wichtig: Wenn wir den Index der Beschreibungsmethode unterdrücken so meinen wir φ = φ0 für T0 = U , wie oben beschrieben. Ausserdem: C(x) = C(x|). 11 [auch: U (0p) = U (p)] Interpretation: U simuliert Maschine Tn auf Input p. Wir vereinbaren U = T0 . Daher gilt: φ0 (hn, pi) = φn (p) Wir erhalten für die entsprechende Kolmogorov-Komplexität: ∀n : ∀x : Cφ0 (x) ≤ Cφn (x) + cφn wobei cφn = 2l(n) + 1. 10 Durch Verwendung einer (berechenbaren) Paarungsfunktion h·i : N × N 7→ N lässt sich dies leicht auf relative Kolmogorov-Komplexität erweitern. (Z.B. der oben definierten, besser jedoch einer bijektiven!) Invarianztheorem Theorem: Es exisitiert eine universelle, berechenbare (d.h. partiell rekursive) Funktion φ0 . Genauer: für alle berechenbaren φ gilt ∀x: ∀y : Cφ0 (x|y) ≤ Cφ (x|y) + cφ wobei cφ nur von φ aber nicht von x oder y abhängt. 12 “Zwei-Komponenten”-Beschreibung C(x) = min{l(T ) + l(p) : T (p) = x} ± 1 + O(1) Gemäß unserer “Referenzmaschine” U bestehen Beschreibungen von x aus 2 Teilen: einem selbeschränkend codiertem Turingmaschinenprogramm Tn und einem Input p für Tn . Alternative Terminologie: Tn ist die “Maschine” und p sein “Programm” dafür. Wegen U (0p) = U (p) gilt jedenfalls: bzw. C(x) = min{l(T ) + C(x|T ) : T ∈ {T0 , T1 , . . .}} T kann man dabei als die kompakte Beschreibung der allgemeinen Struktur von x verstehen (Regularität); p bzw. C(x|T ) als die “individuelle Irregularität” von x. Beispiel: x = 1000 mal ‘10011’ 13 C(x|y) ≤ C(x) + c Aus dem Beweis des Invarianztheorems folgt auch: ∃c: ∀x: ∀y: C(x) ≤ l(x) + c und Weiters folgen einfache Eigenschaften von C(·): • C(xx) ≤ C(x) + O(1) • C(x|x) = O(1) • |C(x) − C(xR )| = O(1), C(xR |x) = O(1) 14