Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
D
Datenstrukturen und Algorithm Skript
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Unger, Florian Fedor Fridolin
Datenstrukturen und Algorithm Skript
Commits
08e5652d
Commit
08e5652d
authored
1 year ago
by
Florian Unger
Browse files
Options
Downloads
Patches
Plain Diff
typos and other minor improvements
parent
c928c4df
No related branches found
No related tags found
No related merge requests found
Changes
3
Show whitespace changes
Inline
Side-by-side
Showing
3 changed files
303_Binaerbaeume.tex
+7
-7
7 additions, 7 deletions
303_Binaerbaeume.tex
304_Halden.tex
+1
-1
1 addition, 1 deletion
304_Halden.tex
305_RBT.tex
+8
-4
8 additions, 4 deletions
305_RBT.tex
with
16 additions
and
12 deletions
303_Binaerbaeume.tex
+
7
−
7
View file @
08e5652d
...
@@ -200,7 +200,7 @@ Teilbaum, der Information im Node und einem rechten Teilbaum:
...
@@ -200,7 +200,7 @@ Teilbaum, der Information im Node und einem rechten Teilbaum:
\text
{
BST
}
\;
D
&
= ε
\
|
\;
\text
{
BST
}
\;
D
\quad
D
\quad
\text
{
BST
}
\;
D
\\
\text
{
BST
}
\;
D
&
= ε
\
|
\;
\text
{
BST
}
\;
D
\quad
D
\quad
\text
{
BST
}
\;
D
\\
\mathcal
{
B
}
\quad
&
= ε
\
|
\;\quad
l
\qquad
\ \ \
x
\;
\ \qquad
r
\mathcal
{
B
}
\quad
&
= ε
\
|
\;\quad
l
\qquad
\ \ \
x
\;
\ \qquad
r
\end{align*}
\end{align*}
In dieser Notation beschreiben wir nun kom
ba
t die gängisten Operationen auf binären Suchbäumen in rekursiver Form:
In dieser Notation beschreiben wir nun kom
pak
t die gängi
g
sten Operationen auf binären Suchbäumen in rekursiver Form:
Die Höhe ist
$
1
$
+ die Höhe des größeren Teilbaums:
Die Höhe ist
$
1
$
+ die Höhe des größeren Teilbaums:
\begin{align*}
\begin{align*}
...
@@ -292,7 +292,7 @@ erreicht, wenn wir die Elemente gemäß ihrer Ordnung einfügen.
...
@@ -292,7 +292,7 @@ erreicht, wenn wir die Elemente gemäß ihrer Ordnung einfügen.
Da die Laufzeit aller Algorithmen auf Binären Suchbäumen direkt von der Höhe abhängt, stellt sich die Frage:
Da die Laufzeit aller Algorithmen auf Binären Suchbäumen direkt von der Höhe abhängt, stellt sich die Frage:
Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Elemente in einer zufälligen Reihenfolge einfügt?
Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Elemente in einer zufälligen Reihenfolge einfügt?
\begin{
proposition
}
\begin{
theorem
}
Werde
$
π
\in
S
_
n
$
, eine Permutation von
$
n
$
Elementen (d.h. die Elemente
$
\{
1
,
\cdots
,n
\}
$
in einer zufälligen Reihenfolge
Werde
$
π
\in
S
_
n
$
, eine Permutation von
$
n
$
Elementen (d.h. die Elemente
$
\{
1
,
\cdots
,n
\}
$
in einer zufälligen Reihenfolge
ohne Wiederholungen), in einen initial leeren Binärer Suchbaum eingefügt. Sei
$
H
_
n
$
die Zufallsvariable,
ohne Wiederholungen), in einen initial leeren Binärer Suchbaum eingefügt. Sei
$
H
_
n
$
die Zufallsvariable,
die die Höhe dieses zufällig befüllten Baumes beschreibt.
die die Höhe dieses zufällig befüllten Baumes beschreibt.
...
@@ -301,7 +301,7 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element
...
@@ -301,7 +301,7 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element
\mathbb
{
E
}
[
H
_
n
]
\in
Θ
(
\log
n
)
.
\mathbb
{
E
}
[
H
_
n
]
\in
Θ
(
\log
n
)
.
\]
\]
\label
{
prop:BST
_
average
_
case
_
wachstum
}
\label
{
prop:BST
_
average
_
case
_
wachstum
}
\end{
proposition
}
\end{
theorem
}
\begin{proof}
\begin{proof}
Die untere Grenze ist klar, da wie eingangs beschrieben die Höhe eines Baumes immer in
$
Ω
(
\log
n
)
$
liegt.
Die untere Grenze ist klar, da wie eingangs beschrieben die Höhe eines Baumes immer in
$
Ω
(
\log
n
)
$
liegt.
...
@@ -309,7 +309,7 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element
...
@@ -309,7 +309,7 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element
Wird ein Element
$
i
$
gezogen, befinden sich am Ende
$
i
-
1
$
Elemente im linken Teilbaum und
$
n
-
i
$
Wird ein Element
$
i
$
gezogen, befinden sich am Ende
$
i
-
1
$
Elemente im linken Teilbaum und
$
n
-
i
$
Elemente im rechten Teilbaum.
Elemente im rechten Teilbaum.
Die Höhe eines nichtle
h
ren Baumes ist 1 + die Höhe des größten Teilbau
e
m.
Die Höhe eines nichtle
e
ren Baumes ist 1 + die Höhe des größten Teilbaum
s
.
Unter der Annahme, dass alle Elemente gleichwahrscheinlich gezogen werden, ist der Erwartungswert von
$
H
_
n
$
einfach nur der
Unter der Annahme, dass alle Elemente gleichwahrscheinlich gezogen werden, ist der Erwartungswert von
$
H
_
n
$
einfach nur der
Durchschnitt aller möglichen Fälle:
Durchschnitt aller möglichen Fälle:
\begin{equation*}
\begin{equation*}
...
@@ -318,15 +318,15 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element
...
@@ -318,15 +318,15 @@ Was ist die zu erwartende Höhe eines Binärbaums, wenn man (eindeutige) Element
\end{equation*}
\end{equation*}
Wir betrachten nun
$
Y
_
n
=
2
^{
H
_
n
}$
: Wenn wir zeigen können, dass
$
\mathbb
{
E
}
[
Y
_
n
]
\in
\mathcal
{
O
}
(
n
^
a
)
$
, so folgt
Wir betrachten nun
$
Y
_
n
=
2
^{
H
_
n
}$
: Wenn wir zeigen können, dass
$
\mathbb
{
E
}
[
Y
_
n
]
\in
\mathcal
{
O
}
(
n
^
a
)
$
, so folgt
daraus das
$
\mathbb
{
E
}
[
H
_
n
]
\in
\mathcal
{
O
}
(
a
\log
n
)
=
\mathcal
{
O
}
(
\log
n
)
$
.
daraus
,
das
s
$
\mathbb
{
E
}
[
H
_
n
]
\in
\mathcal
{
O
}
(
a
\log
n
)
=
\mathcal
{
O
}
(
\log
n
)
$
.
In dieser exponentiellen Darstellung wird exponentielle Höhe nun durch
\\
$
Y
_
n
=
2
\max
(
Y
_{
i
-
1
}
,Y
_{
n
-
1
}
)
$
beschrieben,
In dieser exponentiellen Darstellung wird exponentielle Höhe nun durch
\\
$
Y
_
n
=
2
\max
(
Y
_{
i
-
1
}
,Y
_{
n
-
1
}
)
$
beschrieben,
analog verhält sich der Erwartungswert von
$
Y
_
n
$
:
analog verhält sich der Erwartungswert von
$
Y
_
n
$
:
\begin{equation*}
\begin{equation*}
\mathbb
{
E
}
[Y
_
n] =
\frac
{
2
}{
n
}
\sum
_{
i=1
}^
n
\mathbb
{
E
}
[
\max
(Y
_{
i-1
}
, Y
_{
n-i
}
)]
.
\mathbb
{
E
}
[Y
_
n] =
\frac
{
2
}{
n
}
\sum
_{
i=1
}^
n
\mathbb
{
E
}
[
\max
(Y
_{
i-1
}
, Y
_{
n-i
}
)]
,
\label
{
eq:EW
_
Yn
_
1
}
\label
{
eq:EW
_
Yn
_
1
}
\end{equation*}
\end{equation*}
W
obei wir durch die Abschätzung
$
\mathbb
{
E
}
[
\max
(
X,Y
)]
≤
\mathbb
{
E
}
[
X
]
+
\mathbb
{
E
}
[
Y
]
$
(gültig für nichtnegative
w
obei wir durch die Abschätzung
$
\mathbb
{
E
}
[
\max
(
X,Y
)]
≤
\mathbb
{
E
}
[
X
]
+
\mathbb
{
E
}
[
Y
]
$
(gültig für nichtnegative
Zufallsvariablen
$
X
$
und
$
Y
$
) und der Symmetrie der Summenterme weiter zu
Zufallsvariablen
$
X
$
und
$
Y
$
) und der Symmetrie der Summenterme weiter zu
\[
\[
\mathbb
{
E
}
[
Y
_
n
]
≤
\frac
{
2
}{
n
}
\sum
_{
i
=
1
}^
n
(
\mathbb
{
E
}
[
Y
_{
i
-
1
}
]
+
\mathbb
{
E
}
[
Y
_{
n
-
i
}
])
=
\frac
{
4
}{
n
}
\mathbb
{
E
}
[
Y
_
n
]
≤
\frac
{
2
}{
n
}
\sum
_{
i
=
1
}^
n
(
\mathbb
{
E
}
[
Y
_{
i
-
1
}
]
+
\mathbb
{
E
}
[
Y
_{
n
-
i
}
])
=
\frac
{
4
}{
n
}
...
...
This diff is collapsed.
Click to expand it.
304_Halden.tex
+
1
−
1
View file @
08e5652d
...
@@ -49,7 +49,7 @@ Ist das Wurzelelement ein Blatt, so ist die Haldenbedingung immer erfüllt.
...
@@ -49,7 +49,7 @@ Ist das Wurzelelement ein Blatt, so ist die Haldenbedingung immer erfüllt.
Um sonst die Haldenbedingung zu erzwingen, muss das Wurzelelement also mit dem Maximum seiner beiden Kinder getauscht werden.
Um sonst die Haldenbedingung zu erzwingen, muss das Wurzelelement also mit dem Maximum seiner beiden Kinder getauscht werden.
Dabei wird die Haldenbedingung aber möglicherweise bei betauschten Kindknoten verletzt. Also rufen wir den Algorithmus dort noch einmal auf.
Dabei wird die Haldenbedingung aber möglicherweise bei betauschten Kindknoten verletzt. Also rufen wir den Algorithmus dort noch einmal auf.
In Pseudocode aus der Array-Perspektive sieht das folgendermaßen aus (Der Pseudocode in
Array
perspektive ist eine
In Pseudocode aus der Array-Perspektive sieht das folgendermaßen aus (Der Pseudocode in
Baum
perspektive ist eine
Übungsaufgabe):
Übungsaufgabe):
\begin{algorithm}
[H]
\begin{algorithm}
[H]
...
...
This diff is collapsed.
Click to expand it.
305_RBT.tex
+
8
−
4
View file @
08e5652d
...
@@ -47,7 +47,10 @@ maximal halb so hoch hängt wie eins auf der untersten Ebene.
...
@@ -47,7 +47,10 @@ maximal halb so hoch hängt wie eins auf der untersten Ebene.
Dadurch folgt:
Dadurch folgt:
\begin{lemma}
\begin{lemma}
In einem nichtlehren Red-Black-Tree der Größe
$
n
$
liegt die Höhe
$
h
$
in
$
Θ
(
\log
n
)
$
.
In einem nichtlehren Red-Black-Tree der Größe
$
n
$
gilt:
\[
h ∈ Θ
(
n
\log
n
)
.
\]
\label
{
lemma:RBT
_
height
}
\label
{
lemma:RBT
_
height
}
\end{lemma}
\end{lemma}
Die Details des Beweises sind eine Übungsaufgabe.
Die Details des Beweises sind eine Übungsaufgabe.
...
@@ -97,7 +100,7 @@ Dabei macht \texttt{balance} nichts, solange nicht einer der vier Fälle aus Abb
...
@@ -97,7 +100,7 @@ Dabei macht \texttt{balance} nichts, solange nicht einer der vier Fälle aus Abb
\begin{align}
\begin{align}
\begin{rcases}
\begin{rcases}
\texttt
{
balance
}
(B
\;
a
\;
x
\;
(R
\;
b
\;
y
\;
(R
\;
c
\;
z
\;
d)))
\\
\texttt
{
balance
}
(B
\;
a
\;
x
\;
(R
\;
b
\;
y
\;
(R
\;
c
\;
z
\;
d)))
\\
\texttt
{
balance
}
(B
\;
(R
\;
a
\;
x
\;
(R
\;
b
\;
y
\;
c
\;
) z
\;
d)
)
\\
\texttt
{
balance
}
(B
\;
(R
\;
a
\;
x
\;
(R
\;
b
\;
y
\;
c
\;
)
)
z
\;
d)
\\
\texttt
{
balance
}
(B
\;
(R
\;
(R
\;
a
\;
x
\;
b)
\;
y
\;
c)
\;
z
\;
d)
\\
\texttt
{
balance
}
(B
\;
(R
\;
(R
\;
a
\;
x
\;
b)
\;
y
\;
c)
\;
z
\;
d)
\\
\texttt
{
balance
}
(B
\;
a
\;
x
\;
(R
\;
(R
\;
b
\;
y
\;
c)
\;
z
\;
d))
\\
\texttt
{
balance
}
(B
\;
a
\;
x
\;
(R
\;
(R
\;
b
\;
y
\;
c)
\;
z
\;
d))
\\
\end{rcases}
&
= (R
\;
(B
\;
a
\;
x
\;
b)
\;
y
\;
(B
\;
c
\;
x
\;
d))
\\
\end{rcases}
&
= (R
\;
(B
\;
a
\;
x
\;
b)
\;
y
\;
(B
\;
c
\;
x
\;
d))
\\
...
@@ -155,11 +158,12 @@ Dieses Ergebnis lässt sich noch verfeinern, da tatsächlich amortisiert $\mathc
...
@@ -155,11 +158,12 @@ Dieses Ergebnis lässt sich noch verfeinern, da tatsächlich amortisiert $\mathc
kann:
kann:
\begin{lemma}
\begin{lemma}
Bei
mehrfacher, sukzessiver Anwendung von
\emph
{
\texttt
{
insert
}}
passieren lediglich
$
\mathcal
{
O
}
(
1
)
$
Schreibaufrufe, also
Bei
widerholten Einfügen in einen Red-Black-Tree gibt es lediglich amortisiert
$
\mathcal
{
O
}
(
1
)
$
Umstrukturierungsoperationen
Anwendungen der Regeln (3.1), (3.3) und (3.5
).
(Also Operationen wie in Abbildung
\ref
{
fig:rbt
_
balance
}
beschrieben
).
\label
{
lemma:rbt
_
amortisiert
}
\label
{
lemma:rbt
_
amortisiert
}
\end{lemma}
\end{lemma}
\begin{proof}
\begin{proof}
TODO: Rework.
Wir beobachten zuerst, dass sich bei einer Anwendung der Regel (3.5) die Kapazität des entsprechenden Teilbaums
Wir beobachten zuerst, dass sich bei einer Anwendung der Regel (3.5) die Kapazität des entsprechenden Teilbaums
verdoppelt: In jeder der vier Ausgangsfälle in Abbildung
\ref
{
fig:rbt
_
balance
}
beträgt die Kapazität maximal
verdoppelt: In jeder der vier Ausgangsfälle in Abbildung
\ref
{
fig:rbt
_
balance
}
beträgt die Kapazität maximal
$
4
^{
h'
}$
, wobei
$
h'
$
hier die Anzahl der zu durchwandernden schwarzen Knoten auf den von der Wurzel dieses Teilbaums zu
$
4
^{
h'
}$
, wobei
$
h'
$
hier die Anzahl der zu durchwandernden schwarzen Knoten auf den von der Wurzel dieses Teilbaums zu
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment