Vortrag Proseminar Datenkompression

Werbung
Vortrag Proseminar Datenkompression:
Konstruktion binärer Suchbäume:
Binäre Suchbäume:
–
–
–
–
–
–
Suche in linear geordneter Menge X = x 1,... , x n ∪ y 0,..., y n 
Gesucht ist ein Wort W
Interpretation des Suchbereichs:
x i W stimmt mit W i überein
–
y i liegt Alphabetisch zwischen W i und W i 1
–
y n W liegt nach W n
–
y 1 W liegt vor W 1
–
für das Problem wird Baum konstruiert
x sind innere knoten und y Blätter des Baums
ist x i im linken und x j im rechten Unterbaum eines
Baumes mit der Wurzel x k dann gilt x i  x k  x j
Abbildung 1: Beispiel Suchbaum
-Definition:
–
–
–
Existiert Pfad von x i nach x j über linken Baum so ist i>j
die Kosten des Punktes z , L(z) entspricht der # Knoten von der
Wurzel von B bis zu z
Für Gewichtung p sind die Kosten C B= ∑ p z L  z z∈ X
-Definition:
–
–
–
–
Sei X ij= x i 1 ,..., x j ∪ y i ,..., y j  eine Einschränkung des
Suchbereichs
W ij = p X ij 
C ij sind die Kosten des optimalen Suchbaums B zu X ij und p
W ij sei die Wurzel des oder der Index der Wurzel des Baumes
Konstruktion von optimalen Suchbäumen:
Bellmansche Optimalitätsgleichung:
C i , j =W i , j C i , R
i, j
−1
C R
i, j
, j
= min W i , j C i , k −1C k , j [ i k ≤ j]
wobei C ii=0
Algorithmus von Bellman:
–
–
–
–
Da X i , i 1= x i 1 ∪ y i , y i 1  folgt das Ri , i 1=i1 und C i , i 1=W i , i 1
Berechnung Ri , j und C i , j mit i− jl
Berechnung Ri , i  l und C i , i  l 0in−l
R i , i  l ist einer der werte die C i , k −1C k , i  l minieren und
C i , i  l =W i , i  l C i , R −1C R , i  l
– Errechnung von W ij für konstantes i und wachsendes j
– Errechnung aller C i , k −1C k , i  l (l add.)
i,il
–
–
–
i,il
2
O n 
Ermittlung des Minimums dieser Werte (l-1 Vergl.)
damit erhält man Wurzel (k)
insgesamt O n3 
Algorithmus von Knuth
Durch Einschränkung auf Bereich Ri , j −1≤RijRi 1, j benötigt man nur
O n 2  Rechenschritte
noch
Effiziente Konstruktion guter binärer Suchläufe:
Min-Max-Bäume:
–
–
–
–
–
Wurzel wird so gewählt das größerer Teilbaum möglichst
klein ist
wenn x k die Wurzel ist so sind W i , k −1 und W kj die
Wurzeln der Teilbäume
M k =max W i , k −1 , W kj  ist das Gewicht des schweren
Teilbaums
x_r ist min-max-Wurzel wenn
M r i , j=minM i 1 i , j ,..., M j i , j
ein Suchbaum heißt min-max-Baum wenn beide
Teilbäume min-max-Wurzeln haben
Algorithmus von Mehlhorn
– Teil des Suchbereichs für den wir Wurzel eines Teilbaums
konstruieren wird durch die Parameter (i,j,w,l) beschrieben mit 3
Bedingungen
i) 0i jn
ii) W =v2−l 1 und v ∈0,1,...,2 l −1−1
iii) wqiq jw2l −1 (l # innerer Pkt. Auf Pfad von
Wurzel des Gesamtbaums bis Wurzel des Tailbaums; v gibt
an wie weit rechts der Teilbaum im Gesamtbaum liegt)
– Zu beginn sind Bedingungen erfüllt da i=0, j=n, l=1 und w=0
– allgemein soll Wurzel x k
die erfüllen: qk −1w2−l qk 
– Fall 1: i+1=j dann konstruiert der Algorithmus den Baum: Wurzel x_j
mit Endpunkten: y j −1 und y j
−l
– Fall 2: i1≠ j und qiw2
x_{i+1} wird Wurzel des Suchbaums,
linker Teilbaum besteht aus y i und rechter wird mit
−l
i1, j , w2 , l1 konstruiert
x j ist Wurzel und rechter Teilbaum
– Fall 3:
i1≠ j und qiw2−l
y j und linker wird mit (i,j-1,w,l+1) erstellt
−l
– Fall 4: i+1<>j und qiw2 q j Wurzel x k wird so gewählt,
dass qk −1w2−l qk  und ik  j
x k =i1 besteht linker Teilbaum aus y i sonst
– wenn
erstellen mit (i,k-1,w,l+1) erstellt
y j sonst
– wenn x k = j besteht rechter Teilbaum aus
−l
erstellen mit k , j , w2 , l1 erstellt
–
Für die Kosten des konstruierten Baumes gilt:
C  BH  p1¿0in p x i 
Verfahren von Fredman:
–
–
Berechnung q(1),...,q(n) (O(n) Add. Und Div.)
Errechnung x k für Fall 4:
−l
– k so bestimmen das qk −1w2 qk 
– feststellen ob man k=l wählen kann oder k>l bzw.
k<l
– Vergleich wir q(l-1) und q(l) mit ½
–
1
2
wenn ql−1 ql dann k=l
falls q(l-1)>1/2 (q(l))<1/2 muss k<l (k>l) gewählt
werden
– Test ob K=[1/2(n+1)] wählen kann wenn ja dann
müssen die Teilbäume mit k-1 und n-k gewählt
werden
– sonst ist k in menge (1,...,[1/2(n+1)]) oder
([½(n+1]+1,...,n) zu finden
– weiter für Menge 1:
– prüfen ob k 1 , k 2 , k 4 , k 8 ,... wählen
kann bei erster postiver Antwort wird abgebrochen
h−1
– man erhält daraus menge 2
1,...,2 h 
– indem man menge fortlaufend halbiert erhält man k
in h-1 fragen
der Algorithmus von Mehlhorn kann mittels des Verfahrens
von Fredman in O(n) schritten durchgeführt werden
–
–
2.Untere Schranken für die Kosten von Suchbäume:
Satz1:
–
–
–
–
für B gilt:
C(p) sind die Kosten eines optimalen Suchbaums zur a-prioriVerteilung p au dem Suchbereich X
Ergebnisfolgen e y 0  , e x 1  , e y 1  ,..., e x n  , e y n  dieser Suchbäume
bilden Präfixcodes auf Alphabet (0,1,2)
siehe Noiseless-Coding-Theorem: erwartete Codewortlänge
Da Kosten gleich E(c) sind C  plog3−1 H  p log 3−1≈0.63
L(X_k) und L(y_m) sind die Kosten für x_k und y_m
i)
∑ 2− L  x 1
m
0≤m≤n
ii)
1
∑ 2− L  x  2log n1
k
dies ist mit der Ungleichung von Kraft beweisbar
0≤k ≤n
Abschätzen von C(p) – H(p) mit obigen Formeln:
Sei p x := ∑ p x k  und p y:= ∑ p y m  und B optimaler
Suchbaum.
–
C  p−H  p= ∑ p x k L  x k log p x k  ∑ p x m L  x m log p x m 
= −∑ p x k  log
–
− L  xm 
Für x ∈ℝ ist ln x ≤ x −1 und damit log x ≤ x −1 log e . Damit
abschätzen des 2. Summanden:
−∑ p x m  log
–
− L  xk 
2
2
− ∑ p x m  log
P  xk
P  x m
2− L  x 
≥−log e ∑ 2− L  y − p y m ≥−log e1− p y
P  x m
m
m
Nun zum Abschätzen des ersten Summanden:
−∑ p x k  log
− L  xk 
2
=−∑ p x k  log
P xk
−log e−∑ 
2− L  x
k
− L  xk 
1
2
− ∑ p x k  log logn1
1
2
P  x k  logn1
2

− p x k − p x  log logn1−1
1
logn1
2
≥ −log e1− p x − p  x log logn1−1
≥
–
Damit ergibt sich:
H  p−H  p≥−log e1− p  y1− p x − p  x log logn1−1
= −log e− p x log logn1−1
Daraus folgt der nächste Satz.
Satz 2:
Für alle a-priori-Verteilungen p ist
C  p≥H  p−log e− p  x  log log n1−1
Diese Schranke ist in diesen Fällen ungefähr H  p – p  x  log H  p und damit viel
besser als die Schranke aus Satz 1. Für Verteilungen mit kleiner Entropie liefert
Satz 2 jedoch keine gute untere Schranke.
Für jeden Knoten x k betrachten wir nun den Baum b, der aus x_k und dessen
Nachfolgern besteht. b enthält dabei die Knoten x i 1 ,..., x j , y i ,..., y j .
Daraus folgt pb=W ij . D. h. pb ist Wahrscheinlichkeit, dass der gesuchte
Knoten in b liegt und die Wahrscheinlichkeit das wir den Test t k durchführen.
X k ist die Zufallsvariable die wenn sie 1 ist angibt das der Test ausgeführt wird
bzw. wenn sie 0 ist das er nicht ausgeführt wird.
Daraus folgt: E  X k =P  X k =1= pb¿
T(B) ist Menge aller Teilbäume von B.
∑
1≤ k ≤ n
Xk
Ist die Anzahl der benötigten Tests.
X k = ∑ E  X k = ∑ pb
Damit gilt: C  p=C B=E  1≤∑
k ≤n
1≤ k ≤ n
b∈T  B 
Die Wahrscheinlichkeit des Objektes
z∈ X , wenn z in b liegt, wird mit
pb  z=
p z
pb
bezeichnet, Bei einer Suche in die x k Wurzel des Teilbaumes b erreichen so ist die
Wahrscheinlichkeit das x k das gesuchte Objekt ist pb  x k  .
Weiterhin lassen sich auch die Wahrscheinlickeiten, ob das Objekt im linken l b oder
im rechten r b Teilbaum von b liegt, herleiten:
pl b
pb
pr b
pb
So ist die Ungewissheit über den Ausgang des Tests t k :
H b :=H 
P  x k  pl b  P r b

,
,
pb pb
pb
Daraus lässt sich folgendes Lemma ableiten:
H  p=
∑
b∈T  B 
pb H b
Durch sorgfältigeres Abschätzen von H b lässt sich eine e wesentlich bessere unter Schranke für
die Kosten binärer Suchbäume ableite. Dazu beweisen wir zunächst dieses Lemma:
–
Für alle Wahrscheinlichkeitsverteilungen
P= p1, p2, p 3 
und alle reellen Zahlen a ist .
−a
H  p≤ap1log 22 
Aus der Konkavität der Entropiefunktion ergibt sich:
1
,1
F  p1 :=H  p1 , 1− p1  1− p1 ≥H P 1 , p2 , p3 
2
2
Jede Tangente von F liegt oberhalb von F und damit:
F '  p1 =log
1−P 1
P1
−1 damit gilt auch
F ' 2a 11−1 =a .
F 2 a 11−1 =a2 a 11−1log22−a  ist, ergibt sich die Tangente
−a
G  p1 :=ap1log22  die F im Punkt 2 a 11−1 , F 2 a 11−1  berührt.
Da
Daraus folgt
H  p1, p 2, p 3 ≤F  p1 ≤G  p1 =ap1log22−a  | a∈ℝ .
wzbw.
x k nun die Wurzel von
p x k 
log22−a  ist.
H b≤a
pb
Wenn
b∈T B
ist, so folgt aus dem Lemma, dass
Weiterhin lässt sich ableiten:
H  p=
∑
pb≤
b∈T  B 
∑
1≤ k ≤ n
ap x k 
∑
b∈T  B 
−a
−a
pb log22 =ap  x C  p log22  | a∈ℝ
Damit ist der Folgende Satz bewiesen:
Satz 3: Für alle a-priori-Verteilungen p gilt
C  p≥sup[H  p−ap x  log−1 22−a  | a∈ℝ]
Diese untere Schranke ist noch zu kompliziert. Wenn man die Funktion
−1
−a
f a:=H  p−ap  x  log 22  untersucht lässt sich über das Maximum am Punkt
H  p
c:=log
 lässt sich folgende untere Schranke beweisen.
2p x 
Satz 4: Für alle a-priori-Verteilungen p, für die H  p≥ p x  ist, gilt
C  p≥H  p− p x  logH  p p x log p  x −loge1
Weiterhin lässt sich hier errechnen, dass mit wachsender Entropie der a-priori-Verteilung sich der
Quotient der oberen und unteren Schranke 1 annähert.
Herunterladen