Sie sind auf Seite 1von 46

DAP 2

Übung 11

Antonia Kalb

Last update: 4. Juli 2023


Landau-Symbole

f (n) ∈ O (g(n)) f (n) ∈ Ω (g(n))


f wächst höchstens so stark wie f wächst mindestens so stark wie
g (obere Schranke) g (untere Schranke)
∃c ∈ R+ , n0 ∈ N, sodass f (n) ≤ ∃c ∈ R+ und n0 ∈
c · g (n) ∀n ≥ n0 N, sodass c · g (n) ≤ f (n) ∀n ≥ n0
f (n) f (n)
limn→∞ g (n) < ∞ limn→∞ g (n) > 0

f (n) ∈ o (g(n)) f (n) ∈ Θ (g(n))


f wächst niemals stärker wie g f wächst entsprechend wie g
(obere Schranke, die nie erreicht (Gleichheit)
wird) ∃c1 , c2 ∈ R+ und n0 ∈
∀c ∈ R+ ∃n0 ∈ N, sodass f (n) < N, sodass c1 · g (n) ≤ f (n) ≤
c · g (n) c2 · g (n) ∀n ≥ n0
f (n) f (n)
limn→∞ g (n) = 0 0 < limn→∞ g (n) < ∞

Antonia Kalb DAP 2 Last update: 4. Juli 2023 1 / 45


Landau-Symbole
Zusammenhänge:
f (n) ∈ o (g(n)) =⇒ f (n) ∈ O (g(n))
f (n) ∈ Ω (g(n)) =⇒ f (n) ∉ o (g(n))
f (n) ∈ Θ(g(n)) ⇐⇒ f (n) ∈ O (g(n)) ∧ f (n) ∈ Ω (g(n))
f (n) ∈ Θ(g(n)) ⇐⇒ g(n) ∈ Θ(f (n))
f (n) ∈ O(g(n)) ⇐⇒ g(n) ∈ Ω(f (n))

Faustregeln:
Konstanten fallen weg
Beispiel: 5n = Θ(n)
Bei Polynomen „dominiert“ der höchste Exponent
Beispiel: 2n2 − n = Θ(n2 )

Antonia Kalb DAP 2 Last update: 4. Juli 2023 2 / 45


Landau-Symbole

Regel von l’ Hospital


f (n) f ′ (n)
lim = lim ′
n→∞ g(n) n→∞ g (n)

genau dann, wenn


limn→∞ f (n) = 0 und limn→∞ g(n) = 0, oder
limn→∞ f (n) = ∞ und limn→∞ g(n) = ∞

Antonia Kalb DAP 2 Last update: 4. Juli 2023 3 / 45


A.1 – Landau-Symbole
f (n) g(n) f (n) = O(g(n)) f (n) = o(g(n)) f (n) = Θ(g(n)) f (n) = Ω(g(n))
¡ 3n ¢
p1 nggT(39,21)
3n−3 2

à !
3n Binomialkoeffizienten
f (n) =
3n − 3 der Binomialkoeffizient “n
(3n)! über k ” ist definiert als
=
(3n − 3)! · (3n − (3n − 3))!
à !
n n!
(3n)! = (n ≥ k )
= k k ! · (n − k )!
(3n − 3)! · (3)!
(3n) · (3n − 1) · (3n − 2) · (3n − 3)! für
¡n¢ k > n definieren wir
=
(3n − 3)! · (3 · 2 · 1) k =0
(3n) · (3n − 1) · (3n − 2) Anzahl der k -elementigen
= Teilmengen einer
6
1 n-elementigen Menge
= n · (3n − 1) · (3n − 2)
2

Antonia Kalb DAP 2 Last update: 4. Juli 2023 4 / 45


A.1 – Landau-Symbole
f (n) g(n) f (n) = O(g(n)) f (n) = o(g(n)) f (n) = Θ(g(n)) f (n) = Ω(g(n))
¡ 3n ¢
p1 nggT(39,21)
3n−3 2

ggT(21, 39)

Euclid(a, b) 39 = 1 · 21 + 18
1 falls a < b, vertausche a 21 = 1 · 18 + 3
und b 18 = 6 · 3 + 0
2 setze a0 = a, a1 = b, i = 1
Tipp: Primfaktorzerlegung
3 solange ai > 0
21 = 3 · 7 =⇒ 21 ist hat ausschließlich
4 berechne qi ∈ Z, die Teiler 1,3, 7 und 21
ai +1 ∈ {0, 1, . . . , ai }, so dass 39 ist nicht durch 7 teilbar, aber durch 3
ai −1 = qi ai + ai +1 g(n) = p1 n3
2
5 erhöhe i um 1
6 gib ai −1 aus

Antonia Kalb DAP 2 Last update: 4. Juli 2023 5 / 45


A.1 – Landau-Symbole
f (n) g(n) f (n) = O(g(n)) f (n) = o(g(n)) f (n) = Θ(g(n)) f (n) = Ω(g(n))
1 p1
2 n · (3n − 1) · (3n − 2) n3 ✓ ✓ ✓
2

1
2 n · (3n − 1) · (3n − 2)
lim
n→∞ p1 n3
2
p
2 n · (3n − 1) · (3n − 2)
= lim
2 n→∞ n3
p
2 9n + 3n2 + 6n
3
= lim
2 n→∞ n3
p
2 9n 3 3n2 6n
= lim 3 + 3 + 3
2 n→∞ n n n
p
2 3 6
= lim 9 + + 2
2 n→∞ n n
p
2
= 9
2
Antonia Kalb DAP 2 Last update: 4. Juli 2023 6 / 45
A.1 – Landau-Symbole
f (n) g(n) f (n) = O(g(n)) f (n) = o(g(n)) f (n) = Θ(g(n)) f (n) = Ω(g(n))
Pn Pn ¡n¢
i =1 i log(log( i =0 i (2e)i (−e)n−i )) ✓ ✓ ✓

Pn
f (n) = i =1 i = Hn (Harmonische Reihe)

à ! Binomischer Lehrsatz
n n
g(n) = log(log(
X
(2e)i (−e)n−i )) Für alle a, b ∈ R und alle n ∈ N
i =0 i gilt
à !
n n
n
ak bn−k
X
(a + b) =
= log(log(((2e) + (−e))n )) = log(log(en )) k =0 k
= log(n · log(e)) = log(n · 1)
Logarithmusgesetze:
= log(n)
log (r s ) = s · loga (r )
Nach Vorlesung: Hn = O(1) + log n loga (a) = 1

Antonia Kalb DAP 2 Last update: 4. Juli 2023 7 / 45


A.1 – Landau-Symbole

f (n) g(n) f (n) = O(g(n)) f (n) = o(g(n)) f (n) = Θ(g(n)) f (n) = Ω(g(n))

e−n sin( nn−21 ) ✓ ✓

Potenzgesetze: a−r = a1r


1
Ableitungsregeln:
e−n d a a−1
lim = lim en dx x = a · x
n→∞ sin( n−1 ) n→∞ sin( 1 − 1 ) d −x
n2 n n2 dx e = −e−x
[f (g(x))]′ = f ′ (g(x)) · g ′ (x)
sin(0) = 0 (Kettenregel)
limn→∞ sin( n1 − n12 ) = 0 d
dx sin(x) = cos(x)

e−n LH −e−n
lim = limn→∞
n→∞ sin(n−1 − n−2 ) cos(n−1 − n−2 ) · (−1 · n−2 − (−2) · n−3 )
n3 e−n
= lim =0
n→∞ (n − 2)cos( n−1 )
n2

Antonia Kalb DAP 2 Last update: 4. Juli 2023 8 / 45


A.1 – Landau-Symbole
f (n) g(n) f (n) = O(g(n)) f (n) = o(g(n)) f (n) = Θ(g(n)) f (n) = Ω(g(n))
R pn
log(n!) 1
log(x)dx

f (n) = log(n!) Stirlingformel


