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
Cemal, Mevludin
Datenstrukturen und Algorithm Skript
Commits
463a86ff
Commit
463a86ff
authored
4 years ago
by
Florian Unger
Browse files
Options
Downloads
Patches
Plain Diff
typos
parent
8b4f7038
No related branches found
No related tags found
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
301_dynamische_Arrays.tex
+7
-6
7 additions, 6 deletions
301_dynamische_Arrays.tex
with
7 additions
and
6 deletions
301_dynamische_Arrays.tex
+
7
−
6
View file @
463a86ff
...
@@ -121,10 +121,10 @@ Damit kommen wir bei genauerer Betrachtung auf einen amortisierten Aufwand von $
...
@@ -121,10 +121,10 @@ Damit kommen wir bei genauerer Betrachtung auf einen amortisierten Aufwand von $
Im Unterschied zur average-case-Analyse haben wir bei einer amortisierten Analyse also
\emph
{
garantiert
}
, dass
$
k
$
subsequente Operationen nicht jedes
Im Unterschied zur average-case-Analyse haben wir bei einer amortisierten Analyse also
\emph
{
garantiert
}
, dass
$
k
$
subsequente Operationen nicht jedes
mal im worst case landen.
mal im worst case landen.
\begin{definition}
[Amortisierte Laufzeit]
\begin{definition}
[Amortisierte Laufzeit]
Seien
$
o
_
1
, o
_
2
,
\dots
$
endlich viele verschiedene
Funk
tionen. Der
\emph
{
amortisierte
}
Aufwand von
Funk
tionenfolgen
Seien
$
o
_
1
, o
_
2
,
\dots
$
endlich viele verschiedene
Opera
tionen. Der
\emph
{
amortisierte
}
Aufwand von
Opera
tionenfolgen
$
f
_
\bullet
\in
\{
o
_
1
, o
_
2
,
\dots\}
^
\mathbb
{
N
}$
der Länge
$
n
$
wird definiert als:
$
f
_
\bullet
\in
\{
o
_
1
, o
_
2
,
\dots\}
^
\mathbb
{
N
}$
der Länge
$
n
$
wird definiert als:
\[
\[
T
_{
\text
{
amo
}}
(
n
)
=
\frac
{
\max
(
\{\sum
_{
i
=
1
}^
n f
_
i | f
_
\bullet
\in
\{
o
_
1
, o
_
2
,
\dots\}
^
\mathbb
{
N
}
)
}{
n
}
.
T
_{
\text
{
amo
}}
(
n
)
=
\frac
{
\max
(
\{\sum
_{
i
=
1
}^
n
T
(
f
_
i
)
| f
_
\bullet
\in
\{
o
_
1
, o
_
2
,
\dots\}
^
\mathbb
{
N
}
)
}{
n
}
.
\]
\]
\end{definition}
\end{definition}
...
@@ -216,9 +216,10 @@ Umstrukturierung:
...
@@ -216,9 +216,10 @@ Umstrukturierung:
\end{lemma}
\end{lemma}
\begin{proof}
\begin{proof}
Wir beobachten zuerst: Direkt nach einer Umstrukturierung, als zu Beginn von Zeitpunkt
$
i
+
1
$
gilt:
Wir beobachten zuerst: Direkt nach einer Umstrukturierung, als zu Beginn von Zeitpunkt
$
i
+
1
$
gilt:
\
[
\
begin{align}
n
_{
i+1
}
=
\frac
{
n
_
\text
{
cap
}}{
2
}
.
n
_{
i+1
}
=
\frac
{
n
_
\text
{
cap
}}{
2
}
.
\]
\label
{
eq:post
_
resizing
}
\end{align}
Nun gibt es zwei Fälle für die Umstrukturierung zum Zeitpunkt
$
j
$
:
Nun gibt es zwei Fälle für die Umstrukturierung zum Zeitpunkt
$
j
$
:
Fall 1: Die Umstrukturierung ist eine Erweiterung, es ist also
$
f
_
j
$
gleich
$
\texttt
{
add
}$
.
\\
Fall 1: Die Umstrukturierung ist eine Erweiterung, es ist also
$
f
_
j
$
gleich
$
\texttt
{
add
}$
.
\\
...
@@ -253,13 +254,13 @@ Damit können wir zeigen, dass das dynamische Array einen amortisierten Aufwand
...
@@ -253,13 +254,13 @@ Damit können wir zeigen, dass das dynamische Array einen amortisierten Aufwand
vorherigen Lemma klar: Ist
$
K
_
0
=
0
$
und damit nicht negativ, bleibt
$
K
_
i
\leq
0
$
für alle
$
i
\in
\mathbb
{
N
}$
.
vorherigen Lemma klar: Ist
$
K
_
0
=
0
$
und damit nicht negativ, bleibt
$
K
_
i
\leq
0
$
für alle
$
i
\in
\mathbb
{
N
}$
.
Da die tatsächliche Laufzeit
$
T
(
f
_
i
)
=
a
_
i
$
, haben wir also
Da die tatsächliche Laufzeit
$
T
(
f
_
i
)
=
a
_
i
$
, haben wir also
\[
\[
T
\left
(
\sum
_{
i
=
1
}^
n f
_
i
\right
)
=
\sum
_{
i
=
1
}^
n a
_
i
\leq
\sum
_{
i
=
1
}^
n e
_
i
\leq
3
n.
\sum
_{
i
=
1
}^
n
T
(
f
_
i
)
=
\sum
_{
i
=
1
}^
n a
_
i
\leq
\sum
_{
i
=
1
}^
n e
_
i
\leq
3
n.
\]
\]
Das gilt für alle möglichen Operationenfolgen, also auch für die zeitaufwendigste.
Das gilt für alle möglichen Operationenfolgen, also auch für die zeitaufwendigste.
Nach Definition ist damit ist Laufzeit pro Operation
Nach Definition ist damit ist Laufzeit pro Operation
\[
\[
T
_{
\text
{
amo
}}
(
n
)
=
\frac
{
\max
(
\{\sum
_{
i
=
1
}^
n f
_
i | f
_
\bullet
\in
\{\texttt
{
add
}
,
\texttt
{
delete
}
\}
^
\mathbb
{
N
}
)
}{
n
}
T
_{
\text
{
amo
}}
(
n
)
=
\frac
{
\max
(
\{\sum
_{
i
=
1
}^
n
T
(
f
_
i
)
| f
_
\bullet
\in
\{\texttt
{
add
}
,
\texttt
{
delete
}
\}
^
\mathbb
{
N
}
)
}{
n
}
\leq
\frac
{
3
n
}{
n
}
=
3
\in
\mathcal
{
O
}
(
1
)
.
\leq
\frac
{
3
n
}{
n
}
=
3
\in
\mathcal
{
O
}
(
1
)
.
\]
\]
\end{proof}
\end{proof}
...
...
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