kompakt

Werbung
Randomisierte Algorithmen
Wir brauchen diskrete Wahrscheinlichkeitsräume
und nicht-negative Zufallsvariablen.
Effiziente Algorithmen und Komplexitätstheorie
Wahrscheinlichkeitsraum (Ω, F, Prob) mit
Vorlesung
Ingo Wegener
I
Menge Ω,
I
F ⊆ P(Ω),
I
Prob : F → [0; 1],
so dass
Vertretung Thomas Jansen
I
∅, Ω ∈ F,
I
∀A ∈ P(Ω) : A ∈ F ⇒ A ∈ F,
S
∀(An ) ∈ F N :
An ∈ F und
I
08.05.2006
n∈N
I
Prob (Ω) = 1,
I
∀(An ) ∈ F N paarw. disj. : Prob
S
n∈N
An
=
P
Prob (An ).
n∈N
1
Elementare Eigenschaften und Begriffe
I
I
I
I
I
Unabhängigkeit
Ereignisse A1 , . . . , Ak heißen unabhängig wenn
!
l
l
Q
T
Aij =
Prob Aij
∀1 ≤ i1 < i2 < · · · < il ≤ k : Prob
Prob (∅) = 0
Prob A = 1 − Prob (A)
Prob (A ∪ B) = Prob (A) + Prob (B) − Prob (A ∩ B)
Zufallsvariable X : Ω → R
P
Erwartungswert E (X ) = x · Prob (X = x)
j=1
I
j=1
ZV
1} :nE (X ) = Prob (X = 1)
Xn ∈ {0,
P
P
E (Ai )
E
Ai =
i=1
ZV X ≥ 0, a ∈ R+ . Prob (X ≥ a) ≤
!
Aj
=
k
Q
j=1
Prob (Aj ) reicht nicht aus
j=1
Beispiel: A1 = ∅
Vorsicht Unabhängigkeit 6= paarweise Unabhängigkeit
Beispiel: Wurf von zwei Münzen
I A1 := 1. Münze Kopf
I A2 := 2. Münze Kopf
I A3 := beide Münzen gleich
Prob (A1 ) = 12
Prob (A2 ) = 12
Prob (A3 ) = 12
1
Prob (A1 ∩ A2 ) = 4
Prob (A1 ∩ A3 ) = 14
Prob (A2 ∩ A3 ) =
1
Prob (A1 ∩ A2 ∩ A3 ) = 4
i=1
Markov-Ungleichung
k
T
Vorsicht Prob
x
I
2
E(X )
a
Beweis.
(
1 falls X ≥ a
klar X ≥ a · Y
0 sonst
also E (X ) ≥ E (a · Y ) = a · E (Y ) = aProb (Y = 1) = aProb (X ≥ a)
)
zusammen Prob (X ≥ a) ≤ E(X
a
Y :=
3
1
4
4
Bedingte Ereignisse
MinCut
kennen wir schon von Flüssen her. . .
Für Ereignis B mit Prob (B) > 0 ist für jedes Ereignis A
Prob (A | B) := Prob(A∩B)
Prob(B)
die bedingte Wahrscheinlichkeit von A unter B.
Problem MinCut
Eingabe
Elementare Eigenschaften
Ausgabe
Prob (A1 ∪ A2 | B)
= Prob (A1 | B) + Prob (A2 | B) − Prob (A1 ∩ A2 | B)
I
I
Prob (A ∩ B) = Prob (A | B) · Prob (B)
I
für unabhängige Ereignisse A, B: Prob (A | B) = Prob (A)
I
Normierung auf neuen W’keitsraum“
”
bedingter Erwartungswert E (A | B)
I
ungerichteter, gewichteter Graph G = (V , E , w )
mit w : E → N
˙ 2 = V , V1 6= ∅, V2 6= ∅
Partition V1 ∪V
P
mit mincut(G ) =
w (e) minimal
{u, v } ∈ E mit u ∈ V1 und v ∈ V2
Notation für E 0 ⊆ E ist w (E 0 ) =
P
w (e)
e∈E 0
elementare Operation Kontraktion
Idee Kontraktion verschmilzt zwei Knoten und erhält dabei Kanten
so weit wie möglich
6
5
Kontraktion
Algorithmus Kontraktion
Kontraktion(u, v ) mit u 6= v ∈ V :
I Verschmilz u und v zu neuem Knoten z. (Merken!)
I Entferne Kante zwischen u und v (falls existent).
I Betrachte alle Nachbarn x ∈ V von u und v :
I
I
I
1. Fall: x Nachbar von u und v
Entferne {x, u} und {x, v }. Füge {x, z} mit
w ({x, z}) := w ({x, u}) + w ({x, v }) hinzu.
2. Fall: x Nachbar von u, aber nicht von v
Entferne {x, u}. Füge {x, z} mit w ({x, z}) := w ({x, u} hinzu.
3. Fall: x Nachbar von v , aber nicht von u
Entferne {x, v }. Füge {x, z} mit w ({x, z}) := w ({x, v } hinzu.
Kontraktion(b, c)
4
a
d
3
b
Eingabe zusammenhängender, gewichteter Graph G = (V , E )
mit |V | > 2
˙ 2=V
Ausgabe Partition V1 ∪V
6
2
a
4
1. Wiederhole
2.
Wähle Kante e = {u, v } ∈ E geeignet.
3.
Kontraktion(u, v )
4. Bis |V | = 2
5. Die beiden verbliebenen Metaknoten definieren die Partition.
d
klar
5
9
c
z
5
7
I
bei jeweils passender Wahl von e
MinCut
I
Wunsch: einfach und effizient wählen
8
Algorithmus Randomisierte Kontraktion
1. Wiederhole
2.
Wähle Kante e = {u, v } ∈ E mit W’keit
Zur Analyse von Randomisierter Kontraktion
Lemma 105
Pw (e)
w (e ) .
Für G = (V , E ) mit |V | = n gelten folgende Aussagen:
˙ 2 = V ist genau dann Resultat von Randomisierter
1. V1 ∪V
Kontraktion, wenn nie eine Kante zwischen V1 und V2
kontrahiert wird.
0
e 0 ∈E
3.
Kontraktion(u, v )
4. Bis |V | = 2
5. Die beiden verbliebenen Metaknoten definieren die Partition.
2. mincut(G ) = W ⇒ w (E ) ≥ W · (n/2)
3. ∀e ∈ E : mincut(G ) ≤ mincut(Kontraktion(e))
Theorem 104
Algorithmus Randomisierte Kontraktion hat Laufzeit O(n2 ).
Beweis. √
1. trivial
P
2. Annahme: ∃v : dw (v ) :=
w (e) < W
Beweis.
I
I
I
I
I
P
initiale Berechnung von
w (e 0 ) in Zeit O(e) = O(n2 ).
n − 2 Kontraktionen
Zeit für eine Kontraktion: O(n)
Auswahl einer Kante in Zeit O(n)
Gesamtzeit O(n2 )
e={v ,·}
V1 := {v }, V2 := V \ {v } hat Wert dw (v ) < W
Widerspruch also ∀v ∈ V : dw (v ) ≥ W
√
P
P
dw (v ) ≥ 12 · n · W
w (E ) =
w (e) = 12 ·
e∈E
v ∈V
9
Beweis von Lemma 105 (Fortsetzung)
Analyse von Randomisierter Kontraktion
Lemma 105
Theorem 106
Für G = (V , E ) mit |V | = n gelten folgende Aussagen:
˙ 2 = V ist genau dann Resultat von Randomisierter
1. V1 ∪V
Kontraktion, wenn nie eine Kante zwischen V1 und V2
kontrahiert wird.
˙ 2 = V ein minimaler Cut.
Sei G = (V , E ) Graph mit |V | = n, V1 ∪V
Prob (Randomisierte Kontraktion liefert V1 , V2 ) ≥ n22
Beweis.
In jeder Runde wird genau eine Kante kontrahiert.
Es gibt n − 2 Runden.
Vor der i-ten Kontraktion gibt es ni := n − i + 1 Knoten im
Graphen Gi .
Der Algorithmus liefert V1 , V2 genau dann, wenn keine Kante
zwischen V1 und V2 kontrahiert wird. Seien E 0 diese Kanten.
Ei bezeichnet das Ereignis, dass in den ersten i − 1 Kontraktionen
keine Kante aus E 0 kontrahiert wird.
Beobachtung Ei ⇒ mincut(Gi ) = mincut(G )
2. mincut(G ) = W ⇒ w (E ) ≥ W · (n/2)
3. ∀e ∈ E : mincut(G ) ≤ mincut(Kontraktion(e))
Beweis.
√
1.
10
√
2.
3. Kontraktion(e) ist erster Schritt zu einem Cut. Wert jedes
Cuts ist obere Schranke für mincut(G )
11
12
Beweis von Theorem 106 (Fortsetzung)
Beweis von Theorem 106 (Fortsetzung (2))
E0
Ei : in den ersten i Kontraktionen keine Kante aus
kontrahiert
Prob (Randomisierte Kontraktion liefert V1 , V2 ) =
n−2
Q
Prob (i-te Kontraktion kontrahiert keine Kante aus E 0 |Ei )
nur noch etwas rechnen. . .
gesamt
i=1
Ei ⇒ W (e) ≥ W ·
ni
2
Prob (Randomisierte Kontraktion liefert V1 , V2 )
n−2
n−2
n
Y
Y
Y
2
2
i −2
≥
1−
=
1−
=
ni
n−i +1
i
w (E 0 )
also Prob kontrahiere e ∈ E 0 in i-ter Kontraktion|Ei ≤
W · n2i
W
2
gesamt
=
ni =
W· 2
ni
Prob (Randomisierte Kontraktion liefert V1 , V2 )
n−2
Y
=
Prob in i-ter Kontraktion keine Kante aus E 0 kontrahiert|Ei
≥
i=1
n−2
Y
i=1
i=1
=
i=1
i=3
(n − 2)!
2
2
=
≥ 2
(n!)/2
n(n − 1)
n
Korollar: Randomisierte Kontraktion findet mit W’keit ≥
2
n2
einen optimalen Cut.
2
1−
ni
14
13
Auf dem Weg zu einem akzeptablen Algorithmus
Randomisierte Kontraktion unabhängig wiederholt
Theorem 107
Erfolgswahrscheinlichkeit
2
n2
Wird Randomisierte Kontraktion N mal ausgeführt, wird mit
N
2
Wahrscheinlichkeit mindestens 1 − 1 − n22
≥ 1 − e −(2N)/n
mindestens ein minimaler Cut ausgegeben.
ist völlig inakzeptabel.
Simple Idee zur Verbesserung unabhängige Wiederholungen
Beweis.
Prob (ein Durchlauf erzeugt keinen min. Cut) ≤ 1 −
Wie groß ist die erwartete Anzahl von Wiederholungen von
2
Randomierter Kontraktion bis zum Erfolg? ≤ n2
2
n2
Prob (N Durchläufe erzeugen keinen min. Cut) ≤ 1 −
Laufzeit O(n4 )
2 N
n2
Prob (N Durchläufe erzeugen ≥ 1 mal min. Cut) ≥ 1 − 1 −
2 N
n2
nicht sehr überzeugend
Wir betrachten das trotzdem etwas genauer.
∀x ∈ R : e x ≥ 1 + x
15
16
Theorem 107 angewendet
Bessere Randomisierte Kontraktion
Erfolgswahrscheinlichkeit n22 je Durchgang ist nicht so gut. . .
Wo verlieren wir am meisten Erfolgswahrscheinlichkeit“?
”
Korollar 108
Für jede Konstante c > 0 findet man durch wiederholte
Randomisierte Kontraktion in Zeit O(n4 log n) mit
Wahrscheinlichkeit ≥ 1 − 1/n2c einen min. Cut.
Lemma 109
Bricht Randomisierte Kontraktion ab, wenn noch t Knoten übrig
t·(t−1)
keine Kante eines
sind, so wird mit Wahrscheinlichkeit ≥ n·(n−1)
minimalen Cuts kontrahiert.
Beweis.
Betrachte N := cn2 ln n unabhängige Wiederholungen von
Randomisierter Kontraktion.
Theorem 107:
2
2
Prob (findet min. Cut) ≥ 1 − e −2(cn ln n)/n = 1 − e −2c ln n = 1 − n12c
Beweis.
Laufzeit O(Nn2 ) = O(n4 log n)
wie im Beweis von Theorem 107
Bemerkung Erfolgswahrscheinlichkeit ≥ 1 −
1
n2c
Prob (Randomisierte Kontraktion liefert V1 , V2 )
n−t
n−t
Y
Y
2
2
≥
1−
=
1−
ni
n−i +1
völlig akzeptabel
i=1
17
Beweis von Lemma 109
Algorithmus FastCut(G)
Prob (Randomisierte Kontraktion liefert V1 , V2 )
n−t
n−t
Y
Y
2
2
≥
1−
=
1−
ni
n−i +1
=
i=1
=
18
FastCut
wie im Beweis von Theorem 107
i=1
n−t
Y
i=1
Eingabe zusammenhängender gewichteter Graph G
˙ 2=V
Ausgabe Cut V1 ∪V
1. n := |V |
2. Falls n ≤ 6, dann
3.
Berechne min. Cut C .
4.
Ausgabe C . STOP
5. Sonst l
m
i=1
n−i −1
(n − 2) · (n − 3) · · · (t + 1) · t · (t − 1)
=
n−i +1
n · (n − 1) · (n − 2) · (n − 3) · · · (t + 1)
t · (t − 1)
n · (n − 1)
also Erfolgswahrscheinlichkeit sinkt vor allem am Ende
Idee Kontrahiere begrenzt randomisiert und
mache am Ende etwas Schlaues.
19
√n
2
6.
t := 1 +
7.
8.
9.
10.
11.
H1 := Randomisierte Kontraktion(G ), bis t Knoten übrig sind
H2 := Randomisierte Kontraktion(G ), bis t Knoten übrig sind
C1 := FastCut(H1 )
C2 := FastCut(H2 )
Vergleiche C1 und C2 , gib kleineren Cut aus.
20
Zum Algorithmus FastCut
Zur Laufzeit von FastCut
Merkwürdiger Algorithmus. . .
Lemma 110
Algorithmus FastCut hat eine Laufzeit von O(n2 log n).
Wie findet man minimalen Cut für n ≤ 6?
z. B. durch vollständiges Ausprobieren
Beweis.
Warum gerade Abbruch bei n ≤ 6?
Laufzeit von FastCut: T (n)
Laufzeit von Randomisierte Kontraktion: O(n2 ) Vereinfachung n2 /2
l
m
klar T (n) = 2 · T 1 + √n2 + n2 für n > 6
klar für n ≤ 6 T (n) = O(1) Vereinfachung 1
l
m
l
Wir betrachten n0 := n, n1 := 1 + √n02 , . . . , ni := 1 +
Ist die Laufzeit nicht sehr lang?
ni−1
√
2
m
gesamt n0 , n1 , . . . , nr = 6
Ist die Erfolgswahrscheinlichkeit denn jetzt viel besser?
21
Beweis von Lemma 110
l
√n
2
Beweis von Lemma 110 (Fortsetzung)
m
+ n2 für n > 6, T (n) = 1 sonst
l
m
n
, nr = 6
n0 , . . . , nr mit n0 = n, ni = 1 + √i−1
2
T (n) = 2 · T
1+
T (n) = O (r · 2r )
l
n0 , . . . , nr mit n0 = n, ni = 1 +
also
Behauptung q :=
T (n) = T (n0 ) = 2T (n1 ) + n02
= 4T (n2 ) + 2n12 + n02 = · · ·
r −1
X
r
= 2 T (6) +
2i ni2
2
ni+1
ni2
≥
√1 ,
2
ni ≤
2
1−q
ni−1
√
2
m
, nr = 6
+ n · qi
Beweis mit vollständiger Induktion
√
2
Induktionsanfang n0 ≤ 1−q
+n·1
Induktionsschritt
2q
+n·q i+1 =
ni+1 = d1 + ni · qe ≤ 2+ni ·q ≤ 2+ 1−q
i=0
Beobachtung
22
1
2
√
2
i+1
1−q +n·q
Wir suchen kleinstes i, so dass ni < 7.
2
Es genügt kleinstes i, so dass 1−q
+ n · q i < 7.
2
≤ · · · ≤ 2r · nr2 = 36 · 2r
also 2i · ni2 ≤ 2i+1 · ni+1
zusammen T (n) ≤ 2r · T (6) + r · (2r · 36) = O (r · 2r )
23
24
Beweis von Lemma 110 (Fortsetzung (2))
T (n) = O (r · 2r )
l
n0 , . . . , nr mit n0 = n, ni = 1 +
q :=
√1
2
= 2−1/2 , ni ≤
2
1−q
Lemma 111
Algorithmus FastCut liefert mit Wahrscheinlichkeit Ω(1/ log n)
einen minimalen Cut.
m
ni−1
√
, nr = 6
2
+ n · qi
Wir suchen kleinstes i, so dass
2
1−q
Erfolgswahrscheinlichkeit von FastCut
⇔
+ n · qi
n · qi
<
<
⇔
log(n) + i · log(q)
<
⇔
− 2i
<
⇔
i
>
2
1−q
Beweis.
+ n · q i < 7.
7
2
7 − 1−q
log 7 −
log 7 −
˙ 2 = V ein minimaler Cut.
Sei V1 ∪V
FastCut liefert min. Cut jedenfalls, wenn
in H1 = Randomisierte Kontraktion(G ) ist keine Kante aus V1 , V2
kontrahiert UND FastCut(H1 ) liefert min. Cut
ODER
in H2 = Randomisierte Kontraktion(G ) ist keine Kante aus V1 , V2
kontrahiert UND FastCut(H2 ) liefert min. Cut
2
1−q 2
1−q
− log(n)
2
2 log(n) − 2 log 7 − 1−q
also r ≤ 2 log(n) + 6
P(n) := Prob (FastCut liefert auf G mit n Knoten min. Cut)
also T (n) = O (2 log(n) + 6) · 22 log(n)+6 = O n2 log n
Prob (Hi enthält noch alle Kanten aus (V1 , V2 )) ≥
√
=
√
d1+n/ 2e·(d1+n/ 2e−1)
n·(n−1)
≥
t·(t−1)
n·(n−1)
1
2
26
25
Beweis von Lemma 111
Beweis von Lemma 111 (Fortsetzung (2))
P(n) := Prob (FastCut liefert auf G mit n Knoten min. Cut)
Prob (Hi enthält noch alle Kanten aus (V1 , V2 )) ≥ 12
Prob (FastCut(Hi ) liefert min. Cut für G ) ≥
1
2
· P(t)
Prob (FastCut(Hi ) liefert keinen min. Cut für G ) ≤ 1 −
1
2
· P(t)
2
Prob (FastCut(G ) liefert keinen min. Cut) ≤ 1 − 12 · P(t)
2
also Prob (FastCut(G ) liefert min. Cut) ≥ 1 − 1 − 12 · P(t)
Wir haben P(n) ≥ 1 − 1 −
1
2
p(r + 1) ≥ p(r ) −
p(0) = 1
Beobachtung f (x) = x −
Wir wollen zeigen p(i) ≥
2
· P(t) .
Übergang zur Anzahl der Iterationen r :
2
p(r + 1) ≥ 1 − 1 − 12 · p(r ) = p(r ) −
klar p(0) = 1
p(r )2
4 ,
p(r )2
4
27
x2
4 in [0; 1]
1
d ⇒ p(i +
streng monoton wachsend
1) ≥
Wir haben p(i + 1) ≥ f (p(i)) und p(i) ≥
1
f d1
≥ d+1
1
1
1
⇔
≥ d+1
d − 4d 2
⇔ d + 1 − d+1
≥ d
4d
⇔
1 ≥ d+1
4d
⇔
3d ≥ 1
⇔
d ≥ 31
1
d+1
1
d ⇒
f (p(i)) ≥ f (1/d).
28
Beweis von Lemma 111 (Fortsetzung (3))
Anwendung von FastCut
Prob (FastCut(G ) liefert min. Cut) = P(n) ≥ 1 − 1 −
bezogen auf Runden p(r + 1) ≥ p(r ) −
1
p(i) ≥ d1 ⇒ p(i + 1) ≥ d+1
also induktiv p(r ) ≥
1
r +1
p(r ) = Ω
p(r )2
4
1
r
1
2
Korollar 112
2
· P(t)
Für jedes ε > 0, findet man durch unabhängige Wiederholung von
Algorithmus FastCut in Zeit O(n2 log2 n) einen min. Cut mit
W’keit 1 − ε.
, p(0) = 1 und
Beweis.
Lemma 110 und Lemma 111: ∃c > 0: FastCut liefert in Zeit
O(n2 log n) mit W’keit ≥ logc n min. Cut
w
Prob (w Wiederholungen liefern keinen min. Cut) ≤ 1 − logc n
w
−w · logc n
1 − logc n
≤e
, also w ≥ − cln ε log n liefert
Prob (w Wiederholungen liefern min. Cut) ≥ 1 − ε
Wir wissen schon r = O(log n).
also P(n) = Ω log1 n
Wir finden also mit W’keit Ω(1/ log n) in Zeit O(n2 log n) einen
min. Cut.
30
29
Ein Random Walk
0
1
2
Analyse des Random Walk
3
4
5
6
7
8
Uns interessiert Wie lange dauert es, bis der Prozess stoppt?
9
Definition Ei =
erwartete Anzahl Schritte, bis Prozess stoppt, wenn in i gestartet
Random Walk
Aktuelle Position ist pos := i.
1. Falls pos = 0, STOP.
2. Falls pos = n, pos := n − 1.
3. Falls 0 < pos < n
4.
Mit Wahrscheinlichkeit 1/2, pos := pos − 1
Sonst pos := pos + 1
5. Weiter bei 1.
Theorem 113
Ei = i · (2n − i)
Beweis.
klar E0 = 0
First Step Analysis: Was passiert in einem Schritt und danach?
En = 1 + En−1 , weil bei Start in n ein Schritt gemacht wird, der zu
n − 1 führt und dann der Prozess wie in n − 1 gestartet ist
für i ∈ {1, . . . , n − 1} Ei = 1 + 12 · Ei−1 + 12 · Ei+1 , weil bei Start in
i ein Schritt gemacht wird, der mit W’keit jeweils 1/2 zu i − 1
oder i + 1 führt und dann der Prozess wie dort gestartet ist
Begriffe
I Zustand = pos
I Zustand n reflektierend
I Zustand 0 absorbierend
31
32
Beweis von Theorem 113
2SAT
E0 = 0
Problem 2SAT
En = 1 + En−1
1
1
Ei = 1 + Ei−1 + Ei+1
2
2
Eingabe
Ausgabe
Algorithmus 114
also 12 (Ei − Ei−1 ) = 12 (Ei+1 − Ei ) + 1
Definiere Di := Ei − Ei−1
und erhalte Dn = En − En−1 = 1 + En−1 − En−1 = 1
sowie Di = Di+1 + 2.
also Dn = 1, Dn−1 = 3, Dn−2 = 5, . . . , D1 = 2n − 1
1. a := (0, . . . , 0)
2. Für t ∈ {1, . . . , T }
3.
Falls a alle Klauseln erfüllt, Ausgabe a. STOP
4.
Wähle eine Klausel cj , die nicht erfüllt ist.
5.
Wähle zufällig gemäß Gleichverteilung ein Literal aus cj .
6.
Invertiere die zugehörige Stelle in a.
7. Ausgabe Es gibt vermutlich keine erfüllende Belegung.“
”
D1 + D2 + · · · + Di = (E1 − E0 ) + (E2 − E1 ) + · · · + (Ei − Ei−1 )
= Ei − E0 = Ei
i
i
P
P
also Ei =
Dj =
2n − 2j + 1 = 2ni + i − 2 i(i+1)
= i · (2n − i)
2
j=1
j=1
33
Analyse von Algorithmus 114
Theorem 115
Für eine erfüllbare 2SAT-Instanz findet Algorithmus 114 mit
T = ∞ im Erwartungswert in ≤ n2 Schleifendurchläufen eine
erfüllende Belegung.
Beweis.
Definition Für x, x 0 ∈ {0, 1}n heißt d(x, x 0 ) := |{i | xi 6= xi0 }|
Hamming-Abstand von x und x 0 .
Eingabe erfüllbar, sei a∗ eine erfüllende Belegung
Algorithmus 114 stoppt spätestens, wenn d(a, a∗ ) = 0 gilt.
Anfangs ist d(a, a∗ ) ≤ n.
Beobachtung Prob (d(a, a∗ ) wird in einer Runde größer) ≤
also Prob (d(a, a∗ ) wird in einer Runde kleiner) ≥ 12
Worst Case W’keit jeweils 1/2
Theorem 113
reduzierte Klauseln c1 , · · · cm der Länge 2 über x1 , . . . , xn
Belegung a ∈ {0, 1}n : a erfüllt alle cj
1
2
≤ n2 Runden
35
34
Herunterladen