Kolmogorov-Komplexität

Werbung
Kolmogorov-Komplexität
1. Einführung
Kolmogorov-Komplexität ist die Theorie, welche von der Quantität der Informationen
individueller Objekte handelt. Die Informationen sind durch dessen Beschreibung gegeben, was
als Komprimierung angesehen werden kann. Deshalb gibt es drei verschiedene
Anwendungsgebiete:
a. stark komprimierbare Wörter
b. nicht komprimierbare Wörter
c. Wörter, die komprimierbar sind, was aber mit großer Anstrengung verbunden ist
Nicht komprimierbare Wörter werden in der Kolmogorov-Komplexität auch als zufällige
Wörter bezeichnet. Es darf aber nicht mit dem umgangssprachlichen Zufall verwechselt werden.
π zum Beispiel ist zufällig, aber durch eine kurzes Programm beschreibbar und daher stark
komprimierbar.
Zufallsdefinition von „von Mises“ für unendl. Strings x:
a) limn->∞fn/n = p (fn ist die Anzahl der 1’en bis zur Stelle n in x)
b) a) soll auch mit demselben p für jede unendliche Teilfolge an1an2... gelten, welche
durch eine „zulässige“ partielle Funktion ø berechnet wurde.
Das Problem liegt aber an der Definition des „zulässigen“ ø.
Ein Beispiel einer zufälligen Zahl, die aber nach der obigen Definition nicht zufällig ist, ist
Champernownes’ Zahl 0.123456789101112131415.... Denn es ist leicht, ein ø anzugeben, was
aus dem Index i die i-te Stelle berechnet.
Darum versuchten Laplace und Kolmogorov einen anderen Ansatz, indem sie Zufälligkeit mit
Mangel an Regelmäßigkeit interpretierten.
Die 3 wichtigsten Personen des Themas sind:
• R.J. Solomonoff, Cambridge, USA
• A.N. Kolmogorov, Moskau, Sowjetunion
• G.J. Chaitin, New York, USA
2. mathematische Theorie
Wir interpretieren Integer als binäre Strings unter folgender Bijektion:
(0ε), (10), (21), (300), (401), (510), (611), (7000), ...
|x| sei die Länge des binären Strings (oder Integer) x, also z.B. |7| = |000| = 3
Komplexität eines Objektes x:
Sei S eine berechenbare Funktion, p natürliche Zahl und n(x) die Stelle von x in der sortierten
Liste aller Strings. Dann:
KS(x) := min{|p| : S(p) = n(x)}
Man kann KS(x) auch als Länge des minimalen Programms p zur Erzeugung von x unter der von
einer Turing-Maschine realisierten Funktion S verstehen.
Die Frage ist natürlich, welches S man nimmt, um ein möglichst optimales Ergebnis zu erhalten.
Würde keine untere Schranke KS existieren, hätte die Definition wenig Sinn. Jedoch existiert
nach Turing ein optimales S, so dass für alle S’ und x gilt:
KS(x) ≤ KS’(x) + cS,S’
Demnach reicht es K(x) zu schreiben, da asymptotisch betrachtet die Komplexität für alle S
gleich ist.
Komplexität von x gegeben y:
Kf(x|y) = min{|p| : p aus {0,1}* & f(p,y)=x},
1
wobei p Programm, y String, f Interpreter(TM Mf) und f(p, y)=x die Berechnung der Eingabe
p,y mit Ausgabe x auf Mf ist.
Invarianztheorem:
Es existiert eine partiell, rekursive Funktion f, so dass für alle f’, x, y gilt:
Kf(x|y) ≤ Kf’(x|y) + cf’
Bsp: K(xx) ≤ K(x) + O(1)
2.1 Unkomprimierbarkeit
Aus dem Invarianztheorem folgt für alle x eine Konstante c existiert, so dass:
K(x) ≤ |x| + c
Denn wähle einfach die Turing-Maschine, die die Eingabe einfach als Ausgabe nimmt.
Doch es gibt 2n binäre Strings der Länge n, aber nur 2n-1 binäre Beschreibungen der Länge
kleiner als n. Demnach müssen Strings x mit K(x)≥|x| existieren. x mit dieser Eigenschaft
heißen unkomprimierbar.
Bsp: Sei p(x) die kürzeste Beschreibung von x. Dann ist p unkomprimierbar, also
K(p(x)) ≥ |p(x)| - c, für alle Strings x, ein c>0.
Bsp: Teilstrings eines unkomprimierbaren Strings können komprimierbar sein.
Die meisten Strings sind aber kaum komprimierbar. Denn mit |x|=n folgt, dass es für i=1,2,...
nur 2n-i+1-1 binäre Beschreibungen der Länge kleinergleich (n-i) existieren. Also sind höchstens
(2n-i+1-1)/2n der Strings auf eine Länger kleinergleich (n-i) komprimierbar.
Für i=3 ergibt sich beispielsweise, dass 3/4 der Strings eine Beschreibung größer als (n-2)
haben.
Unendliche Strings heißen O(log n) unkomprimierbar oder zufällig, wenn für alle n:
K(x1:n) ≥ n – O(log n) gilt.
2.2 Selbstabgrenzende Beschreibung
Die selbstabgrenzende Beschreibung eins String x aus {0,1}* sei x’, die wie folgt aussieht:
Zuerst schreibt man die Länge von x binär (nach der bekannten Interpretation von Strings als
Integer), stopft hinter jedes Bit eine 0, außer nach dem letzten Bit eine 1 und schreibt danach x
selbst binär.
Die Länge von x’ ist ungefähr log n + 2*log log n, wobei n die Länge von x ist.
Die selbstabgrenzende Beschreibung hat den Vorteil, dass a) von 2 beliebigen Beschreibungen
keine ein Präfix der anderen ist und b), dass die Länge in der Beschreibung enthalten und somit
implizit auch das Ende der selbigen bekannt ist.
2.3 Quantitative Schätzung von K
Kolmogorov: Sei A eine rekursiv aufzählbare Menge von Paaren (x,y), My={x : (x,y) in A}.
Dann gilt:
K(x|y)≤|d(My)|
Def: Sei A Teilmenge von {0,1}* und A≤n := {x aus A : |x| ≤ n}. Dann heißt A spärlich, falls:
limn->∞|A≤n|/2n = 0.
Satz: Spärliche Mengen A, die rekursiv sind, haben endlich viele unkomprimierbare Strings.
2
Satz: Betrachte x als Integer nach der bekannten Bijektion. Dann gilt:
a. |K(x+h) – K(x)| ≤ 2|h|
b. Die Anzahl der x mit K(x)<|x|-m übersteigt nicht 2-m
c. Limx->∞K(x) = ∞
Bsp: K(x|n)≤K(x), wenn |x|=n. Meistens enthält aber die Länge von x kaum Informationen über
x selbst. Also gilt K(x|n)=K(x)-c.
Anders bei x=0n. Hier ist K(x) = K(n)+O(1), aber K(x|n) = O(1).
2.4 Unendlich zufällige Strings
Zu der bekannten Definition von „zufällig“, K(x1:n)≥n-c, gilt:
Satz (Löv): Sei f(n) eine berechenbare Funktion mit ∑n 2-f(n)=∞. Dann existieren unendlich viele
n mit K(x1:n)<n-f(n).
Bem: Gilt allerdings ∑n2-f(n) konvergiert, dann sind fast alle x mit |x|>n0 zufällig.
2.5 Algorithmische Eigenschaften von K
K sei wieder eine Funktion von Integer nach Integer. Dann gilt:
Satz:
a. Die Funktion K(x) ist nicht partial rekursiv
b. Es existiert H(t,x), monoton fallend in t, mit limt->∞H(t,x) = K(x)
Satz: Für jede binäre Sequenz x=x1x2..., für die die Menge M={n : xn=1} rekursiv aufzählbar ist,
gilt K(x1:n | n) ≤ log n + cM.
Bzardin: Setzt man zusätzliche Vorraussetzungen an die Berechnung, zum Beispiel, dass sie in
bestimmter Zeit t berechnet werden soll, so steigt K(x) stark an.
2.6 A Priori Wahrscheinlichkeit: Die Solomonoff-Levin-Distribution
m(x) := ∑U(p)=X2-|p|,
also die Wahrscheinlichkeit, dass ein zufällig generiertes Programm p als Eingabe für die
universelle Turing-Maschine x erzeugt.
Man kann zeigen, dass m(x)=2-K(x)±O(1)
3. Komprimierungsanwendungen
3.1 Eine Version von Gödels Theorem
Obwohl fast alle Zahlen zufällig sind, können nur endlich viele als solches bewiesen werden.
Denn Beschreibungen sind endlich und eine Beschreibung ≤k Bits kann keine Zahl mit >k Bits
als zufällig beweisen, denn der Beweis wäre eine Komprimierung dieser Zahl.
3.2 berechenbare Nummern sind nicht zufällig
Denn eine Beschreibung ist dann durch die Berechnung in O(1) gegeben.
Satz: unendlicher String x ist rekursiv  ex. c>0, so dass f. a. n aus N: K(x1:n)≤K(n)+c
Analog: es existiert f: f(n)=x1:n, ∀ n.
3
3.3 Ω, die Zahl der Weisheit
Def: Eine Zahl heißt normal, wenn jeder Block von Ziffern gleicher Länge mit gleicher,
asymptotischer Wahrscheinlichkeit auftrifft.
Bsp: keine rationale Zahl ist normal, denn ihre Dezimaldarstellung ist entweder periodisch oder
endlich. Aber fast jede reelle Zahl ist es. Champernowne’s Zahl ist zwar nicht zufällig, aber
normal.
Es gilt, dass die meisten reellen Zahlen zufällig, also unkomprimierbar sind. Aber können wir
eine solche Zahl angeben. Von der Vorstellung her nicht, denn gibt man eine
unkomprimierbare, unendliche reelle Zahl an, so hat man sie damit komprimiert.
Frage: Kann man eine reelle, zufällige Zahl errechnen?
Zum Beispiel k=k1k2... mit ki=1 : U hält auf fi. Sonst 0.
Aber Halteproblem ist unentscheidbar, also k unberechenbar.
Chaitin: Ω=∑xm(x)=∑x∑U(p)=x2-|p|
Also 0<Ω<1 und es ist Kolmogorov-zufällig und nicht berechenbar.
Und kurioserweise kodiert es auch das Halteproblem.
Genauer: Kennt man Ω1:n, so kann man über die ersten 2n Programme sagen, ob sie halten oder
nicht.
4. schwaches Theorem über Primzahlen
Man kann nun mit Hilfe der Kolmogorov-Komplexität π(n) (die Anzahl der Primzahlen kleiner
als n) abschätzen. Allgemein gilt, dass π(n)~n logn. Aber zusätzlich;
Satz: π(n) = Ω((log n)/(loglog n))
5. Beweis unterer Schranken
Man kann nun die beschreibende Komplexität von Strings zum Beweis unterer Schranken
nutzen. Dabei geht man wie folgt vor: Man nimmt sich einen unkomprimierbaren String x her,
der wegen seiner Zufälligkeit als Eingabe gut geeignet ist. Dann nimmt man die gegenteilige
Behauptung an und führt diese zum Widerspruch, in dem man zeigt, dass x komprimierbar ist.
Gegeben sei eine normale TM mit einem Band, Schreib-Lese-Kopf und der Eingabe auf den
ersten n Felder des Bandes.
Theorem: Es braucht Ω(n2) Schritte für die obige TM M um L = {wwR | w in {0,1}*} zu
erkennen.
Betrachte das Parallel-Rechen-Model der Priotitäts-PRAM. Sie besteht aus Prozessoren P(i),
i=1,2,…,nO(1) und einer unendlichen Anzahl von geteilten Speicherzellen. Ein Rechenschritt der
PRAM besteht aus 3 Teilen, den alle P(i) parallel ausführen: 1) Lesen eines Wertes aus dem
Speicher, 2) Ausführen der Berechnung 3) Rückschreiben des Wertes
Theorem: Um n Integer-Zahlen zu addieren, jedes mit einer polynomiellen Anzahl an Bits,
braucht es Ω(log n) parallele Schritte auf einer Prioritäts-PRAM.
Eine Matrix über GF(2) enthält nur Nullen und Einsen und als Operationen die boolesche
Multiplikation und Addition.
Theorem: Jede nxn-Matrix über GF(2) hat eine Untermatrix mit s Zeilen und n-r Spalten
(r,s≤1/4n), so dass mindestens 1/2s linear unabhängige Zeilen existieren.
4
Herunterladen