Erinnerung VL 29.06.2016

Werbung
Erinnerung VL 29.06.2016
I Wichtige Eigenschaften von MSTs (Schnitt-/Kreiseigenschaft)
I Jarník-Prim-Algorithmus für MSTs
I Idee Kruskal-Algorithmus
I
Heute:
I Union-Find-Datenstruktur (für Kruskals Algorithmus)
I
Ackermann-Funktion (in der Analyse)
I Neues Kapitel: Optimierung
KIT Institut für Theoretische Informatik
1
Kruskals Algorithmus
// subforest of the MST
foreach (u, v ) ∈ E in ascending order of weight do
if u and v are in different subtrees of (V , T ) then
T := T ∪ {(u, v )}
// Join two subtrees
return T
T := 0/
a
7
9
6
c 3
4
b
2
d
7
b
9
2
6
c 3 d
4
a
7
b
9
2
6
c 3 d
4
a
7
b
9
2
6
c 3 d
4
a
KIT Institut für Theoretische Informatik
2
Kruskals Algorithmus Korrektheit
// subforest of the MST
foreach (u, v ) ∈ E in ascending order of weight do
if u and v are in different subtrees of (V , T ) then
T := T ∪ {(u, v )}
// Join two subtrees
return T
T := 0/
Fall u, v in verschiedenen Teilbäumen:
=⇒ (u, v ) ist leichteste
=⇒ (u, v ) ∈ MST
Kante im cut(Komponente(u), V
Sonst:
=⇒ (u, v ) ist schwerste
=⇒ (u, v ) 6∈ MST
benutze Schnitteigenschaft
\ Komponente(u))
benutze Kreiseigenschaft
Kante im Kreis
hu, v , v u -Pfad
in
Ti
KIT Institut für Theoretische Informatik
3
Union-Find Datenstruktur
=⇒
Wir brauchen eine eziente Methode für
Verbindet die Kante verschiedene Teilbäume?
KIT Institut für Theoretische Informatik
4
Union-Find Datenstruktur
=⇒
Wir brauchen eine eziente Methode für
Verbindet die Kante verschiedene Teilbäume?
Verwalte Partition der Menge 1..n,
d. h., Mengen (Blöcke)
M1 ,. . . ,Mk
mit
M1 ∪ · · · ∪ Mk = 1..n,
∀i 6= j : Mi ∩ Mj = 0/
Class UnionFind(n : N)
Procedure union(i, j : 1..n)
join the blocks containing
i
and
j
to a single block.
Function nd(i : 1..n) : 1..n
return a unique identier
for the block containing
i.
KIT Institut für Theoretische Informatik
4
Union-Find Datenstruktur Erste Version
KIT Institut für Theoretische Informatik
5
Union-Find Datenstruktur Erste Version
KIT Institut für Theoretische Informatik
5
Union-Find Datenstruktur Erste Version
Analyse
+:
union braucht konstante Zeit
−:
nd braucht Zeit
Θ(n)
im schlechtesten Fall!
Zu langsam!
Idee:
nd-Pfade kurz halten
i parent[i]
..
KIT Institut für Theoretische Informatik
6
Pfadkompression
Class
UnionFind(n
: N)
parent=h1, 2, . . . , ni : Array [1..n] of 1..n
Function nd(i : 1..n) : 1..n
if parent[i] = i then return i
else i 0 := nd(parent[i ])
parent[i]
return i 0
:= i 0
...
1 2
n
i’
// ..
.
parent[i]
i
KIT Institut für Theoretische Informatik
7
Union by Rank
Class
UnionFind(n
: N)
parent=h1, 2, . . . , ni : Array [1..n] of 1..n
rank=h0, . . . , 0i
...
1 2
: Array [1..n] of 0.. log n
n
Procedure link(i, j : 1..n)
assert i and j are representatives of different blocks
if rank[i] < rank[j] then parent[i] := j
i2
3
i
2
else
parent[j]
:= i
if rank[i] = rank[j] then
rank[i]++
2
j
i
j
i
3
3
KIT Institut für Theoretische Informatik
j
j
8
Analyse nur Union by rank
invariant Der Pfad zum Repr. x hat Länge höchstens rank[x]
invariant x ist Repr. ⇒ x 's Menge hat Gröÿe mindestens 2rank[x]
Korollar:
nd braucht Zeit
O(log n)
i2
3
i
2
2
j
i
j
i
3
3
j
j
KIT Institut für Theoretische Informatik
9
Analyse nur Pfadkompression
Satz: nd braucht
Beweis: im Buch
Zeit
O(log n)
(amortisiert)
KIT Institut für Theoretische Informatik
10
Analyse Pfadkompression + Union by rank
Satz: m× nd + n× link
brauchen Zeit
O(mαT (m, n))
mit
αT (m, n) = min {i ≥ 1 : A(i, dm/ne) ≥ log n}
und
A(1, j) = 2j
for
j ≥ 1,
A(i, 1) = A(i − 1, 2)
for
i ≥ 2,
and
j ≥ 2.
A(i, j) = A(i − 1, A(i, j − 1))
Beweis:
for
i ≥2
[Tarjan 1975, Seidel Sharir 2005]
A ist die Ackermannfunktion und αT die inverse Ackermannfunktion.
αT (m, n) = ω(1) aber ≤ 5 für alle physikalisch denkbaren n, m.
KIT Institut für Theoretische Informatik
11
Ackermannfunktion Beispiele
A(1, j) = 2j
for
j ≥ 1,
A(i, 1) = A(i − 1, 2)
for
i ≥ 2,
and
j ≥ 2.
A(i, j) = A(i − 1, A(i, j − 1))
A(2, 1) = A(1, 2) =
for
i ≥2
2
2
A(2, 2) = A(1, A(2, 1)) =
A(2, 3) = A(1, A(2, 2)) =
A(2, 4) = A(1, A(2, 3)) =
2
22
2
2
22
22
2
22
22
A(3, 1) = A(2, 2) =
2
A(3, 2) = A(2, A(3, 1)) = A(2, 16) =
???
A(4, 1) = A(3, 2) =
???
KIT Institut für Theoretische Informatik
12
Kruskal mit Union-Find
Sei
V = 1..n
: UnionFind(n)
// encodes components of forest T
foreach (u, v ) ∈ E in ascending order of weight do
// sort
if Tc.nd(u) 6= Tc.nd(v ) then
Tc
{u, v }
Tc.union(u, v )
output
Zeit
O(m log m).
//
link
reicht auch
Schneller für ganzzahlige Gewichte.
Graphrepräsentation: Kantenliste
Bäume im MSF
↔
Blöcke in Partition
→
Wurzelbäume,
aber mit anderer Struktur als die Bäume im MSF!
KIT Institut für Theoretische Informatik
13
Beispiel
7 2
9
2
3
6
3
4
4
7 2
9
2
3
6
3
4
4
7 2
9
2
3
6
3
4
4
7 2
9
2
3
6
3
4
4
1 2 3 4
1 2 3 4
1 2 3 4
1 2 3 4
0 0 0 1
1 0 0 1
1 0 0 2
1 0 0 2
1
link
1
link
1
link
1
compress
KIT Institut für Theoretische Informatik
14
Vergleich Jarník-Prim ↔ Kruskal
Pro Jarník-Prim
I Asymptotisch gut für alle
I Sehr schnell für
m, n
mn
Pro Kruskal
I Gut für
m = O(n)
I Braucht nur Kantenliste
I Protiert von schnellen Sortierern (ganzzahlig, parallel,. . . )
I Verfeinerungen auch gut für groÿe
m/n
KIT Institut für Theoretische Informatik
15
Mehr MST-Algorithmen
I Zeit
O(m log n)
[Boruvka 1926]
Zutat vieler fortgeschrittener Algorithmen
I Erwartete Zeit
O(m)
[Karger Klein Tarjan 1995],
parallelisierbar, externalisierbar
I Det. Zeit
O(mαT (m, n))
I optimaler det. Algorithmus
[Chazelle 2000]
[Pettie, Ramachandran 2000]
I Invented at ITI:
Praktikabler externer Algorithmus
[Sanders Schultes Sibeyn 2004]
Verbesserung von Kruskal (parallelisierbar, weniger Sortieraufwand).
[Osipov Sanders Singler 2009]
KIT Institut für Theoretische Informatik
16
Zusammenfassung
I Schnitt- und Kreiseigenschaft als Basis für abstrakte Algorithmen.
Entwurfsprinzip: benutze abstrakte Problemeigenschaften.
I Beweise mittels Austauschargumenten
I Implementierung braucht eziente Datenstrukturen.
Auch ein Entwurfsprinzip. . .
KIT Institut für Theoretische Informatik
17
Zusammenfassung
I Schnitt- und Kreiseigenschaft als Basis für abstrakte Algorithmen.
Entwurfsprinzip: benutze abstrakte Problemeigenschaften.
I Beweise mittels Austauschargumenten
I Implementierung braucht eziente Datenstrukturen.
Auch ein Entwurfsprinzip. . .
I Dijkstra
≈
JP.
Noch ein Entwurfsprinzip:
Greedy-Algorithmus ezient implementiert mittels Prioritätsliste
I Union-Find: eziente Verwaltung von Partitionen mittels
Pfadkompression und Union-by-rank.
Beispiel für einfache Algorithmen mit nichttrivialer Analyse
KIT Institut für Theoretische Informatik
17
Kap. 12: Generische Optimierungsansätze
I Black-Box-Löser
I Greedy
I Dynamische
Programmierung
I Systematische Suche
I Lokale Suche
I Evolutionäre Algorithmen
KIT Institut für Theoretische Informatik
18
Durchgehendes Beispiel: Rucksackproblem
M
20
15
10
I
n
Gegenstände mit Gewicht
I Wähle eine Teilmenge
dass
∑i∈x wi ≤ M
x
wi ∈ N
20
und Prot
5
4
3
2
1
pi
von Gegenständen derart,
und
I maximiere den Prot
∑i∈x pi
KIT Institut für Theoretische Informatik
19
Allgemein: Maximierungsproblem (L , f )
I
L ⊆U:
I
f :L →R
I
x∗ ∈ L
zulässige Lösungen
Zielfunktion
ist optimale Lösung falls
f (x∗ ) ≥ f (x)
für alle
x∈L
Minimierungsprobleme: analog
Problem: variantenreich, meist NP-schwer
KIT Institut für Theoretische Informatik
20
Black-Box-Löser
I (Ganzzahlige) Lineare Programmierung
I Aussagenlogik
I Constraint-Programming
≈
Verallgemeinerung von beidem
KIT Institut für Theoretische Informatik
21
Lineare Programmierung
Ein lineares Programm mit
n
Variablen und
m
Constraints (NB) wird
durch das folgende Minimierungs-/Maximierungsproblem deniert:
I Kostenfunktion
c
I
m
f (x) = c · x
ist der Kostenvektor
Constraints der Form
ai · x ./i bi
mit
./i ∈ {≤, ≥, =}, ai ∈ Rn .
Wir erhalten:
L = {x ∈ Rn : ∀j ∈ 1..n : xj ≥ 0 ∧ ∀i ∈ 1..m : ai · x ./i bi } .
KIT Institut für Theoretische Informatik
22
Ein einfaches Beispiel
y
feasible solutions
y<=6
v
x+y<=8
2x−y<=8
o
better
solutions
x
KIT Institut für Theoretische Informatik
23
Beispiel: Kürzeste Wege
maximiere
∑ dv
v ∈V
so dass
ds = 0
dw ≤ dv + c(v , w )
für alle
(v , w ) ∈ E
KIT Institut für Theoretische Informatik
24
Eine Anwendung Tierfutter
I
n
Futtersorten,
Sorte
I
m
i
kostet
ci
Euro/kg.
Anforderungen an gesunde
Ernährung (Kalorien, Proteine,
Vitamin C,. . . ).
Sorte
i
enthält
aji
Prozent des
täglichen Bedarfs pro kg bzgl.
Anforderung
I Sei
aji
Vektor
die
aj .
i -te
j
Komponente von
KIT Institut für Theoretische Informatik
25
Eine Anwendung Tierfutter
I
n
Futtersorten,
Sorte
I
m
i
kostet
ci
Euro/kg.
Anforderungen an gesunde
Ernährung (Kalorien, Proteine,
Vitamin C,. . . ).
Sorte
i
enthält
aji
Prozent des
täglichen Bedarfs pro kg bzgl.
Anforderung
I Sei
aji
Vektor
die
aj .
j
i -te
Komponente von
I Deniere xi als
zu beschaende Menge von Sorte
i
I LP-Lösung gibt eine kostenoptimale
gesunde Mischung.
KIT Institut für Theoretische Informatik
25
Verfeinerungen
I Obere Schranken (Radioaktivität, Cadmium, Kuhhirn, . . . )
I Beschränkte Reserven (z. B. eigenes Heu)
I bestimmte abschnittweise lineare Kostenfunktionen (z. B. mit
Abstand wachsende Transportkosten)
I Minimale Abnahmemengen
I die meisten nichtlinearen Kostenfunktionen
I Ganzzahlige Mengen (für wenige Tiere)
I Garbage in, Garbage out
KIT Institut für Theoretische Informatik
26
Algorithmen und Implementierungen
I LPs lassen sich in polynomieller Zeit lösen [Khachiyan 1979]
I Worst case
7
O max(m, n) 2
I In der Praxis geht das viel schneller
I Robuste, eziente Implementierungen sind sehr aufwändig
Fertige freie und kommerzielle Pakete
KIT Institut für Theoretische Informatik
27
Ganzzahlige Lineare Programmierung
ILP: Integer Linear Program, lineares Programm mit der
x i ∈ N.
xi ∈ {0, 1}
zusätzlichen Bedingung
oft: 0/1 ILP mit
MILP: Mixed Integer Linear Program, lineares Programm bei
dem einige Variablen ganzzahlig sein müssen.
Lineare Relaxation: Entferne die Ganzzahligkeitsbedingungen eines
(M)ILP
KIT Institut für Theoretische Informatik
28
Beispiel: Rucksackproblem
maximiere
derart, dass
xi = 1
w · x ≤ M, xi ∈ {0, 1}
gdw. Gegenstand
i
p·x
for 1
≤i ≤n .
in den Rucksack kommt.
0/1 Variablen sind typisch für ILPs
M
20
10
15
20
5
4
3
2
1
KIT Institut für Theoretische Informatik
29
Umgang mit (M)ILPs
−
NP-schwer
+
Ausdrucksstarke Modellierungssprache
+
Es gibt generische Lösungsansätze, die manchmal gut
funktionieren
+
Viele Möglichkeiten für Näherungslösungen
+
Die Lösung der linearen Relaxation hilft oft, z. B. einfach runden.
+
Ausgefeilte Softwarepakete
Beispiel: Beim Rucksackproblem gibt es nur eine fraktionale Variable in
der linearen Relaxation Abrunden ergibt zulässige Lösung. Annähernd
optimal, falls Gewichte und Prote
Kapazität
KIT Institut für Theoretische Informatik
30
Herunterladen