p ¡ n ¢n
p n Es gilt n! ∼ 2πn
= log( 2πn( )n ) e
e
p
= log( 2πn) + n · log(n) − n · log(e) Potenzgesetze:
¡ a ¢r r
p 1 b = bar
= log( 2π) · log(n 2 ) + n · log(n) − n Logarithmusgesetze:
p
log( 2π) ¡ ·¢s) = loga (r ) + loga (s)
log(r
= · log(n) + n · log(n) − n log sr = loga (r ) − loga (s)
2
log (r s ) = s · loga (r )
loga (a) = 1

Antonia Kalb DAP 2 Last update: 4. Juli 2023 9 / 45


A.1 – Landau-Symbole
f (n) g(n) f (n) = O(g(n)) f (n) = o(g(n)) f (n) = Θ(g(n)) f (n) = Ω(g(n))
R pn
log(n!) 1
log(x)dx

Integrationsregeln:
R
p log(x)dx = x(log(x) − 1)
Z n
g(n) = log(x)dx Logarithmusgesetze:
1 loga (1) = 0, a ̸= 1
p
=
1
n · (log(n 2 ) − 1) − (1 · (log(1) − 1)) log (r s ) = s · loga (r )
p 1
= n · ( log(n) − 1) + 1
2
1p
= n(log(n) − 2) + 1
2

Antonia Kalb DAP 2 Last update: 4. Juli 2023 10 / 45


A.1 – Landau-Symbole
f (n) g(n) f (n) = O(g(n)) f (n) = o(g(n)) f (n) = Θ(g(n)) f (n) = Ω(g(n))
R pn
log(n!) 1
log(x)dx ✓

p
log( 2π) p
2 · log(n) + n · log(n) − n log( 2π) · log(n) + n · log(n) − n
= p p
1p n log(n) − 2 n + 1
2 n(log(n) − 2) + 1

Ganz grob:
n log(n) p
lim p = lim n = ∞
n→∞ n log(n) n →∞

Antonia Kalb DAP 2 Last update: 4. Juli 2023 11 / 45


A.2 – Arithmetik
Finden Sie die kleinsten Zahlen v , w , x , y ∈ N, sodass gilt:

788 ≡ v mod 89
544 ≡ w mod 43
55 · x ≡ 1 mod 89
144 · y ≡ 1 mod 233

Antonia Kalb DAP 2 Last update: 4. Juli 2023 12 / 45


A.2 – Arithmetik

Teilbarkeit
Seien x , y ∈ Z, x ̸= 0
y mod x ist der Divisionsrest
x teilt y , falls y mod x = 0, Notation: x | y

Kongruenz
x ≡ y mod m ⇐⇒ m | x − y ⇐⇒ ∃k ∈ Z : km = x − y

Regeln
x ≡ y mod m und x ′ ≡ y ′ mod m
=⇒ x + x ′ ≡ y + y ′ mod m und x · x ′ ≡ y · y ′ mod m
x ≡ y mod m und n | m =⇒ x ≡ y mod n
ggt(m, n) = 1, x ≡ y mod m und x ≡ y mod n =⇒ x ≡ y mod m · n
ggt(m, n) = 1 =⇒ ∀x , y ∈ Z ∃z ∈ Z z ≡ x mod m und z ≡ y mod n
Antonia Kalb DAP 2 Last update: 4. Juli 2023 13 / 45
A.2 – Arithmetik
788 ≡ v mod 89

Schnelles Potenzieren 88 = 26 + 24 + 23
k = 6, ℓ6 = ℓ4 = ℓ3 = 1,
Gegeben: x ∈ Z, ℓ, m ∈ N
ℓ 5 = ℓ 2 = ℓ 1 = ℓ0 = 0
Gesucht: z ∈ Z mit x ℓ ≡ z mod m
y0 ≡ 7 mod 89, y1 ≡ 72 ≡ 49
1 ℓk . . . ℓ1 ℓ0 = Dual-Darstellung
mod 89, y2 ≡ 492 ≡ 87
von ℓ
mod 89, y3 ≡ 872 ≡ 4
2 y0 = x mod m (= Divisonsrest) mod 89, y4 ≡ 42 ≡ 16
3 Für i = 1, . . . , k : mod 89, y5 ≡ 162 ≡ 78
4 yi = yi2−1 mod m mod 89, y6 ≡ 782 ≡ 32 mod 89
5 z0 = 1 Folge der z-Werte:
l l l
6 Für i = 0, . . . , k : z0 = 1 · y00 = 70 = 1, 1 · y11 = 1, 1 · y22 =
l l
7 zi +1 = zi · yi
ℓi
mod m 1, 1 · y33 = 4, 4 · y44 = 4 · 161 =
l l
64, 64 · y55 = 64, 64 · y55 = 64 · 32
8 Gib zk +1 aus
mod 89 = 1
⇒v =1
Antonia Kalb DAP 2 Last update: 4. Juli 2023 14 / 45
A.2 – Arithmetik
788 ≡ v mod 89
Alternativer Lösungsweg:

kleiner Satz von Fermat


Wenn a ganzzahlig und p eine Primzahl ist,

ap ≡ a (mod p)

Falls zusätzlich a kein Vielfaches von p ist,

ap−1 ≡ 1 (mod p)

p = 89 ist eine Primzahl


a = 7 ist kein Vielfaches von 89
p − 1 = 88
=⇒ v = 1

Antonia Kalb DAP 2 Last update: 4. Juli 2023 15 / 45


A.2 – Arithmetik

544 ≡ w mod 43
⇐⇒ 5 · 543 ≡ w mod 43
43 w
⇐⇒ 5 ≡ mod 43
5

kleiner Satz von Fermat


Wenn a ganzzahlig und p eine Primzahl ist,

ap ≡ a (mod p)

p = 43 ist eine Primzahl


a = 5 ist ganzzahlig
=⇒ w5 = 5 ⇐⇒ w = 25

Antonia Kalb DAP 2 Last update: 4. Juli 2023 16 / 45


A.2 – Arithmetik
55 · x ≡ 1 mod 89 ⇐⇒ 1 = 89 · k + 55 · x
Euklid: Rückrechnen liefert:

89 = 1 · 55 + 34 1 = 1·1+0·2
55 = 1 · 34 + 21 1 = −1 · 2 + 1 · 3
34 = 1 · 21 + 13 1 = 2 · 3 + −1 · 5
21 = 1 · 13 + 8 1 = −3 · 5 + 2 · 8
13 = 1 · 8 + 5 1 = 5 · 8 + −3 · 13
8 = 1·5+3 1 = −8 · 13 + 5 · 21
5 = 1·3+2 1 = 13 · 21 + −8 · 34
3 = 1·2+1 1 = −21 · 34 + 13 · 55
2 = 2·1+0 1 = 34 · 55 + −21 · 89

⇒ x = 34

Antonia Kalb DAP 2 Last update: 4. Juli 2023 17 / 45


A.2 – Arithmetik
144 · y ≡ 1 mod 233 ⇐⇒ 1 = 233 · k + 144 · y
Euklid: Rückrechnen liefert:

233 = 1 · 144 + 89 1 = 1·1+0·2


144 = 1 · 89 + 55 1 = −1 · 2 + 1 · 3
89 = 1 · 55 + 34 1 = 2 · 3 + −1 · 5
55 = 1 · 34 + 21 1 = −3 · 5 + 2 · 8
34 = 1 · 21 + 13 1 = 5 · 8 + −3 · 13
21 = 1 · 13 + 8 1 = −8 · 13 + 5 · 21
13 = 1 · 8 + 5 1 = 13 · 21 + −8 · 34
8 = 1·5+3 1 = −21 · 34 + 13 · 55
5 = 1·3+2 1 = 34 · 55 + −21 · 89
3 = 1·2+1 1 = −55 · 89 + 34 · 144
2 = 2·1+0 1 = 89 · 144 + −55 · 233

⇒ v = 89
Antonia Kalb DAP 2 Last update: 4. Juli 2023 18 / 45
A.3 – Grapheigenschaften
Bestimmen Sie für den nachfolgenden Graphen G die folgenden Werte:
α(G) ω(G) χ(G) ∆(G)

Antonia Kalb DAP 2 Last update: 4. Juli 2023 19 / 45


A.3 – maximaler Grad
G ist 4-regulär (=jeder Knoten hat
Grad 4)
∆(G) = 4

∆(G)
∆(G) = maxv ∈ V dG (v ) =
Maximalgrad von G

Antonia Kalb DAP 2 Last update: 4. Juli 2023 20 / 45


A.3 – Clique

Clique
Eine ℓ-Clique in einem Graphen
G = (V , E) ist eine Menge S ⊆ V von
|S | = ℓ Knoten, so daß

uv ∈ E für alle u , v ∈ S , u ̸= v .

Eine ℓ-Clique ist eine Kopie von Kℓ in


G.
G enthält kein K3 (3-Clique)
ω(G) = 2
ω(G)
Cliquenzahl von G

ω(G) = max{|S | : S ist eine Clique}

Antonia Kalb DAP 2 Last update: 4. Juli 2023 21 / 45


A.3 – stabile Menge

stabile Menge Komplementär Graph


Eine ℓ-stabile Menge in einem Der komplementäre Graph von einem
Graphen G = (V , E) ist eine Menge Graphen G = (V , E) ist der Graph
S ⊆ V von |S | = ℓ Knoten, so daß G = (V , E) mit

uv ̸∈ E für alle u , v ∈ S . uv ∈ E ⇐⇒ uv ̸∈ E für alle u , v ∈ V .


Eine ℓ-stabile Menge ist eine Kopie
von Kℓ in G. S ⊆ V ist eine stabile Menge in G
⇐⇒
α(G) S ist eine Clique in G

α(G) = max{|S | : S ist stabile Menge}

Antonia Kalb DAP 2 Last update: 4. Juli 2023 22 / 45


A.3 – stabile Menge

stabile Menge
Eine ℓ-stabile Menge in einem
Graphen G = (V , E) ist eine Menge
S ⊆ V von |S | = ℓ Knoten, so daß

uv ̸∈ E für alle u , v ∈ S .

Eine ℓ-stabile Menge ist eine Kopie


von K ℓ in G.

Durch die „Symmetrie“ des Graphen


ist es egal, in welchen Punkt wir
α(G) anfangen.
Die Stabilitätszahl von G Durch Probieren erhält man maximal 7
ª nicht-benachbarte Knoten
α(G) = max |S | : S ist stabile Menge
©
α(G) = 7

Antonia Kalb DAP 2 Last update: 4. Juli 2023 23 / 45


A.3 –Graphfärbung

Knotenfärbung
Eine zulässige Knotenfärbung ist eine
Funktion φ : V → N, sodass (u , v ) ∈ E
=⇒ φ(u) ̸= φ(v ) für alle u , v ∈ V
Zwei benachbarte Knoten haben
immer verschiedene Farben.

χ(G)
Die chromatische Zahl ist die
minimale Anzahl an Farben für
eine zulässige Knotenfärbung

Antonia Kalb DAP 2 Last update: 4. Juli 2023 24 / 45


A.3 – Graphfärbung
Untere und obere Schranken für die chromatische Zahl

Greedy Graphfärbung
1 für jeden Knoten v ∈ V
2 Färbe v in der kleinste Farbe, die kein Nachbar von v hat
(Farben durchnummeriert; Farben 1 bis |V | zur Verfügung)

Antonia Kalb DAP 2 Last update: 4. Juli 2023 25 / 45


A.3 – Graphfärbung

Untere Schranken:
Ï χ(G) ≥ ω(G) = 2
Ï χ(G) > 2, da ∃ ungerader Kreis
l m
|V |
Ï χ(G) ≥ = ⌈ 21
7 ⌉=3
α(G)
Obere Schranken:
Ï χ(G) ≤ ∆(G) + 1 = 4 + 1 = 5
q
8|E (G)|+1
Ï χ(G) ≤ 1
2
+ 2
=
q
1
1 + 8·( 2 ·4·12)+1 ≈ 7
2 2

Handshaking Lemma
χ(G)
G k -regulär =⇒ |E(G)| = 12 · k · |V (G)|
Die chromatische Zahl ist die
minimale Anzahl an Farben für
eine zulässige Knotenfärbung

Antonia Kalb DAP 2 Last update: 4. Juli 2023 26 / 45


A.3 – Graphfärbung

Beginne bei x = 3
Gib entweder x-Färbung an, oder
beweise, dass es keine x-Färbung
gibt und wiederhole mit x = x + 1
Es gibt in jedem Fall eine
5-Färbung (Greedy anwenden)

Durch systematisches Austesten


finden wir heraus, dass es keine
3-Färbung gibt.
χ(G) Es gibt eine 4-Färbung.
Die chromatische Zahl ist die Es gilt χ(G) = 4.
minimale Anzahl an Farben für
eine zulässige Knotenfärbung

Antonia Kalb DAP 2 Last update: 4. Juli 2023 27 / 45


A.4 – Travelling salesman problem

8 6

8 4 13 2

9 4

Führen Sie den BHK Algorithmus aus um die kürzeste TSP-Tour des Graphen
zu finden. Wählen Sie den Knoten 1 als Startknoten. Füllen Sie dazu die
folgende Tabelle mit den jeweiligen Werten für T (u , U) aus. Geben Sie am
Ende die Länge der optimalen TSP-Tour sowie dessen Weg aus.

Antonia Kalb DAP 2 Last update: 4. Juli 2023 28 / 45


A.4 – Travelling salesman problem

Gegeben: gewichteter vollständiger Graph G, w auf n Knoten


Ziel: eine kürzeste Tour (=Summe der Kantengewichte minimal), die
jeden Knoten genau einmal besucht
keine Dreiecksungleichung!
Laufzeitschranken:
kein effizienter Algorithmus (=polynomieller, O(nc )) bekannt!
Insbesondere: bisher keine untere Laufzeitschranke bewiesen
naiver Algorithmus (= alle durchtesten) ∈ Ω(nn+o(n) )
Bellmann-Held-Karp-Algorithmus ∈ O(2n+o(n) )

Antonia Kalb DAP 2 Last update: 4. Juli 2023 29 / 45


A.4 – Travelling salesman problem
Bellmann-Held-Karp-Algorithmus
Tabelleneintrag T (u , U) = Länge eines kürzesten Pfades, der in
Startknoten s startet, alle Knoten aus U besucht und in u endet
(
w({s, u }), wenn U = ;
T (u , U) =
minv ∈U {T (v , U \ {v }) + w({u , v })}, sonst

BHK(G, w)
1 Wähle Startknoten s
2 Für alle u ∈ V (G) \ {s} setze T (u , ;) = w({s, u })
3 Für N = 1, . . . , n − 2
4 Für alle u ∈ V (G) \ {s}
5 Für alle U ⊆ V (G) \ {u , s} mit |U | = N
6 T (u , U) = minv ∈U T (v , U \ {v }) + w({u , v })
7 Return minu ∈V (G)\{s} T (u , V (G) \ {u , s}) + w({u , s})

Antonia Kalb DAP 2 Last update: 4. Juli 2023 30 / 45


A.4 – Travelling salesman problem
N u U
1
;
2 6
0
8 6
3 8
4 8
8 4 13 2
{2} {3} {4}
2 x 8+ 4 = 12 8+ 13 = 21
1
9 4
3 6 + 4 = 10 x 8 + 9 = 17
4 6 + 13 = 19 8+ 9 = 17 x
3
{2, 3} {2, 4} {3, 4}
2 x x 8 + 9 + 4 = 21
2
3 x 8+ 13 + 4 = 25 x
Start s = 1 4 6 + 4 + 9 = 19 x x

Länge der optimalen TSP-Tour: min{19 + 8 = 27, 25 + 8 = 33, 21 + 6 = 27}


Pfad der optimalen TSP-Tour: 1 → 2 → 3 → 4 → 1 oder 1 → 4 → 3 → 2 → 1

Antonia Kalb DAP 2 Last update: 4. Juli 2023 31 / 45


A.5 – Rekurrenzen
Berechnen Sie die Größenordnung der Rekurrenzen.
p p
a) T (n) = nT ( n) + n
b) T (n) = 16T ( n4 ) + n!
c)
(p p
2T ( n2 ) + n, n>1
T (n) =
1, n=1

d)
(
T (n − 1) + 2n, ∀n > 1
T (n) =
10, n = 1

Antonia Kalb DAP 2 Last update: 4. Juli 2023 32 / 45


A.5 – Rekurrenzen
Laufzeitanalyse: ( ¡n¢
a·T b + f (n) für n > 1
T (n) =
Θ(1) für n = 1
a · T bn = Zeit zum Lösen der Teilprobleme
¡ ¢

f (n) = Zeit zum Zusammenfügen der Teillösungen


a = Anzahl der Teilprobleme
n
b = Größe eines Teilproblems
Master-Theorem :
Wenn a ≥ 1, b > 1, dann



Θ(nlogb a ) falls f (n) = O(nlogb (a)−ϵ ) für ein ϵ > 0
logb a logk +1 n) falls f (n) = Θ(nlogb a logk n) für ein k ≥ 0
Θ(n




T (n) = Θ(f (n)) falls f (n) = Ω(nlogb a+ϵ ) für ein ϵ > 0 und

falls außerdem Zahlen c < 1, x0 > 0 existieren,






 so dass af (n/b) ≤ cf (n) für alle n > n0

Antonia Kalb DAP 2 Last update: 4. Juli 2023 33 / 45


A.5 – Rekurrenzen
Laufzeitanalyse: ( ¡n¢
a·T b + f (n) für n > 1
T (n) =
Θ(1) für n = 1
a · T bn = Zeit zum Lösen der Teilprobleme
¡ ¢

f (n) = Zeit zum Zusammenfügen der Teillösungen


a = Anzahl der Teilprobleme
n
b = Größe eines Teilproblems

Master-Theorem (vereinfacht):
Wenn a ≥ 1, b > 1, f (n) = Θ(nk ), k ≥ 0, dann
k falls a < bk
Θ(n )


T (n) = Θ(nk log n) falls a = bk

Θ(nlogb a ) falls a > bk

Antonia Kalb DAP 2 Last update: 4. Juli 2023 34 / 45


A.5 – Rekurrenzen

p p Master-Theorem (vereinfacht):
T (n) = nT ( n) + n Wenn
a ≥ 1, b > 1, f (n) = Θ(nk ), k ≥ 0,
Substitution:
p dann
n = 2p , n = 2p/2 , p = log n
T (2p ) = 2p/2 T (2p/2 ) + 2p k falls a < bk
Θ(n )

p

Teile durch 2 :
T (2p ) T (2p/2 ) T (n) = Θ(nk log n) falls a = bk
= + 1 
Θ(nlogb a )
p
2 p/2
falls a > bk

2
Substitution:
T (2p )
m(p) = 2p
m(p) = m(p/2) + 1
Master’s Theorem a = 1, b = 2, f (p) = 1 = Θ(p0 ), k = 0, (bk = 20 = 1 = a)
m(p) = Θ(p0 log p) = Θ(log p)
Resubstituieren:
T (2p )
m(p) = = Θ(log p)
2p
T (2p ) = Θ(2p · log p)
T (n) = Θ(n · log(log n))
Antonia Kalb DAP 2 Last update: 4. Juli 2023 35 / 45
A.5 – Rekurrenzen
T (n) = a · T bn + f (n)
¡ ¢
n
T (n) = 16T ( ) + n! Wenn a ≥ 1, b > 1, dann
4 T (n) =
a = 16, b = 4, (log4 (16) = 2) 
Θ(nlogb a )
f (n) = n! = Ω(n2+ϵ )


falls ∃ϵ > 0 f (n) = O(nlogb (a)−ϵ );





Θ(nlogb a logk +1 n)


T (n) = Θ(n!)




falls ∃k ≥ 0 f (n) = Θ(nlogb a logk n);



 Θ(f (n))
falls ∃ϵ > 0 f (n) = Ω(nlogb a+ϵ )






und ∃c < 1, x0 > 0, so dass





af (n/b) ≤ cf (n) ∀ n > n0

Antonia Kalb DAP 2 Last update: 4. Juli 2023 36 / 45


A.5 – Rekurrenzen
T (n) = a · T bn + f (n)
¡ ¢

(p p Wenn a ≥ 1, b > 1, dann


2T ( n2 ) + n, n>1 T (n) =
T (n) =
1, n=1 Θ(nlogb a )



falls ∃ϵ > 0 f (n) = O(nlogb (a)−ϵ );

p p


a = 2, b = 2 (log2 ( 2) = 21 )


Θ(nlogb a logk +1 n)



1 1

f (n) = n 2 = Θ(n 2 log0 (n)) (k=0)


falls ∃k ≥ 0 f (n) = Θ(nlogb a logk n);

p
T (n) = Θ( n log n) 

 Θ(f (n))
falls ∃ϵ > 0 f (n) = Ω(nlogb a+ϵ )






und ∃c < 1, x0 > 0, so dass





af (n/b) ≤ cf (n) ∀ n > n0

Antonia Kalb DAP 2 Last update: 4. Juli 2023 37 / 45


A.5 – Rekurrenzen
(
T (n − 1) + 2n, ∀n > 1
T (n) =
10, n = 1
Master-Theorem nicht anwendbar
T (n) = T (n − 1) + 2(n − 1)
= (T (n − 2) + 2(n − 2)) + 2(n − 1)
= ((T (n − 3) + 2(n − 3)) + 2(n − 2)) + 2(n − 1)
k =X
n−1
= T (n − (n − 1)) + 2(n − k )
k =1
k =X
n−1 k =X
n−1 k =X
n−1
= T (1) + 2n − k = 10 + (n − 1)2n − k
k =1 k =1 k =1
1 1 1
= 10 + (n − 1)2n − (n − 1)n = 10 + 2n2 − 2n − n2 + n
2 2 2
= Θ(n2 ) („bei Polynomen dominiert der höchste Exponent“)
= 12 n(n + 1) (Arithmetische Summenformel)
Pk =n
k =1 k
Antonia Kalb DAP 2 Last update: 4. Juli 2023 38 / 45
A.6 – Heaps

Heaps
ein Heap ist eine Datenstruktur in Form eines gewurzelten Baums
die Knoten sind von 1 bis n durchnumeriert
Knoten 1 ist die Wurzel
die Kinder von Knoten i sind 2i und 2i + 1, falls diese Werte ≤ n sind
jeder Knoten hat also höchstens zwei Kinder
der Elternknoten von Knoten i ≥ 2 ist der Knoten ⌊i/2⌋

Beispiel
ein Heap mit 6 Knoten
Knoten 1 ist der Wurzelknoten 1
Als Array: A = [1, 2, 3, 4, 5, 6]
2 3

4 5 6

Antonia Kalb DAP 2 Last update: 4. Juli 2023 39 / 45


A.6 – Heaps

Max-Heaps (und Min-Heaps)


in den Knoten des Heaps speichern wir vergleichbare Werte
ein Max-Heap hat die Eigenschaft, daß der Wert eines Kindknotens
niemals größer ist als der Wert des Elternknotens
ein Min-Heap hat die Eigenschaft, daß der Wert eines Kindknotens
niemals kleiner ist als der Wert des Elternknotens
wir befassen uns im folgenden nur mit Max-Heaps

Antonia Kalb DAP 2 Last update: 4. Juli 2023 40 / 45


A.6 – Heaps
a) In einem komplettem Min-Heap werden die Zahlen 1, 2, 3 . . . 1023 in
beliebiger Reihenfolge eingefügt. Bestimmen Sie die maximale Tiefe des
Wertes 9 (wobei die Wurzel Tiefe 0 hat):

1
2 ...

3 ...

4 ...

5 ...
Tiefe: 8
6 ...

7 ...

8 ...

9 ...

Antonia Kalb DAP 2 Last update: 4. Juli 2023 41 / 45


A.6 – Heaps
b) In einem komplettem Min-Heap werden die Zahlen 1, 2, 3 . . . 1023 in
beliebiger Reihenfolge eingefügt. Bestimmen Sie die minimale Tiefe des
Wertes 9 (wobei die Wurzel Tiefe 0 hat):

1
2 9
Tiefe: 1
... ... ... ...

Antonia Kalb DAP 2 Last update: 4. Juli 2023 42 / 45


A.6 – Quicksort
c) Betrachten Sie Quicksort auf einem Array mit n verschiedenen Elementen.
Wie groß ist die Wahrscheinlichkeit, dass ein Vergleich zwischen dem
kleinsten und dem größten Element des Arrays stattfindet?

Algorithmus Quicksort Sei k das kleinste Element und g das Größte


1 for all i = 1, . . . , n Wenn k in K und g in G landet, werden sie nie
2 if ℓi < ℓ1 , add ℓi to K miteinander verglichen
3 if ℓi > ℓ1 , add ℓi to G
Es wird ausschließlich Pivot mit allen Elementen
4 if ℓi = ℓ1 , add ℓi to M
verglichen
5 If |K | > 1, Quicksort(K )
6 If |G| > 1, Quicksort(G) k und g werden nur verglichen, wenn eines von
7 return K , M , G beiden im ersten Aufruf das Pivot ist
Whk., dass k an Position 1 ist = P(a1 = k ) = n1 ,
P(a1 = g) = n1
Whk., dass k und g verglichen=
P(a1 = k ∨ a1 = g) = n1 + n1 = Θ( n1 )

Antonia Kalb DAP 2 Last update: 4. Juli 2023 43 / 45


d) Betrachte ein Array (1, n, 2, n − 1, . . . , n, 1) der Länge 2n. Was ist die
asymptotische Laufzeit des Arrays bei Quicksort?

Algorithmus Quicksort [1, n, 2, n − 1, . . . , n, 1]


1 for all i = 1, . . . , n
2 if ℓi < ℓ1 , add ℓi to K
3 if ℓi > ℓ1 , add ℓi to G
K = [] M = [1, 1] G = [n, 2, n − 1, . . . , n]
4 if ℓi = ℓ1 , add ℓi to M
5 If |K | > 1, Quicksort(K ) K = [2, n − 1, . . . , 2] M = [n, n] G = []
6 If |G| > 1, Quicksort(G)
7 return K , M , G
...
Pro Schritt 2 Elemente nach M, ansonsten alle in K bzw. G
n n(n + 1)
= 2n2 − (n2 + n) = n2 − n = Θ(n2 )
X
(2n − 2i) = 2n · n − 2 ·
i =1 2

Antonia Kalb DAP 2 Last update: 4. Juli 2023 44 / 45


Quellen
DAP2 Sommersemester 2023 von A. Coja-Oghlan:
Musterlösung im Moodle Kurs: https:
//moodle.tu-dortmund.de/course/view.php?id=39150
Veranstaltungsseite:
https://ls2-web.cs.tu-dortmund.de/~mamicoja/dap2.pdf
Vorjahre:
DAP2 SS22 von A. Coja-Oghlan
DAP2 SS19 von M. Buchin, https:
//moodle.tu-dortmund.de/course/view.php?id=14402
DAP2 SS16 von C. Sohler
DAP2 SS16 - Repetitorium von B. Bollig,
https://ls2-www.cs.tu-dortmund.de/grav/de/grav_files/
people/bollig/RepDAP2
Vorlesungsergänzendes Material:
Cormen, Leiserson, Rivest, Stein: „Algorithmen - eine Einführung“

Antonia Kalb DAP 2 Last update: 4. Juli 2023 45 / 45

Das könnte Ihnen auch gefallen